@63klabs/cache-data 1.3.6 → 1.3.8

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.
@@ -73,7 +73,6 @@ class ClientRequest extends RequestInfo {
73
73
  apiKey: null
74
74
  }
75
75
 
76
-
77
76
  /**
78
77
  * Initializes the request data based on the event. Also sets the
79
78
  * validity of the request so it may be checked by .isValid()
@@ -121,10 +120,20 @@ class ClientRequest extends RequestInfo {
121
120
  * Add ClientRequest.init(options) to the Config.init process or at the
122
121
  * top of the main index.js file outside of the handler.
123
122
  * @param {object} options - Configuration options with validations property containing referrers and parameters
123
+ * @param {Array<string>} options.referrers - Array of allowed referrers
124
+ * @param {object} options.parameters - Object containing parameter validation functions
124
125
  * @throws {Error} If options is not an object
125
126
  */
126
127
  static init(options) {
127
128
  if (typeof options === 'object') {
129
+ if ('referrers' in options) {
130
+ ClientRequest.#validations.referrers = options.referrers;
131
+ }
132
+ if ('parameters' in options) {
133
+ ClientRequest.#validations.parameters = options.parameters;
134
+ }
135
+
136
+ // Backwards compatibility - deprecated
128
137
  if ('validations' in options) {
129
138
  if ('referrers' in options.validations) {
130
139
  ClientRequest.#validations.referrers = options.validations.referrers;
@@ -141,10 +150,34 @@ class ClientRequest extends RequestInfo {
141
150
 
142
151
  };
143
152
 
153
+ /**
154
+ * Returns the current validation rules
155
+ * @returns {{referrerWhiteList<Array>}} validations
156
+ */
157
+ static info() {
158
+ return {
159
+ referrerWhiteList: ClientRequest.getReferrerWhiteList(),
160
+ };
161
+ };
162
+
163
+ /**
164
+ * Allowed referrers
165
+ * @returns {Array<string>} Allowed referrers
166
+ */
144
167
  static getReferrerWhiteList() {
145
168
  return ClientRequest.#validations.referrers;
146
169
  };
147
170
 
171
+ /**
172
+ * Parameter validations
173
+ * @returns {{
174
+ * pathParameters?: object,
175
+ * queryParameters?: object,
176
+ * headerParameters?: object,
177
+ * cookieParameters?: object,
178
+ * bodyParameters?: object
179
+ * }}
180
+ */
148
181
  static getParameterValidations() {
149
182
  return ClientRequest.#validations.parameters;
150
183
  };
@@ -54,7 +54,6 @@ class Connections {
54
54
  };
55
55
  };
56
56
 
57
-
58
57
  /**
59
58
  * Given an object (associative array) or Connection instance, create a Connection object to add to
60
59
  * our collection of Connections.
@@ -88,10 +87,36 @@ class Connections {
88
87
  return ( ( connectionName in this._connections ) ? this._connections[connectionName] : null );
89
88
  };
90
89
 
90
+ /**
91
+ *
92
+ * @returns {Array<Connection>} An array of Connection objects
93
+ */
91
94
  toObject() {
92
- return this._connections;
95
+ // iterate through connections and return .toObject() for each
96
+ const obj = {};
97
+ for (var key in this._connections) {
98
+ obj[key] = this._connections[key].toObject();
99
+ }
100
+ return obj;
93
101
  };
94
102
 
103
+ /**
104
+ *
105
+ * @returns {object}
106
+ */
107
+ info() {
108
+ // iterate through connections and return .toObject for each
109
+ const obj = {};
110
+ for (var key in this._connections) {
111
+ obj[key] = this._connections[key].toObject();
112
+ }
113
+ return obj;
114
+ }
115
+
116
+ /**
117
+ * Used by JSON.stringify
118
+ * @returns {string}
119
+ */
95
120
  toJSON() {
96
121
  // loop through the Connection objects in Connections by key and use each of their .toInfoObject() methods to generate an object
97
122
  var obj = {};
@@ -300,7 +325,7 @@ class Connection {
300
325
 
301
326
  /**
302
327
  *
303
- * @returns object (associative array) with connection details in key/pairs
328
+ * @returns {object} An object representation of the Connection object
304
329
  */
305
330
  toObject() {
306
331
  const obj = this._toObject();
@@ -321,6 +346,10 @@ class Connection {
321
346
  return obj;
322
347
  };
323
348
 
349
+ /**
350
+ *
351
+ * @returns {object} An object representation of the Connection object
352
+ */
324
353
  toInfoObject() {
325
354
  const obj = this._toObject();
326
355
 
@@ -339,10 +368,18 @@ class Connection {
339
368
  return obj;
340
369
  }
341
370
 
371
+ /**
372
+ *
373
+ * @returns {string} Name of connection
374
+ */
342
375
  getName() {
343
376
  return this._name;
344
377
  };
345
378
 
379
+ /**
380
+ *
381
+ * @returns {string} String of concatenated connection values
382
+ */
346
383
  toString() {
347
384
  return `${this._name} ${this._method} ${(this._uri) ? this._uri : this._protocol+"://"+this._host+this._path}${(this._note) ? " "+this._note : ""}`;
348
385
  };
@@ -151,6 +151,17 @@ class Response {
151
151
 
152
152
  };
153
153
 
154
+ /**
155
+ * Get information about response initialization
156
+ * @returns {{isInitialized: boolean, settings: Object}
157
+ */
158
+ static info = () => {
159
+ return {
160
+ isInitialized: Response.#isInitialized,
161
+ settings: Response.#settings,
162
+ };
163
+ };
164
+
154
165
  /**
155
166
  * Resets all properties of the response to default values except those specified in the object.
156
167
  * ClientRequest cannot be reset. Uses generic response templates based on status code.
@@ -44,6 +44,24 @@ response405 = {
44
44
  body: html("405 Method Not Allowed", "<p>Method Not Allowed</p>")
45
45
  };
46
46
 
47
+ response408 = {
48
+ statusCode: 408,
49
+ headers: headers,
50
+ body: html("408 Request Timeout", "<p>Request Timeout</p>")
51
+ };
52
+
53
+ response418 = {
54
+ statusCode: 418,
55
+ headers: headers,
56
+ body: html("418 I'm a teapot", "<p>I'm a teapot</p>")
57
+ };
58
+
59
+ response427 = {
60
+ statusCode: 427,
61
+ headers: headers,
62
+ body: html("427 Too Many Requests", "<p>Too Many Requests</p>")
63
+ };
64
+
47
65
  response500 = {
48
66
  statusCode: 500,
49
67
  headers: headers,
@@ -70,6 +88,14 @@ response = function (statusCode) {
70
88
  return this.response403;
71
89
  case 404:
72
90
  return this.response404;
91
+ case 405:
92
+ return this.response405;
93
+ case 408:
94
+ return this.response408;
95
+ case 418:
96
+ return this.response418;
97
+ case 427:
98
+ return this.response427;
73
99
  case 500:
74
100
  return this.response500;
75
101
  default:
@@ -82,7 +108,14 @@ module.exports = {
82
108
  headers,
83
109
  html,
84
110
  response200,
111
+ response400,
112
+ response401,
113
+ response403,
85
114
  response404,
115
+ response405,
116
+ response408,
117
+ response418,
118
+ response427,
86
119
  response500,
87
120
  response
88
121
  }
@@ -56,6 +56,30 @@ response405 = {
56
56
  }
57
57
  };
58
58
 
59
+ response408 = {
60
+ statusCode: 408,
61
+ headers: headers,
62
+ body: {
63
+ message: "Request Timeout"
64
+ }
65
+ };
66
+
67
+ response418 = {
68
+ statusCode: 418,
69
+ headers: headers,
70
+ body: {
71
+ message: "I'm a teapot"
72
+ }
73
+ };
74
+
75
+ response427 = {
76
+ statusCode: 427,
77
+ headers: headers,
78
+ body: {
79
+ message: "Too Many Requests"
80
+ }
81
+ };
82
+
59
83
  response500 = {
60
84
  statusCode: 500,
61
85
  headers: headers,
@@ -69,7 +93,7 @@ response500 = {
69
93
  * @param {number|string} statusCode
70
94
  * @returns {{statusCode: number, headers: object, body: Array|Object|string}}
71
95
  */
72
- response = function (statusCode) {
96
+ const response = function (statusCode) {
73
97
  // convert to int
74
98
  statusCode = parseInt(statusCode, 10);
75
99
 
@@ -84,6 +108,14 @@ response = function (statusCode) {
84
108
  return this.response403;
85
109
  case 404:
86
110
  return this.response404;
111
+ case 405:
112
+ return this.response405;
113
+ case 408:
114
+ return this.response408;
115
+ case 418:
116
+ return this.response418;
117
+ case 427:
118
+ return this.response427;
87
119
  case 500:
88
120
  return this.response500;
89
121
  default:
@@ -96,7 +128,14 @@ module.exports = {
96
128
  headers,
97
129
  json,
98
130
  response200,
131
+ response400,
132
+ response401,
133
+ response403,
99
134
  response404,
135
+ response405,
136
+ response408,
137
+ response418,
138
+ response427,
100
139
  response500,
101
140
  response
102
141
  }
@@ -44,6 +44,24 @@ response405 = {
44
44
  body: rss("<error>Method Not Allowed</error>")
45
45
  };
46
46
 
47
+ response408 = {
48
+ statusCode: 408,
49
+ headers: headers,
50
+ body: rss("<error>Request Timeout</error>")
51
+ };
52
+
53
+ response418 = {
54
+ statusCode: 418,
55
+ headers: headers,
56
+ body: rss("<error>418 I'm a teapot</error>")
57
+ };
58
+
59
+ response427 = {
60
+ statusCode: 427,
61
+ headers: headers,
62
+ body: rss("<error>Too Many Requests</error>")
63
+ };
64
+
47
65
  response500 = {
48
66
  statusCode: 500,
49
67
  headers: headers,
@@ -70,6 +88,14 @@ response = function (statusCode) {
70
88
  return this.response403;
71
89
  case 404:
72
90
  return this.response404;
91
+ case 405:
92
+ return this.response405;
93
+ case 408:
94
+ return this.response408;
95
+ case 418:
96
+ return this.response418;
97
+ case 427:
98
+ return this.response427;
73
99
  case 500:
74
100
  return this.response500;
75
101
  default:
@@ -82,7 +108,14 @@ module.exports = {
82
108
  headers,
83
109
  rss,
84
110
  response200,
111
+ response400,
112
+ response401,
113
+ response403,
85
114
  response404,
115
+ response405,
116
+ response408,
117
+ response418,
118
+ response427,
86
119
  response500,
87
120
  response
88
121
  }
@@ -42,6 +42,24 @@ response405 = {
42
42
  body: text("Method Not Allowed")
43
43
  };
44
44
 
45
+ response408 = {
46
+ statusCode: 408,
47
+ headers: headers,
48
+ body: text("Request Timeout")
49
+ };
50
+
51
+ response418 = {
52
+ statusCode: 418,
53
+ headers: headers,
54
+ body: text("I'm a teapot")
55
+ };
56
+
57
+ response427 = {
58
+ statusCode: 427,
59
+ headers: headers,
60
+ body: text("Too Many Requests")
61
+ };
62
+
45
63
  response500 = {
46
64
  statusCode: 500,
47
65
  headers: headers,
@@ -53,7 +71,7 @@ response500 = {
53
71
  * @param {number|string} statusCode
54
72
  * @returns {{statusCode: number, headers: object, body: Array|Object|string}}
55
73
  */
56
- response = function (statusCode) {
74
+ const response = function (statusCode) {
57
75
  // convert to int
58
76
  statusCode = parseInt(statusCode, 10);
59
77
 
@@ -68,6 +86,14 @@ response = function (statusCode) {
68
86
  return this.response403;
69
87
  case 404:
70
88
  return this.response404;
89
+ case 405:
90
+ return this.response405;
91
+ case 408:
92
+ return this.response408;
93
+ case 418:
94
+ return this.response418;
95
+ case 427:
96
+ return this.response427;
71
97
  case 500:
72
98
  return this.response500;
73
99
  default:
@@ -80,7 +106,14 @@ module.exports = {
80
106
  headers,
81
107
  text,
82
108
  response200,
109
+ response400,
110
+ response401,
111
+ response403,
83
112
  response404,
113
+ response405,
114
+ response408,
115
+ response418,
116
+ response427,
84
117
  response500,
85
118
  response
86
119
  }
@@ -44,6 +44,24 @@ response405 = {
44
44
  body: xml("<error>Method Not Allowed</error>")
45
45
  };
46
46
 
47
+ response408 = {
48
+ statusCode: 408,
49
+ headers: headers,
50
+ body: xml("<error>Request Timeout</error>")
51
+ };
52
+
53
+ response418 = {
54
+ statusCode: 418,
55
+ headers: headers,
56
+ body: xml("<error>418 I'm a teapot</error>")
57
+ };
58
+
59
+ response427 = {
60
+ statusCode: 427,
61
+ headers: headers,
62
+ body: xml("<error>Too Many Requests</error>")
63
+ };
64
+
47
65
  response500 = {
48
66
  statusCode: 500,
49
67
  headers: headers,
@@ -62,8 +80,22 @@ response = function (statusCode) {
62
80
  switch (statusCode) {
63
81
  case 200:
64
82
  return this.response200;
83
+ case 400:
84
+ return this.response400;
85
+ case 401:
86
+ return this.response401;
87
+ case 403:
88
+ return this.response403;
65
89
  case 404:
66
90
  return this.response404;
91
+ case 405:
92
+ return this.response405;
93
+ case 408:
94
+ return this.response408;
95
+ case 418:
96
+ return this.response418;
97
+ case 427:
98
+ return this.response427;
67
99
  case 500:
68
100
  return this.response500;
69
101
  default:
@@ -76,7 +108,14 @@ module.exports = {
76
108
  headers,
77
109
  xml,
78
110
  response200,
111
+ response400,
112
+ response401,
113
+ response403,
79
114
  response404,
115
+ response405,
116
+ response408,
117
+ response418,
118
+ response427,
80
119
  response500,
81
120
  response
82
121
  }