btrz-api-client 9.15.0 → 9.17.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.
@@ -7,7 +7,7 @@ const {
7
7
  * @param {Object} deps
8
8
  * @param {import("axios").AxiosInstance} deps.client
9
9
  * @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
10
- * @returns {{ sms: { create: function } }}
10
+ * @returns {{ sms: { create: function, deliveries: { get: function } } }}
11
11
  */
12
12
  function salesforceFactory({
13
13
  client,
@@ -43,6 +43,35 @@ function salesforceFactory({
43
43
  headers
44
44
  })
45
45
  });
46
+ },
47
+ deliveries: {
48
+ /**
49
+ * GET /salesforce/sms/deliveries/{tokenId} - Marketing Cloud delivery status.
50
+ * messageId is resolved server-side from the account Salesforce settings.
51
+ * @param {Object} opts
52
+ * @param {string} [opts.token] - API key
53
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
54
+ * @param {string} opts.tokenId - Marketing Cloud tokenId from the accepted send
55
+ * @param {Object} [opts.headers] - Optional headers
56
+ * @returns {Promise<import("axios").AxiosResponse>}
57
+ */
58
+ get({
59
+ token,
60
+ jwtToken,
61
+ tokenId,
62
+ headers
63
+ }) {
64
+ return client({
65
+ url: `/salesforce/sms/deliveries/${tokenId}`,
66
+ method: "get",
67
+ headers: authorizationHeaders({
68
+ token,
69
+ jwtToken,
70
+ internalAuthTokenProvider,
71
+ headers
72
+ })
73
+ });
74
+ }
46
75
  }
47
76
  }
48
77
  };
@@ -3,7 +3,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3
3
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
- /* eslint-disable max-len */
7
6
  const {
8
7
  authorizationHeaders
9
8
  } = require("./../endpoints_helpers.js");
@@ -80,6 +79,25 @@ const {
80
79
  * @property {boolean} [bypassValidations] - If true, bypass driver validations
81
80
  */
82
81
 
82
+ /**
83
+ * Query params for GET /manifests/item-capacity-over-limit (btrz-api-operations).
84
+ * @typedef {Object} ItemCapacityOverLimitQuery
85
+ * @property {string} itemId - Catalog item id (sourceItemId)
86
+ * @property {number|string} limit - Proposed Manifest Item Capacity Limit (>= 1)
87
+ * @property {number|string} [page] - Page number (>= 1)
88
+ */
89
+
90
+ /**
91
+ * Query params for GET /manifests/item-capacity-used (btrz-api-operations).
92
+ * @typedef {Object} ItemCapacityUsedQuery
93
+ * @property {string} routeId - Route id
94
+ * @property {string} scheduleId - Schedule id (manifest schedule key)
95
+ * @property {string} date - Travel date yyyy-mm-dd
96
+ * @property {string} fromId - Origin station id
97
+ * @property {string} toId - Destination station id
98
+ * @property {string} [itemIds] - Optional comma-separated catalog item ids
99
+ */
100
+
83
101
  /**
84
102
  * Factory for manifests API (btrz-api-operations).
85
103
  * @param {Object} deps
@@ -209,6 +227,62 @@ function manifestFactory({
209
227
  });
210
228
  }
211
229
 
230
+ /**
231
+ * GET /manifests/item-capacity-over-limit - future manifests over a proposed item capacity limit.
232
+ * @param {Object} opts
233
+ * @param {string} [opts.token] - API key
234
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
235
+ * @param {ItemCapacityOverLimitQuery} opts.query - itemId, limit, optional page
236
+ * @param {Object} [opts.headers] - Optional headers
237
+ * @returns {Promise<import("axios").AxiosResponse>}
238
+ */
239
+ function itemCapacityOverLimit({
240
+ token,
241
+ jwtToken,
242
+ query = {},
243
+ headers
244
+ }) {
245
+ return client({
246
+ url: "/manifests/item-capacity-over-limit",
247
+ method: "get",
248
+ params: query,
249
+ headers: authorizationHeaders({
250
+ token,
251
+ jwtToken,
252
+ internalAuthTokenProvider,
253
+ headers
254
+ })
255
+ });
256
+ }
257
+
258
+ /**
259
+ * GET /manifests/item-capacity-used - path max qty used per attach-to-ticket item.
260
+ * @param {Object} opts
261
+ * @param {string} [opts.token] - API key
262
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
263
+ * @param {ItemCapacityUsedQuery} opts.query - routeId, scheduleId, date, fromId, toId, optional itemIds
264
+ * @param {Object} [opts.headers] - Optional headers
265
+ * @returns {Promise<import("axios").AxiosResponse>}
266
+ */
267
+ function itemCapacityUsed({
268
+ token,
269
+ jwtToken,
270
+ query = {},
271
+ headers
272
+ }) {
273
+ return client({
274
+ url: "/manifests/item-capacity-used",
275
+ method: "get",
276
+ params: query,
277
+ headers: authorizationHeaders({
278
+ token,
279
+ jwtToken,
280
+ internalAuthTokenProvider,
281
+ headers
282
+ })
283
+ });
284
+ }
285
+
212
286
  /**
213
287
  * GET /manifests/:manifestId - get manifest by id. API does not accept query params.
214
288
  * @param {Object} opts
@@ -1030,16 +1104,16 @@ function manifestFactory({
1030
1104
  };
1031
1105
 
1032
1106
  /**
1033
- * POST manifests/:manifestId/boarding/:stationId - board passengers at station.
1034
- * @param {Object} opts
1035
- * @param {string} [opts.token] - API key
1036
- * @param {string} [opts.jwtToken] - JWT or internal auth symbol
1037
- * @param {Object} [opts.headers] - Optional headers
1038
- * @param {string} opts.manifestId - Manifest id
1039
- * @param {string} opts.stationId - Station id
1040
- * @param {Object} opts.data - Request body
1041
- * @returns {Promise<import("axios").AxiosResponse>}
1042
- */
1107
+ * POST manifests/:manifestId/boarding/:stationId - board passengers at station.
1108
+ * @param {Object} opts
1109
+ * @param {string} [opts.token] - API key
1110
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
1111
+ * @param {Object} [opts.headers] - Optional headers
1112
+ * @param {string} opts.manifestId - Manifest id
1113
+ * @param {string} opts.stationId - Station id
1114
+ * @param {Object} opts.data - Request body
1115
+ * @returns {Promise<import("axios").AxiosResponse>}
1116
+ */
1043
1117
  function stationBoarding({
1044
1118
  token,
1045
1119
  jwtToken,
@@ -1098,16 +1172,16 @@ function manifestFactory({
1098
1172
  }
1099
1173
 
1100
1174
  /**
1101
- * POST manifests/:manifestId/sales-closure/:stationId - close sales at station.
1102
- * @param {Object} opts
1103
- * @param {string} [opts.token] - API key
1104
- * @param {string} [opts.jwtToken] - JWT or internal auth symbol
1105
- * @param {Object} [opts.headers] - Optional headers
1106
- * @param {string} opts.manifestId - Manifest id
1107
- * @param {string} opts.stationId - Station id
1108
- * @param {Object} opts.data - Request body
1109
- * @returns {Promise<import("axios").AxiosResponse>}
1110
- */
1175
+ * POST manifests/:manifestId/sales-closure/:stationId - close sales at station.
1176
+ * @param {Object} opts
1177
+ * @param {string} [opts.token] - API key
1178
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
1179
+ * @param {Object} [opts.headers] - Optional headers
1180
+ * @param {string} opts.manifestId - Manifest id
1181
+ * @param {string} opts.stationId - Station id
1182
+ * @param {Object} opts.data - Request body
1183
+ * @returns {Promise<import("axios").AxiosResponse>}
1184
+ */
1111
1185
  function stationSalesClosure({
1112
1186
  token,
1113
1187
  jwtToken,
@@ -1134,6 +1208,8 @@ function manifestFactory({
1134
1208
  get,
1135
1209
  getAll,
1136
1210
  getById,
1211
+ itemCapacityOverLimit,
1212
+ itemCapacityUsed,
1137
1213
  outlook,
1138
1214
  patch,
1139
1215
  save,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "btrz-api-client",
3
- "version": "9.15.0",
3
+ "version": "9.17.0",
4
4
  "description": "Api client for Betterez endpoints",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -7,7 +7,7 @@ const {
7
7
  * @param {Object} deps
8
8
  * @param {import("axios").AxiosInstance} deps.client
9
9
  * @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
10
- * @returns {{ sms: { create: function } }}
10
+ * @returns {{ sms: { create: function, deliveries: { get: function } } }}
11
11
  */
12
12
  function salesforceFactory({
13
13
  client, internalAuthTokenProvider
@@ -34,6 +34,27 @@ function salesforceFactory({
34
34
  },
35
35
  headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
36
36
  });
37
+ },
38
+ deliveries: {
39
+ /**
40
+ * GET /salesforce/sms/deliveries/{tokenId} - Marketing Cloud delivery status.
41
+ * messageId is resolved server-side from the account Salesforce settings.
42
+ * @param {Object} opts
43
+ * @param {string} [opts.token] - API key
44
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
45
+ * @param {string} opts.tokenId - Marketing Cloud tokenId from the accepted send
46
+ * @param {Object} [opts.headers] - Optional headers
47
+ * @returns {Promise<import("axios").AxiosResponse>}
48
+ */
49
+ get({
50
+ token, jwtToken, tokenId, headers
51
+ }) {
52
+ return client({
53
+ url: `/salesforce/sms/deliveries/${tokenId}`,
54
+ method: "get",
55
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
56
+ });
57
+ }
37
58
  }
38
59
  }
39
60
  };
@@ -1,4 +1,4 @@
1
- /* eslint-disable max-len */
1
+
2
2
  const {
3
3
  authorizationHeaders
4
4
  } = require("./../endpoints_helpers.js");
@@ -75,6 +75,25 @@ const {
75
75
  * @property {boolean} [bypassValidations] - If true, bypass driver validations
76
76
  */
77
77
 
78
+ /**
79
+ * Query params for GET /manifests/item-capacity-over-limit (btrz-api-operations).
80
+ * @typedef {Object} ItemCapacityOverLimitQuery
81
+ * @property {string} itemId - Catalog item id (sourceItemId)
82
+ * @property {number|string} limit - Proposed Manifest Item Capacity Limit (>= 1)
83
+ * @property {number|string} [page] - Page number (>= 1)
84
+ */
85
+
86
+ /**
87
+ * Query params for GET /manifests/item-capacity-used (btrz-api-operations).
88
+ * @typedef {Object} ItemCapacityUsedQuery
89
+ * @property {string} routeId - Route id
90
+ * @property {string} scheduleId - Schedule id (manifest schedule key)
91
+ * @property {string} date - Travel date yyyy-mm-dd
92
+ * @property {string} fromId - Origin station id
93
+ * @property {string} toId - Destination station id
94
+ * @property {string} [itemIds] - Optional comma-separated catalog item ids
95
+ */
96
+
78
97
  /**
79
98
  * Factory for manifests API (btrz-api-operations).
80
99
  * @param {Object} deps
@@ -160,6 +179,42 @@ function manifestFactory({
160
179
  });
161
180
  }
162
181
 
182
+ /**
183
+ * GET /manifests/item-capacity-over-limit - future manifests over a proposed item capacity limit.
184
+ * @param {Object} opts
185
+ * @param {string} [opts.token] - API key
186
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
187
+ * @param {ItemCapacityOverLimitQuery} opts.query - itemId, limit, optional page
188
+ * @param {Object} [opts.headers] - Optional headers
189
+ * @returns {Promise<import("axios").AxiosResponse>}
190
+ */
191
+ function itemCapacityOverLimit({token, jwtToken, query = {}, headers}) {
192
+ return client({
193
+ url: "/manifests/item-capacity-over-limit",
194
+ method: "get",
195
+ params: query,
196
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
197
+ });
198
+ }
199
+
200
+ /**
201
+ * GET /manifests/item-capacity-used - path max qty used per attach-to-ticket item.
202
+ * @param {Object} opts
203
+ * @param {string} [opts.token] - API key
204
+ * @param {string} [opts.jwtToken] - JWT or internal auth symbol
205
+ * @param {ItemCapacityUsedQuery} opts.query - routeId, scheduleId, date, fromId, toId, optional itemIds
206
+ * @param {Object} [opts.headers] - Optional headers
207
+ * @returns {Promise<import("axios").AxiosResponse>}
208
+ */
209
+ function itemCapacityUsed({token, jwtToken, query = {}, headers}) {
210
+ return client({
211
+ url: "/manifests/item-capacity-used",
212
+ method: "get",
213
+ params: query,
214
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
215
+ });
216
+ }
217
+
163
218
  /**
164
219
  * GET /manifests/:manifestId - get manifest by id. API does not accept query params.
165
220
  * @param {Object} opts
@@ -730,7 +785,7 @@ function manifestFactory({
730
785
  }
731
786
  };
732
787
 
733
- /**
788
+ /**
734
789
  * POST manifests/:manifestId/boarding/:stationId - board passengers at station.
735
790
  * @param {Object} opts
736
791
  * @param {string} [opts.token] - API key
@@ -741,16 +796,16 @@ function manifestFactory({
741
796
  * @param {Object} opts.data - Request body
742
797
  * @returns {Promise<import("axios").AxiosResponse>}
743
798
  */
744
- function stationBoarding({token, jwtToken, headers, manifestId, stationId, data, query}) {
745
- return client({
746
- url: `/manifests/${manifestId}/boarding/${stationId}`,
747
- method: "post",
748
- headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
749
- data,
750
- params: query
751
- });
752
- }
753
-
799
+ function stationBoarding({token, jwtToken, headers, manifestId, stationId, data, query}) {
800
+ return client({
801
+ url: `/manifests/${manifestId}/boarding/${stationId}`,
802
+ method: "post",
803
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
804
+ data,
805
+ params: query
806
+ });
807
+ }
808
+
754
809
  /**
755
810
  * POST manifests/:manifestId/dispatch/:stationId - dispatch manifest at station.
756
811
  * @param {Object} opts
@@ -762,17 +817,17 @@ function manifestFactory({
762
817
  * @param {Object} opts.data - Request body
763
818
  * @returns {Promise<import("axios").AxiosResponse>}
764
819
  */
765
- function stationDispatch({token, jwtToken, headers, manifestId, stationId, data, query}) {
766
- return client({
767
- url: `/manifests/${manifestId}/dispatch/${stationId}`,
768
- method: "post",
769
- headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
770
- data,
771
- params: query
772
- });
773
- }
820
+ function stationDispatch({token, jwtToken, headers, manifestId, stationId, data, query}) {
821
+ return client({
822
+ url: `/manifests/${manifestId}/dispatch/${stationId}`,
823
+ method: "post",
824
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
825
+ data,
826
+ params: query
827
+ });
828
+ }
774
829
 
775
- /**
830
+ /**
776
831
  * POST manifests/:manifestId/sales-closure/:stationId - close sales at station.
777
832
  * @param {Object} opts
778
833
  * @param {string} [opts.token] - API key
@@ -783,20 +838,22 @@ function manifestFactory({
783
838
  * @param {Object} opts.data - Request body
784
839
  * @returns {Promise<import("axios").AxiosResponse>}
785
840
  */
786
- function stationSalesClosure({token, jwtToken, headers, manifestId, stationId, data, query}) {
787
- return client({
788
- url: `/manifests/${manifestId}/sales-closure/${stationId}`,
789
- method: "post",
790
- headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
791
- data,
792
- params: query
793
- });
794
- }
841
+ function stationSalesClosure({token, jwtToken, headers, manifestId, stationId, data, query}) {
842
+ return client({
843
+ url: `/manifests/${manifestId}/sales-closure/${stationId}`,
844
+ method: "post",
845
+ headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
846
+ data,
847
+ params: query
848
+ });
849
+ }
795
850
 
796
851
  return {
797
852
  get,
798
853
  getAll,
799
854
  getById,
855
+ itemCapacityOverLimit,
856
+ itemCapacityUsed,
800
857
  outlook,
801
858
  patch,
802
859
  save,
@@ -31,40 +31,41 @@ describe("accounts/websales-config", () => {
31
31
  token,
32
32
  jwtToken,
33
33
  websalesConfigId,
34
- "update": {
35
- "websales_bgcolor": "",
36
- "customCss": "updated custom css",
37
- "socialSharing": false,
38
- "fullpageLogoLink": "",
39
- "fullpageHeadline": "",
40
- "fullpageInfoHeadline": "",
41
- "fullpageInfoDetails": "",
42
- "waitingMessage": "",
43
- "websales_logoredirecturl": "",
44
- "disableBackButtonOnTripResults": false,
45
- "forceLogin": false,
46
- "lexiconKeys": {
47
- "fullpageHeadline": {
48
- "key": "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-fullpageHeadline",
49
- "values": {
34
+ update: {
35
+ websales_bgcolor: "",
36
+ customCss: "updated custom css",
37
+ socialSharing: false,
38
+ fullpageLogoLink: "",
39
+ fullpageHeadline: "",
40
+ fullpageInfoHeadline: "",
41
+ fullpageInfoDetails: "",
42
+ waitingMessage: "",
43
+ websales_logoredirecturl: "",
44
+ disableBackButtonOnTripResults: false,
45
+ forceLogin: false,
46
+ disableSignUp: false,
47
+ lexiconKeys: {
48
+ fullpageHeadline: {
49
+ key: "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-fullpageHeadline",
50
+ values: {
50
51
  "en-us": "updated fullpageHeadline"
51
52
  }
52
53
  },
53
- "fullpageInfoHeadline": {
54
- "key": "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-fullpageInfoHeadline",
55
- "values": {
54
+ fullpageInfoHeadline: {
55
+ key: "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-fullpageInfoHeadline",
56
+ values: {
56
57
  "en-us": "updated fullpageInfoHeadline"
57
58
  }
58
59
  },
59
- "fullpageInfoDetails": {
60
- "key": "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-fullpageInfoDetails",
61
- "values": {
60
+ fullpageInfoDetails: {
61
+ key: "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-fullpageInfoDetails",
62
+ values: {
62
63
  "en-us": "fullpageInfoDetails"
63
64
  }
64
65
  },
65
- "ssoErrorMsg": {
66
- "key": "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-ssoErrorMsg",
67
- "values": {
66
+ ssoErrorMsg: {
67
+ key: "624e08b5fdd69a15e973fcbc-websalesConfig-6261875eaad6f32745351fe2-ssoErrorMsg",
68
+ values: {
68
69
  "en-us": "updated ssoErrorMsg"
69
70
  }
70
71
  }
@@ -24,4 +24,15 @@ describe("notifications/salesforce", () => {
24
24
  };
25
25
  return api.notifications.salesforce.sms.create({token, jwtToken, sms});
26
26
  });
27
+
28
+ it("should get sms delivery status by tokenId", () => {
29
+ const tokenId = "tok-delivery-123";
30
+ axiosMock.onGet(`/salesforce/sms/deliveries/${tokenId}`).reply(({headers}) => {
31
+ if (headers["x-api-key"] === token && headers.authorization === `Bearer ${jwtToken}`) {
32
+ return [200, {response: {status: "Finished", tracking: []}}];
33
+ }
34
+ return [403];
35
+ });
36
+ return api.notifications.salesforce.sms.deliveries.get({token, jwtToken, tokenId});
37
+ });
27
38
  });
@@ -40,6 +40,41 @@ describe("operations/manifest", () => {
40
40
  });
41
41
  });
42
42
 
43
+ it("should get item capacity over limit manifests", async () => {
44
+ const query = {
45
+ itemId: "507f1f77bcf86cd799439011",
46
+ limit: 5,
47
+ page: 1
48
+ };
49
+ axiosMock.onGet("/manifests/item-capacity-over-limit").reply(expectRequest({
50
+ statusCode: 200, token, jwtToken
51
+ }));
52
+ const call = await api.operations.manifest.itemCapacityOverLimit({
53
+ token, jwtToken, query
54
+ });
55
+ assert.deepStrictEqual(call.config.params, query);
56
+ return call;
57
+ });
58
+
59
+ it("should get item capacity used on a path", async () => {
60
+ const query = {
61
+ routeId: "507f1f77bcf86cd799439011",
62
+ scheduleId: "5cab127c-2c70-4fea-9031-4131e2751cdb",
63
+ date: "2035-07-20",
64
+ fromId: "507f1f77bcf86cd799439012",
65
+ toId: "507f1f77bcf86cd799439013",
66
+ itemIds: "507f1f77bcf86cd799439014"
67
+ };
68
+ axiosMock.onGet("/manifests/item-capacity-used").reply(expectRequest({
69
+ statusCode: 200, token, jwtToken
70
+ }));
71
+ const call = await api.operations.manifest.itemCapacityUsed({
72
+ token, jwtToken, query
73
+ });
74
+ assert.deepStrictEqual(call.config.params, query);
75
+ return call;
76
+ });
77
+
43
78
  it("should get many manifests", () => {
44
79
  const data = {
45
80
  query: [{
@@ -4,7 +4,7 @@ export = salesforceFactory;
4
4
  * @param {Object} deps
5
5
  * @param {import("axios").AxiosInstance} deps.client
6
6
  * @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
7
- * @returns {{ sms: { create: function } }}
7
+ * @returns {{ sms: { create: function, deliveries: { get: function } } }}
8
8
  */
9
9
  declare function salesforceFactory({ client, internalAuthTokenProvider }: {
10
10
  client: import("axios").AxiosInstance;
@@ -14,5 +14,8 @@ declare function salesforceFactory({ client, internalAuthTokenProvider }: {
14
14
  }): {
15
15
  sms: {
16
16
  create: Function;
17
+ deliveries: {
18
+ get: Function;
19
+ };
17
20
  };
18
21
  };