@plusscommunities/pluss-maintenance-aws 2.1.38 → 2.1.40-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,291 +10,289 @@ const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuer
10
10
  const { values } = require("../../values.config");
11
11
 
12
12
  class SeeStuffStrategy extends IntegrationStrategy {
13
- constructor(config) {
14
- super();
15
- this.baseUrl = config.BaseUrl; // base URL for the API
16
- this.apiKeyHeader = config.APIKeyHeader; // header to use for API key
17
- this.apiKey = config.APIKey; // API key
18
-
19
- const url = new URL(this.baseUrl);
20
- this.host = url.host;
21
-
22
- this.siteMap = config.SiteMap ?? {};
23
- }
24
-
25
- /**
26
- * Gets the entity type for the integration
27
- *
28
- * @returns {String} The entity type for the integration
29
- */
30
- getEntityType = () => {
31
- return `${values.serviceKey}_SeeStuff`;
32
- };
33
-
34
- /**
35
- * Validates the integration
36
- *
37
- * @returns {Boolean} Whether the integration is valid
38
- */
39
- isValidIntegration = () => {
40
- return true;
41
- };
42
-
43
- /**
44
- * Gets the refresh interval for the SeeStuff system
45
- *
46
- * @returns {Number} The refresh interval in milliseconds
47
- */
48
- getRefreshInterval = () => {
49
- return Number.MAX_SAFE_INTEGER; // should never refresh
50
- };
51
-
52
- /**
53
- * Creates a request in the SeeStuff system
54
- *
55
- * @param {Object} request - Request definition on Pluss
56
- * @param {Object} mockResponse - Mock response from SeeStuff to simulate response
57
- * @returns {Boolean} Whether the request was created on SeeStuff
58
- */
59
- createRequest = async (request, mockResponse = null) => {
60
- const logId = log("SeeStuff:CreateRequest", "Start", request);
61
-
62
- try {
63
- // Get user details for room/address and CRMID
64
- let userRoom = request.room || "";
65
- let crmResidentId = "";
66
-
67
- // Map site to location code if available
68
- const location = this.siteMap[request.site];
69
- if (!location) {
70
- log("SeeStuff:CreateRequest", "LocationNotFound", request.site, logId);
71
- return false;
72
- }
73
-
74
- if (request.userID) {
75
- try {
76
- // Look up user from users table
77
- const user = await getRef("users", "Id", request.userID);
78
- log("SeeStuff:CreateRequest", "User", user, logId);
79
-
80
- if (user) {
81
- // Get user's address/room
82
- if (user.unit) {
83
- userRoom = user.unit;
84
- }
85
-
86
- // Get CRMID from user fields
87
- try {
88
- const crmIdField = await getRef(
89
- "userfields",
90
- "RowId",
91
- getRowId(request.userID, "CRMID")
92
- );
93
- if (crmIdField && crmIdField.Value) {
94
- crmResidentId = crmIdField.Value;
95
- }
96
- log("SeeStuff:CreateRequest", "CRMID", crmResidentId, logId);
97
- } catch (fieldError) {
98
- log(
99
- "SeeStuff:CreateRequest",
100
- "CRMIDLookupError",
101
- fieldError,
102
- logId
103
- );
104
- }
105
- }
106
- } catch (userError) {
107
- log("SeeStuff:CreateRequest", "UserLookupError", userError, logId);
108
- }
109
- }
110
-
111
- if (_.isEmpty(crmResidentId)) {
112
- // log an issue in the history
113
- throw new Error("NoCRMResidentId");
114
- }
115
-
116
- // Format description similar to Archibus
117
- const description = `${request.title}${
118
- _.isEmpty(request.description) ? "" : `\n\n${request.description}`
119
- }${_.isEmpty(request.room) ? "" : `\n\nLocation: ${request.room}`}${
120
- _.isEmpty(request.userName) ? "" : `\n\nName: ${request.userName}`
121
- }${_.isEmpty(request.phone) ? "" : `\n\nPhone: ${request.phone}`}${
122
- _.isEmpty(request.type) ? "" : `\n\nJob Type: ${request.type}`
123
- }${
124
- _.isEmpty(request.images)
125
- ? ""
126
- : `\n\nImages: ${request.images.join("\n")}`
127
- }`;
128
-
129
- // Format date_reported
130
- const dateReported = moment().format("YYYY-MM-DD HH:mm:ss");
131
-
132
- // Build payload
133
- const data = {
134
- externalId: request.id,
135
- description: description,
136
- priority: "P3",
137
- location: location,
138
- room: userRoom,
139
- date_reported: dateReported,
140
- crmResidentId: crmResidentId,
141
- };
142
-
143
- log("SeeStuff:CreateRequest", "Request", data, logId);
144
-
145
- const response =
146
- mockResponse ??
147
- (await axios({
148
- method: "POST",
149
- url: `${this.baseUrl}/assetmgmt/servicerequests`,
150
- timeout: 30000,
151
- headers: {
152
- [this.apiKeyHeader]: this.apiKey,
153
- "Content-Type": "application/json",
154
- Host: this.host,
155
- },
156
- data,
157
- }));
158
-
159
- log("SeeStuff:CreateRequest", "Response", response.data, logId);
160
-
161
- return true;
162
- } catch (e) {
163
- log("SeeStuff:CreateRequest", "Error", e, logId);
164
-
165
- // Add history entry for failed integration
166
- try {
167
- const failedJob = await getRef(
168
- values.tableNameMaintenance,
169
- "id",
170
- request.id
171
- );
172
- if (!failedJob.history) failedJob.history = [];
173
- failedJob.history.push({
174
- timestamp: moment.utc().valueOf(),
175
- EntryType: "ExternalIDSetFailed",
176
- user: {
177
- displayName: "SeeStuff Integration",
178
- id: "system",
179
- },
180
- systemType: "SeeStuff",
181
- error: e.message === "NoCRMResidentId" ? "No CRM ID found" : null,
182
- });
183
-
184
- await editRef(values.tableNameMaintenance, "id", request.id, {
185
- history: failedJob.history,
186
- });
187
- } catch (historyError) {
188
- log("SeeStuff:CreateRequest", "HistoryError", historyError, logId);
189
- }
190
- }
191
- return false;
192
- };
193
-
194
- /**
195
- * Fetches a request from the SeeStuff system
196
- * Not implemented yet
197
- *
198
- * @param {String} externalId - Id of the request on SeeStuff
199
- * @returns {Object} The request as it exists on SeeStuff
200
- */
201
- getRequest = async (externalId) => {
202
- return null;
203
- };
204
-
205
- /**
206
- * Refreshes a request from the SeeStuff system
207
- * Not implemented yet
208
- *
209
- * @param {String} requestId - Id of the request on Pluss
210
- * @param {String} externalId - Id of the request on SeeStuff
211
- * @param {Object} trackedData - The set of fields tracked
212
- * @returns {Boolean} Whether the request had any changes on SeeStuff
213
- */
214
- refreshFromSource = async (requestId, externalId, trackedData) => {
215
- return false;
216
- };
217
-
218
- /**
219
- * Get SeeStuff Id of the request
220
- * Queries externalentities table to find the external ID
221
- *
222
- * @param {Object} request - Request definition on Pluss
223
- * @returns {String} Id of the request on SeeStuff
224
- */
225
- getExternalId = async (request) => {
226
- const logId = log("SeeStuff:GetExternalId", "Start", { Id: request.id });
227
-
228
- // get external id
229
- const externalEntityQuery = await indexQuery("externalentities", {
230
- IndexName: "InternalIdIndex",
231
- KeyConditionExpression:
232
- "EntityType = :entityType AND InternalId = :internalId",
233
- ExpressionAttributeValues: {
234
- ":entityType": this.getEntityType(),
235
- ":internalId": request.id,
236
- },
237
- });
238
-
239
- log(
240
- "SeeStuff:GetExternalId",
241
- "ExternalLength",
242
- externalEntityQuery.Items.length,
243
- logId
244
- );
245
- if (_.isEmpty(externalEntityQuery.Items)) {
246
- return null;
247
- }
248
-
249
- const externalId = externalEntityQuery.Items[0].ExternalId;
250
- log("SeeStuff:GetExternalId", "ExternalId", externalId, logId);
251
-
252
- return externalId;
253
- };
254
-
255
- /**
256
- * Perform actions when a task's status has changed
257
- * Not implemented yet
258
- *
259
- * @param {Object} request - Request definition on Pluss
260
- * @returns {Boolean} Represents whether the actions were successful
261
- */
262
- onStatusChanged = async (request) => {
263
- return true;
264
- };
265
-
266
- /**
267
- * Perform actions when a comment has been added to a task
268
- * Not implemented yet
269
- *
270
- * @param {Object} request - Request definition on Pluss
271
- * @returns {Boolean} Represents whether the actions were successful
272
- */
273
- onCommentAdded = async (request) => {
274
- return true;
275
- };
276
-
277
- /**
278
- * Perform actions when a note has been added to a task
279
- * Not implemented yet
280
- *
281
- * @param {Object} request - Request definition on Pluss
282
- * @returns {Boolean} Represents whether the actions were successful
283
- */
284
- onNotesAdded = async (request) => {
285
- return true;
286
- };
287
-
288
- /**
289
- * Perform completion actions when a task is completed
290
- * Not implemented yet
291
- *
292
- * @param {Object} request - Request definition on Pluss
293
- * @returns {Boolean} Represents whether the actions were successful
294
- */
295
- onCompleteRequest = async (request) => {
296
- return true;
297
- };
13
+ constructor(config) {
14
+ super();
15
+ this.baseUrl = config.BaseUrl; // base URL for the API
16
+ this.apiKeyHeader = config.APIKeyHeader; // header to use for API key
17
+ this.apiKey = config.APIKey; // API key
18
+
19
+ const url = new URL(this.baseUrl);
20
+ this.host = url.host;
21
+
22
+ this.siteMap = config.SiteMap ?? {};
23
+ }
24
+
25
+ /**
26
+ * Gets the entity type for the integration
27
+ *
28
+ * @returns {String} The entity type for the integration
29
+ */
30
+ getEntityType = () => {
31
+ return `${values.serviceKey}_SeeStuff`;
32
+ };
33
+
34
+ /**
35
+ * Validates the integration
36
+ *
37
+ * @returns {Boolean} Whether the integration is valid
38
+ */
39
+ isValidIntegration = () => {
40
+ return true;
41
+ };
42
+
43
+ /**
44
+ * Gets the refresh interval for the SeeStuff system
45
+ *
46
+ * @returns {Number} The refresh interval in milliseconds
47
+ */
48
+ getRefreshInterval = () => {
49
+ return Number.MAX_SAFE_INTEGER; // should never refresh
50
+ };
51
+
52
+ /**
53
+ * Creates a request in the SeeStuff system
54
+ *
55
+ * @param {Object} request - Request definition on Pluss
56
+ * @param {Object} mockResponse - Mock response from SeeStuff to simulate response
57
+ * @returns {Boolean} Whether the request was created on SeeStuff
58
+ */
59
+ createRequest = async (request, mockResponse = null) => {
60
+ const logId = log("SeeStuff:CreateRequest", "Start", request);
61
+
62
+ try {
63
+ // Get user details for room/address and CRMID
64
+ let userRoom = request.room || "";
65
+ let crmResidentId = "";
66
+
67
+ // Map site to location code if available
68
+ const location = this.siteMap[request.site];
69
+ if (!location) {
70
+ log("SeeStuff:CreateRequest", "LocationNotFound", request.site, logId);
71
+ return false;
72
+ }
73
+
74
+ if (request.userID) {
75
+ try {
76
+ // Look up user from users table
77
+ const user = await getRef("users", "Id", request.userID);
78
+ log("SeeStuff:CreateRequest", "User", user, logId);
79
+
80
+ if (user) {
81
+ // Get user's address/room
82
+ if (user.unit) {
83
+ userRoom = user.unit;
84
+ }
85
+
86
+ // Get CRMID from user fields
87
+ try {
88
+ const crmIdField = await getRef(
89
+ "userfields",
90
+ "RowId",
91
+ getRowId(request.userID, "CRMID"),
92
+ );
93
+ if (crmIdField && crmIdField.Value) {
94
+ crmResidentId = crmIdField.Value;
95
+ }
96
+ log("SeeStuff:CreateRequest", "CRMID", crmResidentId, logId);
97
+ } catch (fieldError) {
98
+ log(
99
+ "SeeStuff:CreateRequest",
100
+ "CRMIDLookupError",
101
+ fieldError,
102
+ logId,
103
+ );
104
+ }
105
+ }
106
+ } catch (userError) {
107
+ log("SeeStuff:CreateRequest", "UserLookupError", userError, logId);
108
+ }
109
+ }
110
+
111
+ if (_.isEmpty(crmResidentId)) {
112
+ // log an issue in the history
113
+ throw new Error("NoCRMResidentId");
114
+ }
115
+
116
+ // Format description similar to Archibus
117
+ const description = `${request.title}${
118
+ _.isEmpty(request.description) ? "" : `\n\n${request.description}`
119
+ }${_.isEmpty(request.room) ? "" : `\n\nLocation: ${request.room}`}${
120
+ _.isEmpty(request.userName) ? "" : `\n\nJob Type: ${request.type}`
121
+ }${
122
+ _.isEmpty(request.images)
123
+ ? ""
124
+ : `\n\nImages: ${request.images.join("\n")}`
125
+ }`;
126
+
127
+ // Format date_reported
128
+ const dateReported = moment().format("YYYY-MM-DD HH:mm:ss");
129
+
130
+ // Build payload
131
+ const data = {
132
+ externalId: request.id,
133
+ description: description,
134
+ priority: "P3",
135
+ location: location,
136
+ room: userRoom,
137
+ date_reported: dateReported,
138
+ crmResidentId: crmResidentId,
139
+ };
140
+
141
+ log("SeeStuff:CreateRequest", "Request", data, logId);
142
+
143
+ const response =
144
+ mockResponse ??
145
+ (await axios({
146
+ method: "POST",
147
+ url: `${this.baseUrl}/assetmgmt/servicerequests`,
148
+ timeout: 30000,
149
+ headers: {
150
+ [this.apiKeyHeader]: this.apiKey,
151
+ "Content-Type": "application/json",
152
+ Host: this.host,
153
+ },
154
+ data,
155
+ }));
156
+
157
+ log("SeeStuff:CreateRequest", "Response", response.data, logId);
158
+
159
+ return true;
160
+ } catch (e) {
161
+ log("SeeStuff:CreateRequest", "Error", e, logId);
162
+
163
+ // Add history entry for failed integration
164
+ try {
165
+ const failedJob = await getRef(
166
+ values.tableNameMaintenance,
167
+ "id",
168
+ request.id,
169
+ );
170
+ if (!failedJob.history) failedJob.history = [];
171
+ failedJob.history.push({
172
+ timestamp: moment.utc().valueOf(),
173
+ EntryType: "ExternalIDSetFailed",
174
+ user: {
175
+ displayName: "SeeStuff Integration",
176
+ id: "system",
177
+ },
178
+ systemType: "SeeStuff",
179
+ error: e.message === "NoCRMResidentId" ? "No CRM ID found" : null,
180
+ });
181
+
182
+ await editRef(values.tableNameMaintenance, "id", request.id, {
183
+ history: failedJob.history,
184
+ });
185
+ } catch (historyError) {
186
+ log("SeeStuff:CreateRequest", "HistoryError", historyError, logId);
187
+ }
188
+ }
189
+ return false;
190
+ };
191
+
192
+ /**
193
+ * Fetches a request from the SeeStuff system
194
+ * Not implemented yet
195
+ *
196
+ * @param {String} externalId - Id of the request on SeeStuff
197
+ * @returns {Object} The request as it exists on SeeStuff
198
+ */
199
+ getRequest = async (externalId) => {
200
+ return null;
201
+ };
202
+
203
+ /**
204
+ * Refreshes a request from the SeeStuff system
205
+ * Not implemented yet
206
+ *
207
+ * @param {String} requestId - Id of the request on Pluss
208
+ * @param {String} externalId - Id of the request on SeeStuff
209
+ * @param {Object} trackedData - The set of fields tracked
210
+ * @returns {Boolean} Whether the request had any changes on SeeStuff
211
+ */
212
+ refreshFromSource = async (requestId, externalId, trackedData) => {
213
+ return false;
214
+ };
215
+
216
+ /**
217
+ * Get SeeStuff Id of the request
218
+ * Queries externalentities table to find the external ID
219
+ *
220
+ * @param {Object} request - Request definition on Pluss
221
+ * @returns {String} Id of the request on SeeStuff
222
+ */
223
+ getExternalId = async (request) => {
224
+ const logId = log("SeeStuff:GetExternalId", "Start", { Id: request.id });
225
+
226
+ // get external id
227
+ const externalEntityQuery = await indexQuery("externalentities", {
228
+ IndexName: "InternalIdIndex",
229
+ KeyConditionExpression:
230
+ "EntityType = :entityType AND InternalId = :internalId",
231
+ ExpressionAttributeValues: {
232
+ ":entityType": this.getEntityType(),
233
+ ":internalId": request.id,
234
+ },
235
+ });
236
+
237
+ log(
238
+ "SeeStuff:GetExternalId",
239
+ "ExternalLength",
240
+ externalEntityQuery.Items.length,
241
+ logId,
242
+ );
243
+ if (_.isEmpty(externalEntityQuery.Items)) {
244
+ return null;
245
+ }
246
+
247
+ const externalId = externalEntityQuery.Items[0].ExternalId;
248
+ log("SeeStuff:GetExternalId", "ExternalId", externalId, logId);
249
+
250
+ return externalId;
251
+ };
252
+
253
+ /**
254
+ * Perform actions when a task's status has changed
255
+ * Not implemented yet
256
+ *
257
+ * @param {Object} request - Request definition on Pluss
258
+ * @returns {Boolean} Represents whether the actions were successful
259
+ */
260
+ onStatusChanged = async (request) => {
261
+ return true;
262
+ };
263
+
264
+ /**
265
+ * Perform actions when a comment has been added to a task
266
+ * Not implemented yet
267
+ *
268
+ * @param {Object} request - Request definition on Pluss
269
+ * @returns {Boolean} Represents whether the actions were successful
270
+ */
271
+ onCommentAdded = async (request) => {
272
+ return true;
273
+ };
274
+
275
+ /**
276
+ * Perform actions when a note has been added to a task
277
+ * Not implemented yet
278
+ *
279
+ * @param {Object} request - Request definition on Pluss
280
+ * @returns {Boolean} Represents whether the actions were successful
281
+ */
282
+ onNotesAdded = async (request) => {
283
+ return true;
284
+ };
285
+
286
+ /**
287
+ * Perform completion actions when a task is completed
288
+ * Not implemented yet
289
+ *
290
+ * @param {Object} request - Request definition on Pluss
291
+ * @returns {Boolean} Represents whether the actions were successful
292
+ */
293
+ onCompleteRequest = async (request) => {
294
+ return true;
295
+ };
298
296
  }
299
297
 
300
298
  module.exports = SeeStuffStrategy;
package/package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-aws",
3
- "version": "2.1.38",
3
+ "version": "2.1.40-beta.0",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
@@ -154,19 +154,19 @@
154
154
  "dev": true
155
155
  },
156
156
  "@babel/helpers": {
157
- "version": "7.28.6",
158
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
159
- "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
157
+ "version": "7.29.2",
158
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
159
+ "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
160
160
  "dev": true,
161
161
  "requires": {
162
162
  "@babel/template": "^7.28.6",
163
- "@babel/types": "^7.28.6"
163
+ "@babel/types": "^7.29.0"
164
164
  }
165
165
  },
166
166
  "@babel/parser": {
167
- "version": "7.29.0",
168
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
169
- "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
167
+ "version": "7.29.2",
168
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
169
+ "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
170
170
  "dev": true,
171
171
  "requires": {
172
172
  "@babel/types": "^7.29.0"
@@ -1068,9 +1068,9 @@
1068
1068
  }
1069
1069
  },
1070
1070
  "@types/node": {
1071
- "version": "25.3.3",
1072
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz",
1073
- "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==",
1071
+ "version": "25.5.0",
1072
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
1073
+ "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
1074
1074
  "dev": true,
1075
1075
  "requires": {
1076
1076
  "undici-types": "~7.18.0"
@@ -1128,16 +1128,6 @@
1128
1128
  "debug": "4"
1129
1129
  }
1130
1130
  },
1131
- "ajv": {
1132
- "version": "4.11.8",
1133
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
1134
- "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
1135
- "dev": true,
1136
- "requires": {
1137
- "co": "^4.6.0",
1138
- "json-stable-stringify": "^1.0.1"
1139
- }
1140
- },
1141
1131
  "ajv-keywords": {
1142
1132
  "version": "1.5.1",
1143
1133
  "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
@@ -1257,9 +1247,9 @@
1257
1247
  }
1258
1248
  },
1259
1249
  "aws-sdk": {
1260
- "version": "2.1693.0",
1261
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1693.0.tgz",
1262
- "integrity": "sha512-cJmb8xEnVLT+R6fBS5sn/EFJiX7tUnDaPtOPZ1vFbOJtd0fnZn/Ky2XGgsvvoeliWeH7mL3TWSX5zXXGSQV6gQ==",
1250
+ "version": "2.1665.0",
1251
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1665.0.tgz",
1252
+ "integrity": "sha512-IhEcdGmiplF3l/pCROxEYIdi0s+LZ2VkbMAq3RgoXTHxY5cgqVRNaqsEsgIHev2Clxa9V08HttnIERTIUqb1+Q==",
1263
1253
  "requires": {
1264
1254
  "buffer": "4.9.2",
1265
1255
  "events": "1.1.1",
@@ -1296,12 +1286,12 @@
1296
1286
  }
1297
1287
  },
1298
1288
  "axios": {
1299
- "version": "1.13.6",
1300
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
1301
- "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
1289
+ "version": "1.7.2",
1290
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
1291
+ "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
1302
1292
  "requires": {
1303
- "follow-redirects": "^1.15.11",
1304
- "form-data": "^4.0.5",
1293
+ "follow-redirects": "^1.15.6",
1294
+ "form-data": "^4.0.0",
1305
1295
  "proxy-from-env": "^1.1.0"
1306
1296
  }
1307
1297
  },
@@ -1494,12 +1484,6 @@
1494
1484
  "requires": {
1495
1485
  "ms": "2.0.0"
1496
1486
  }
1497
- },
1498
- "ms": {
1499
- "version": "2.0.0",
1500
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1501
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1502
- "dev": true
1503
1487
  }
1504
1488
  }
1505
1489
  },
@@ -1543,9 +1527,9 @@
1543
1527
  "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="
1544
1528
  },
1545
1529
  "baseline-browser-mapping": {
1546
- "version": "2.10.0",
1547
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
1548
- "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
1530
+ "version": "2.10.10",
1531
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz",
1532
+ "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==",
1549
1533
  "dev": true
1550
1534
  },
1551
1535
  "bluebird": {
@@ -1681,9 +1665,9 @@
1681
1665
  "dev": true
1682
1666
  },
1683
1667
  "caniuse-lite": {
1684
- "version": "1.0.30001776",
1685
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001776.tgz",
1686
- "integrity": "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==",
1668
+ "version": "1.0.30001781",
1669
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz",
1670
+ "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==",
1687
1671
  "dev": true
1688
1672
  },
1689
1673
  "chalk": {
@@ -1831,6 +1815,38 @@
1831
1815
  "inherits": "^2.0.3",
1832
1816
  "readable-stream": "^2.2.2",
1833
1817
  "typedarray": "^0.0.6"
1818
+ },
1819
+ "dependencies": {
1820
+ "readable-stream": {
1821
+ "version": "2.3.8",
1822
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
1823
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
1824
+ "dev": true,
1825
+ "requires": {
1826
+ "core-util-is": "~1.0.0",
1827
+ "inherits": "~2.0.3",
1828
+ "isarray": "~1.0.0",
1829
+ "process-nextick-args": "~2.0.0",
1830
+ "safe-buffer": "~5.1.1",
1831
+ "string_decoder": "~1.1.1",
1832
+ "util-deprecate": "~1.0.1"
1833
+ }
1834
+ },
1835
+ "safe-buffer": {
1836
+ "version": "5.1.2",
1837
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1838
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1839
+ "dev": true
1840
+ },
1841
+ "string_decoder": {
1842
+ "version": "1.1.1",
1843
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1844
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1845
+ "dev": true,
1846
+ "requires": {
1847
+ "safe-buffer": "~5.1.0"
1848
+ }
1849
+ }
1834
1850
  }
1835
1851
  },
1836
1852
  "contains-path": {
@@ -1963,16 +1979,23 @@
1963
1979
  }
1964
1980
  },
1965
1981
  "dayjs": {
1966
- "version": "1.11.19",
1967
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
1968
- "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="
1982
+ "version": "1.11.20",
1983
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz",
1984
+ "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ=="
1969
1985
  },
1970
1986
  "debug": {
1971
- "version": "4.4.3",
1972
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1973
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1987
+ "version": "4.3.6",
1988
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
1989
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
1974
1990
  "requires": {
1975
- "ms": "^2.1.3"
1991
+ "ms": "2.1.2"
1992
+ },
1993
+ "dependencies": {
1994
+ "ms": {
1995
+ "version": "2.1.2",
1996
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1997
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1998
+ }
1976
1999
  }
1977
2000
  },
1978
2001
  "dedent": {
@@ -2059,9 +2082,9 @@
2059
2082
  }
2060
2083
  },
2061
2084
  "electron-to-chromium": {
2062
- "version": "1.5.307",
2063
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz",
2064
- "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==",
2085
+ "version": "1.5.322",
2086
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.322.tgz",
2087
+ "integrity": "sha512-vFU34OcrvMcH66T+dYC3G4nURmgfDVewMIu6Q2urXpumAPSMmzvcn04KVVV8Opikq8Vs5nUbO/8laNhNRqSzYw==",
2065
2088
  "dev": true
2066
2089
  },
2067
2090
  "emittery": {
@@ -2076,11 +2099,6 @@
2076
2099
  "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2077
2100
  "dev": true
2078
2101
  },
2079
- "err-code": {
2080
- "version": "2.0.3",
2081
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
2082
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="
2083
- },
2084
2102
  "error-ex": {
2085
2103
  "version": "1.3.4",
2086
2104
  "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
@@ -2374,12 +2392,6 @@
2374
2392
  "ms": "2.0.0"
2375
2393
  }
2376
2394
  },
2377
- "ms": {
2378
- "version": "2.0.0",
2379
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2380
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
2381
- "dev": true
2382
- },
2383
2395
  "supports-color": {
2384
2396
  "version": "2.0.0",
2385
2397
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -2421,12 +2433,6 @@
2421
2433
  "requires": {
2422
2434
  "ms": "2.0.0"
2423
2435
  }
2424
- },
2425
- "ms": {
2426
- "version": "2.0.0",
2427
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2428
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
2429
- "dev": true
2430
2436
  }
2431
2437
  }
2432
2438
  },
@@ -2481,12 +2487,6 @@
2481
2487
  "esutils": "^2.0.2",
2482
2488
  "isarray": "^1.0.0"
2483
2489
  }
2484
- },
2485
- "ms": {
2486
- "version": "2.0.0",
2487
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2488
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
2489
- "dev": true
2490
2490
  }
2491
2491
  }
2492
2492
  },
@@ -2677,13 +2677,12 @@
2677
2677
  }
2678
2678
  },
2679
2679
  "expo-server-sdk": {
2680
- "version": "3.15.0",
2681
- "resolved": "https://registry.npmjs.org/expo-server-sdk/-/expo-server-sdk-3.15.0.tgz",
2682
- "integrity": "sha512-Y71mQ7yeDhq6miHzn4kwRQOjqvBBsWeFXvyS9PYc6uqO/+UiYvrw3vMQiQqRxg2y0qgn9jMsvjf8T+mukSH85A==",
2680
+ "version": "3.6.0",
2681
+ "resolved": "https://registry.npmjs.org/expo-server-sdk/-/expo-server-sdk-3.6.0.tgz",
2682
+ "integrity": "sha512-GyA0BTcFBKk/5gTEO4WOScP9hEttR+GitrcOIl7XwXwE1FHFvbluKiUc9yEjsfEYMgyd78+XhSpGVGQnutGOdA==",
2683
2683
  "requires": {
2684
2684
  "node-fetch": "^2.6.0",
2685
- "promise-limit": "^2.7.0",
2686
- "promise-retry": "^2.0.1"
2685
+ "promise-limit": "^2.7.0"
2687
2686
  }
2688
2687
  },
2689
2688
  "ext": {
@@ -2848,11 +2847,6 @@
2848
2847
  "is-property": "^1.0.0"
2849
2848
  }
2850
2849
  },
2851
- "generator-function": {
2852
- "version": "2.0.1",
2853
- "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
2854
- "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="
2855
- },
2856
2850
  "gensync": {
2857
2851
  "version": "1.0.0-beta.2",
2858
2852
  "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -3326,15 +3320,11 @@
3326
3320
  "dev": true
3327
3321
  },
3328
3322
  "is-generator-function": {
3329
- "version": "1.1.2",
3330
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
3331
- "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
3323
+ "version": "1.0.10",
3324
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
3325
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
3332
3326
  "requires": {
3333
- "call-bound": "^1.0.4",
3334
- "generator-function": "^2.0.0",
3335
- "get-proto": "^1.0.1",
3336
- "has-tostringtag": "^1.0.2",
3337
- "safe-regex-test": "^1.1.0"
3327
+ "has-tostringtag": "^1.0.0"
3338
3328
  }
3339
3329
  },
3340
3330
  "is-map": {
@@ -3394,6 +3384,7 @@
3394
3384
  "version": "1.2.1",
3395
3385
  "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
3396
3386
  "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
3387
+ "dev": true,
3397
3388
  "requires": {
3398
3389
  "call-bound": "^1.0.2",
3399
3390
  "gopd": "^1.2.0",
@@ -4742,6 +4733,13 @@
4742
4733
  "lodash.once": "^4.0.0",
4743
4734
  "ms": "^2.1.1",
4744
4735
  "semver": "^5.6.0"
4736
+ },
4737
+ "dependencies": {
4738
+ "ms": {
4739
+ "version": "2.1.3",
4740
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
4741
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
4742
+ }
4745
4743
  }
4746
4744
  },
4747
4745
  "jsx-ast-utils": {
@@ -4807,9 +4805,9 @@
4807
4805
  }
4808
4806
  },
4809
4807
  "lodash": {
4810
- "version": "4.17.23",
4811
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
4812
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="
4808
+ "version": "4.17.21",
4809
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
4810
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
4813
4811
  },
4814
4812
  "lodash.assign": {
4815
4813
  "version": "4.2.0",
@@ -5015,9 +5013,10 @@
5015
5013
  }
5016
5014
  },
5017
5015
  "ms": {
5018
- "version": "2.1.3",
5019
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
5020
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
5016
+ "version": "2.0.0",
5017
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
5018
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
5019
+ "dev": true
5021
5020
  },
5022
5021
  "mute-stream": {
5023
5022
  "version": "0.0.5",
@@ -5090,15 +5089,15 @@
5090
5089
  }
5091
5090
  },
5092
5091
  "node-releases": {
5093
- "version": "2.0.27",
5094
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
5095
- "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
5092
+ "version": "2.0.36",
5093
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz",
5094
+ "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==",
5096
5095
  "dev": true
5097
5096
  },
5098
5097
  "nodemailer": {
5099
- "version": "6.10.1",
5100
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz",
5101
- "integrity": "sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA=="
5098
+ "version": "6.9.14",
5099
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz",
5100
+ "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA=="
5102
5101
  },
5103
5102
  "normalize-path": {
5104
5103
  "version": "3.0.0",
@@ -5279,9 +5278,9 @@
5279
5278
  "dev": true
5280
5279
  },
5281
5280
  "picomatch": {
5282
- "version": "2.3.1",
5283
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
5284
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
5281
+ "version": "2.3.2",
5282
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
5283
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
5285
5284
  "dev": true
5286
5285
  },
5287
5286
  "pinkie": {
@@ -5335,9 +5334,9 @@
5335
5334
  "integrity": "sha512-HRCx4+KJE30JhX84wBN4+vja9bNfysxg1y28l0DuJmkoaICiv2ZSilKddbS48pq50P8d2erAhqDLbp47yv3MbQ=="
5336
5335
  },
5337
5336
  "possible-typed-array-names": {
5338
- "version": "1.1.0",
5339
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
5340
- "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="
5337
+ "version": "1.0.0",
5338
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
5339
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q=="
5341
5340
  },
5342
5341
  "prelude-ls": {
5343
5342
  "version": "1.1.2",
@@ -5379,15 +5378,6 @@
5379
5378
  "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz",
5380
5379
  "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="
5381
5380
  },
5382
- "promise-retry": {
5383
- "version": "2.0.1",
5384
- "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
5385
- "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
5386
- "requires": {
5387
- "err-code": "^2.0.2",
5388
- "retry": "^0.12.0"
5389
- }
5390
- },
5391
5381
  "prompts": {
5392
5382
  "version": "2.4.2",
5393
5383
  "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -5453,29 +5443,6 @@
5453
5443
  "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz",
5454
5444
  "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA=="
5455
5445
  },
5456
- "readable-stream": {
5457
- "version": "2.3.8",
5458
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
5459
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
5460
- "dev": true,
5461
- "requires": {
5462
- "core-util-is": "~1.0.0",
5463
- "inherits": "~2.0.3",
5464
- "isarray": "~1.0.0",
5465
- "process-nextick-args": "~2.0.0",
5466
- "safe-buffer": "~5.1.1",
5467
- "string_decoder": "~1.1.1",
5468
- "util-deprecate": "~1.0.1"
5469
- },
5470
- "dependencies": {
5471
- "safe-buffer": {
5472
- "version": "5.1.2",
5473
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
5474
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
5475
- "dev": true
5476
- }
5477
- }
5478
- },
5479
5446
  "readline2": {
5480
5447
  "version": "1.0.1",
5481
5448
  "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
@@ -5603,11 +5570,6 @@
5603
5570
  "onetime": "^1.0.0"
5604
5571
  }
5605
5572
  },
5606
- "retry": {
5607
- "version": "0.12.0",
5608
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
5609
- "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="
5610
- },
5611
5573
  "rimraf": {
5612
5574
  "version": "2.6.3",
5613
5575
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
@@ -5685,6 +5647,7 @@
5685
5647
  "version": "1.1.0",
5686
5648
  "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
5687
5649
  "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
5650
+ "dev": true,
5688
5651
  "requires": {
5689
5652
  "call-bound": "^1.0.2",
5690
5653
  "es-errors": "^1.3.0",
@@ -5769,9 +5732,9 @@
5769
5732
  }
5770
5733
  },
5771
5734
  "serverless-prune-plugin": {
5772
- "version": "1.6.1",
5773
- "resolved": "https://registry.npmjs.org/serverless-prune-plugin/-/serverless-prune-plugin-1.6.1.tgz",
5774
- "integrity": "sha512-rTeaedrVRWFdfXgSsraxcCHpVzL3AqztcYSr7FY3Jc74PJ0/H6Ukf5nFKKYZSolnF3JkU8ddwQGY52YnJIxQqw==",
5735
+ "version": "1.5.1",
5736
+ "resolved": "https://registry.npmjs.org/serverless-prune-plugin/-/serverless-prune-plugin-1.5.1.tgz",
5737
+ "integrity": "sha512-lCxHNQXmGL0GEe7gBGOx1MdafYXAi9RkiuKPE4DDSSdrdbVnn0KLcbriKWGC2MdOpn/vs358MaeBuVSefuzMzA==",
5775
5738
  "dev": true,
5776
5739
  "requires": {
5777
5740
  "bluebird": "^3.4.7"
@@ -6026,23 +5989,6 @@
6026
5989
  "es-object-atoms": "^1.0.0"
6027
5990
  }
6028
5991
  },
6029
- "string_decoder": {
6030
- "version": "1.1.1",
6031
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
6032
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
6033
- "dev": true,
6034
- "requires": {
6035
- "safe-buffer": "~5.1.0"
6036
- },
6037
- "dependencies": {
6038
- "safe-buffer": {
6039
- "version": "5.1.2",
6040
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
6041
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
6042
- "dev": true
6043
- }
6044
- }
6045
- },
6046
5992
  "strip-ansi": {
6047
5993
  "version": "3.0.1",
6048
5994
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -6107,6 +6053,16 @@
6107
6053
  "string-width": "^2.0.0"
6108
6054
  },
6109
6055
  "dependencies": {
6056
+ "ajv": {
6057
+ "version": "4.11.8",
6058
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
6059
+ "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
6060
+ "dev": true,
6061
+ "requires": {
6062
+ "co": "^4.6.0",
6063
+ "json-stable-stringify": "^1.0.1"
6064
+ }
6065
+ },
6110
6066
  "ansi-regex": {
6111
6067
  "version": "3.0.1",
6112
6068
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
@@ -6222,11 +6178,11 @@
6222
6178
  "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
6223
6179
  },
6224
6180
  "twilio": {
6225
- "version": "3.84.1",
6226
- "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.84.1.tgz",
6227
- "integrity": "sha512-Q/xaPoayTj+bgJdnUgpE+EiB/VoNOG+byDFdlDej0FgxiHLgXKliZfVv6boqHPWvC1k7Dt0AK96OBFZ0P55QQg==",
6181
+ "version": "3.66.1",
6182
+ "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.66.1.tgz",
6183
+ "integrity": "sha512-BmIgfx2VuS7tj4IscBhyEj7CdmtfIaaJ1IuNeGoJFYBx5xikpuwkR0Ceo5CNtK5jnN3SCKmxHxToec/MYEXl0A==",
6228
6184
  "requires": {
6229
- "axios": "^0.26.1",
6185
+ "axios": "^0.21.1",
6230
6186
  "dayjs": "^1.8.29",
6231
6187
  "https-proxy-agent": "^5.0.0",
6232
6188
  "jsonwebtoken": "^8.5.1",
@@ -6235,16 +6191,16 @@
6235
6191
  "qs": "^6.9.4",
6236
6192
  "rootpath": "^0.1.2",
6237
6193
  "scmp": "^2.1.0",
6238
- "url-parse": "^1.5.9",
6194
+ "url-parse": "^1.5.0",
6239
6195
  "xmlbuilder": "^13.0.2"
6240
6196
  },
6241
6197
  "dependencies": {
6242
6198
  "axios": {
6243
- "version": "0.26.1",
6244
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
6245
- "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
6199
+ "version": "0.21.4",
6200
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
6201
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
6246
6202
  "requires": {
6247
- "follow-redirects": "^1.14.8"
6203
+ "follow-redirects": "^1.14.0"
6248
6204
  }
6249
6205
  },
6250
6206
  "xmlbuilder": {
@@ -6521,9 +6477,9 @@
6521
6477
  }
6522
6478
  },
6523
6479
  "which-typed-array": {
6524
- "version": "1.1.20",
6525
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
6526
- "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
6480
+ "version": "1.1.19",
6481
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
6482
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
6527
6483
  "requires": {
6528
6484
  "available-typed-arrays": "^1.0.7",
6529
6485
  "call-bind": "^1.0.8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-aws",
3
- "version": "2.1.38",
3
+ "version": "2.1.40-beta.0",
4
4
  "description": "Extension package to enable maintenance on Pluss Communities Platform",
5
5
  "scripts": {
6
6
  "gc": "node ../../tools/gc ./",
@@ -14,9 +14,9 @@
14
14
  "upload:p": "npm run patch && npm run upload",
15
15
  "copy:add": "run(){ ext=${1:-default}; test -f values.config.$ext.js || cp values.config.default.js values.config.$ext.js; }; run",
16
16
  "copy:get": "echo $npm_package_name",
17
- "copy:set": "run(){ target='\\@plusscommunities\\/pluss-maintenance-aws'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f values.config.$ext.js && cp -f values.config.$ext.js values.config.js; sed -i '' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
17
+ "copy:set": "run(){ target='\\@plusscommunities\\/pluss-maintenance-aws'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f values.config.$ext.js && cp -f values.config.$ext.js values.config.js; sed -i'' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
18
18
  "copy:deploy": "for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run deploy; done; npm run copy:set; npm run gs;",
19
- "copy:betaupload": "npm run betapatch; for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;",
19
+ "copy:betaupload": "for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;",
20
20
  "copy:upload": "npm run patch; for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run upload; done; npm run copy:set;",
21
21
  "test": "jest tests -i"
22
22
  },
@@ -93,6 +93,12 @@ module.exports = async (event) => {
93
93
  log("getRequests", "FilteredOnType", jobs.length, logId);
94
94
  }
95
95
 
96
+ // filter on assignee (for users with tracking permission)
97
+ if (qParams.assignee) {
98
+ jobs = jobs.filter((j) => j.AssigneeId === qParams.assignee);
99
+ log("getRequests", "FilteredOnAssigneeFilter", jobs.length, logId);
100
+ }
101
+
96
102
  // filter to assigned jobs
97
103
  if (!authorised && assigneeTracking) {
98
104
  jobs = jobs.filter((j) => j.AssigneeId === userId || j.userID === userId);