keuss 1.7.3 → 2.0.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.
Files changed (65) hide show
  1. package/Pipeline/Queue.js +0 -1
  2. package/QFactory.js +11 -6
  3. package/Queue.js +1 -4
  4. package/README.md +2 -1
  5. package/TODO +0 -9
  6. package/backends/bucket-mongo-safe.js +11 -11
  7. package/backends/intraorder.js +13 -11
  8. package/backends/mongo.js +12 -9
  9. package/backends/pl-mongo.js +8 -5
  10. package/backends/postgres.js +380 -0
  11. package/backends/ps-mongo.js +11 -8
  12. package/backends/redis-list.js +8 -8
  13. package/backends/redis-oq.js +8 -3
  14. package/backends/stream-mongo.js +10 -15
  15. package/package.json +14 -10
  16. package/stats/mem.js +0 -1
  17. package/.github/workflows/codeql-analysis.yml +0 -72
  18. package/bench/all-mongo.js +0 -108
  19. package/bench/multi-q.js +0 -85
  20. package/bench/redis-oq-consumer-producer.js +0 -52
  21. package/bench/redis-oq-consumer.js +0 -40
  22. package/bench/redis-oq-producer.js +0 -43
  23. package/docker-compose/docker-compose.yaml +0 -18
  24. package/docker-compose.yaml +0 -18
  25. package/examples/pipelines/builder/index.js +0 -99
  26. package/examples/pipelines/fromRecipe/index.js +0 -127
  27. package/examples/pipelines/simplest/index.js +0 -38
  28. package/examples/pipelines/simulation-fork/index.js +0 -115
  29. package/examples/snippets/01-simplest-pop-push.js +0 -49
  30. package/examples/snippets/02-simplest-reserve-rollback-commit.js +0 -44
  31. package/examples/snippets/03-simplest-producer-consumer-loops.js +0 -77
  32. package/examples/snippets/04-bucket-mongo-safe-insert-reserve-commit.js +0 -78
  33. package/examples/snippets/05-insert-reserve-rollback-deadletter.js +0 -105
  34. package/examples/snippets/06-random-consumer-producer.js +0 -270
  35. package/examples/snippets/07-stream-simple.js +0 -53
  36. package/examples/snippets/redislabs-consumer-producer.js +0 -44
  37. package/examples/snippets/with-redis-stats-and-signaller-consumer-producer.js +0 -52
  38. package/examples/webhooks/README.md +0 -36
  39. package/examples/webhooks/app.js +0 -70
  40. package/examples/webhooks/consumer.js +0 -98
  41. package/examples/webhooks/index.js +0 -55
  42. package/examples/webhooks/package-lock.json +0 -500
  43. package/examples/webhooks/package.json +0 -23
  44. package/examples/webhooks/wh-payload.json +0 -38
  45. package/playground/irc.js +0 -53
  46. package/playground/pl-rollback.js +0 -55
  47. package/playground/pl1.js +0 -74
  48. package/playground/q1.js +0 -34
  49. package/playground/simple-pl.js +0 -42
  50. package/playground/stream-loops.js +0 -114
  51. package/test/backends_bucket-at-least-once.js +0 -302
  52. package/test/backends_deadletter.js +0 -227
  53. package/test/backends_payload.js +0 -542
  54. package/test/backends_push-pop.js +0 -170
  55. package/test/backends_remove.js +0 -320
  56. package/test/backends_reserve-commit-rollback.js +0 -1033
  57. package/test/intraorder.js +0 -325
  58. package/test/pause.js +0 -220
  59. package/test/pipeline-Builder.js +0 -285
  60. package/test/pipeline-ChoiceLink.js +0 -241
  61. package/test/pipeline-DirectLink.js +0 -376
  62. package/test/pipeline-Sink.js +0 -175
  63. package/test/signal.js +0 -196
  64. package/test/stats.js +0 -296
  65. package/test/stream-mongo.js +0 -166
@@ -1,98 +0,0 @@
1
- const request = require ('superagent');
2
-
3
-
4
- ///////////////////////////////////////////////////////////////////////////////////////
5
- // calculate delay to apply on a rollback. Uses a 2nd-deg polynom based on tries
6
- function _get_delay (elem) {
7
- const r = elem.tries || 0;
8
- return (r*r*3 + r*3 + 3) * 1000;
9
- }
10
-
11
-
12
- //////////////////////////////////////////////////////////////////////////////////////////////
13
- // send a single webhook, call cb with result: cb (retry: boolean, ok/ko: boolean)
14
- function _do_http_call (elem, cb) {
15
- const wh = elem.payload;
16
- request (wh.method, wh.url)
17
- .set (wh.headers)
18
- .send (wh.body)
19
- .end ((err, res) => {
20
- if (err) {
21
- console.log ('got error calling %s:', wh.url, err.status || err.code || err.errno || err);
22
-
23
- // non-http error, retry always
24
- if (!err.status) return cb (true);
25
-
26
- const status_series = Math.floor (err.status/100);
27
- switch (status_series) {
28
- case 3: return cb (null, true); // http 3xx, not an error
29
- case 4: return cb (false); // http 4xx, error, do not retry
30
- case 5: return cb (true); // http 5xx, error, retry
31
- default: return cb (true); // unknown http error, retry
32
- }
33
- }
34
- else {
35
- // all ok
36
- cb (null, true);
37
- }
38
- });
39
- }
40
-
41
-
42
- ///////////////////////////////////////////////////////////////////
43
- // main consumer loop: reserve -> send -> commit/rollback
44
- function _consume_loop (q) {
45
- console.log ('getting element from queue...');
46
-
47
- q.pop('consumer-webhooks', {reserve: true}, (err, elem) => {
48
- if (err) {
49
- // error: log it, wait a bit and continue
50
- console.error ('error while popping:', err);
51
- return setTimeout (() => _consume_loop (q), 1000);
52
- }
53
-
54
- console.log ('got elem with id %s, tries %d', elem._id, elem.tries);
55
-
56
- _do_http_call (elem, (retry, ok) => {
57
- if (ok) {
58
- console.log ('sent elem with id %s', elem._id);
59
-
60
- q.ok (elem, err => {
61
- if (err) console.error ('error while committing, continuing anyway:', err);
62
- else console.log ('committed elem %s', elem._id);
63
-
64
- _consume_loop (q);
65
- });
66
- }
67
- else {
68
- if (retry) {
69
- const delay = _get_delay (elem);
70
- console.log ('not sent elem with id %s, retrying with %d ms delay...', elem._id, delay);
71
-
72
- q.ko (elem, (new Date().getTime () + delay), err => {
73
- if (err) console.error ('error while rolling-back, continuing anyway:', err);
74
- else console.log ('rolled back elem %s', elem._id);
75
-
76
- _consume_loop (q);
77
- });
78
- }
79
- else {
80
- console.log ('not sent elem with id %s, NOT retrying', elem._id);
81
-
82
- q.ok (elem, err => {
83
- if (err) console.error ('error while committing, continuing anyway:', err);
84
- else console.log ('committed elem %s', elem._id);
85
-
86
- _consume_loop (q);
87
- });
88
- }
89
- }
90
- });
91
- });
92
- }
93
-
94
-
95
- ///////////////////////////////////////////////////
96
- module.exports = (context) => {
97
- _consume_loop (context.q);
98
- };
@@ -1,55 +0,0 @@
1
- const App = require ('./app');
2
- const consumer = require ('./consumer');
3
-
4
- const listen_port = 6677;
5
-
6
- // use simple mongodb backend, mongo stats, mongo signal
7
- var MQ = require ('../../backends/mongo');
8
- var signal_mongo_capped = require ('../../signal/mongo-capped');
9
- var stats_mongo = require ('../../stats/mongo');
10
-
11
-
12
- var factory_opts = {
13
- url: 'mongodb://localhost/keuss_webhooks',
14
- signaller: {
15
- provider: signal_mongo_capped,
16
- opts: {
17
- url: 'mongodb://localhost/keuss_webhooks_signal',
18
- channel: 'webhooks_channel'
19
- }
20
- },
21
- stats: {
22
- provider: stats_mongo,
23
- opts: {
24
- url: 'mongodb://localhost/keuss_webhooks_stats'
25
- }
26
- },
27
- deadletter: {
28
- max_ko: 13
29
- }
30
- };
31
-
32
- // initialize factory
33
- MQ (factory_opts, (err, factory) => {
34
- if (err) return console.error (err);
35
-
36
- console.log ('keuss initialized');
37
-
38
- // factory ready, create queue
39
- const q = factory.queue ('webhook_default_queue', {});
40
-
41
- // create context and express app
42
- let context = {factory, q};
43
- context.app = App (context);
44
-
45
- // listen for calls
46
- context.app.listen (listen_port, err => {
47
- if (err) return console.error (err);
48
- console.log ('app listening at %s', listen_port);
49
-
50
- // all set, read from queue
51
- consumer (context);
52
- });
53
- });
54
-
55
-
@@ -1,500 +0,0 @@
1
- {
2
- "name": "keuss-examples-webhooks",
3
- "version": "0.0.0",
4
- "lockfileVersion": 1,
5
- "requires": true,
6
- "dependencies": {
7
- "accepts": {
8
- "version": "1.3.7",
9
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11
- "requires": {
12
- "mime-types": "~2.1.24",
13
- "negotiator": "0.6.2"
14
- }
15
- },
16
- "array-flatten": {
17
- "version": "1.1.1",
18
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
19
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
20
- },
21
- "asynckit": {
22
- "version": "0.4.0",
23
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
24
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
25
- },
26
- "body-parser": {
27
- "version": "1.19.0",
28
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
29
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
30
- "requires": {
31
- "bytes": "3.1.0",
32
- "content-type": "~1.0.4",
33
- "debug": "2.6.9",
34
- "depd": "~1.1.2",
35
- "http-errors": "1.7.2",
36
- "iconv-lite": "0.4.24",
37
- "on-finished": "~2.3.0",
38
- "qs": "6.7.0",
39
- "raw-body": "2.4.0",
40
- "type-is": "~1.6.17"
41
- }
42
- },
43
- "bytes": {
44
- "version": "3.1.0",
45
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
46
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
47
- },
48
- "combined-stream": {
49
- "version": "1.0.8",
50
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
51
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
52
- "requires": {
53
- "delayed-stream": "~1.0.0"
54
- }
55
- },
56
- "component-emitter": {
57
- "version": "1.3.0",
58
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
59
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
60
- },
61
- "content-disposition": {
62
- "version": "0.5.3",
63
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
64
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
65
- "requires": {
66
- "safe-buffer": "5.1.2"
67
- }
68
- },
69
- "content-type": {
70
- "version": "1.0.4",
71
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
72
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
73
- },
74
- "cookie": {
75
- "version": "0.4.0",
76
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
77
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
78
- },
79
- "cookie-signature": {
80
- "version": "1.0.6",
81
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
82
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
83
- },
84
- "cookiejar": {
85
- "version": "2.1.2",
86
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
87
- "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
88
- },
89
- "debug": {
90
- "version": "2.6.9",
91
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
92
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
93
- "requires": {
94
- "ms": "2.0.0"
95
- }
96
- },
97
- "delayed-stream": {
98
- "version": "1.0.0",
99
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
100
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
101
- },
102
- "depd": {
103
- "version": "1.1.2",
104
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
105
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
106
- },
107
- "destroy": {
108
- "version": "1.0.4",
109
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
110
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
111
- },
112
- "ee-first": {
113
- "version": "1.1.1",
114
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
115
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
116
- },
117
- "encodeurl": {
118
- "version": "1.0.2",
119
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
120
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
121
- },
122
- "escape-html": {
123
- "version": "1.0.3",
124
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
125
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
126
- },
127
- "etag": {
128
- "version": "1.8.1",
129
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
130
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
131
- },
132
- "express": {
133
- "version": "4.17.1",
134
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
135
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
136
- "requires": {
137
- "accepts": "~1.3.7",
138
- "array-flatten": "1.1.1",
139
- "body-parser": "1.19.0",
140
- "content-disposition": "0.5.3",
141
- "content-type": "~1.0.4",
142
- "cookie": "0.4.0",
143
- "cookie-signature": "1.0.6",
144
- "debug": "2.6.9",
145
- "depd": "~1.1.2",
146
- "encodeurl": "~1.0.2",
147
- "escape-html": "~1.0.3",
148
- "etag": "~1.8.1",
149
- "finalhandler": "~1.1.2",
150
- "fresh": "0.5.2",
151
- "merge-descriptors": "1.0.1",
152
- "methods": "~1.1.2",
153
- "on-finished": "~2.3.0",
154
- "parseurl": "~1.3.3",
155
- "path-to-regexp": "0.1.7",
156
- "proxy-addr": "~2.0.5",
157
- "qs": "6.7.0",
158
- "range-parser": "~1.2.1",
159
- "safe-buffer": "5.1.2",
160
- "send": "0.17.1",
161
- "serve-static": "1.14.1",
162
- "setprototypeof": "1.1.1",
163
- "statuses": "~1.5.0",
164
- "type-is": "~1.6.18",
165
- "utils-merge": "1.0.1",
166
- "vary": "~1.1.2"
167
- }
168
- },
169
- "fast-safe-stringify": {
170
- "version": "2.0.7",
171
- "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
172
- "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
173
- },
174
- "finalhandler": {
175
- "version": "1.1.2",
176
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
177
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
178
- "requires": {
179
- "debug": "2.6.9",
180
- "encodeurl": "~1.0.2",
181
- "escape-html": "~1.0.3",
182
- "on-finished": "~2.3.0",
183
- "parseurl": "~1.3.3",
184
- "statuses": "~1.5.0",
185
- "unpipe": "~1.0.0"
186
- }
187
- },
188
- "form-data": {
189
- "version": "3.0.0",
190
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
191
- "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
192
- "requires": {
193
- "asynckit": "^0.4.0",
194
- "combined-stream": "^1.0.8",
195
- "mime-types": "^2.1.12"
196
- }
197
- },
198
- "formidable": {
199
- "version": "1.2.2",
200
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
201
- "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q=="
202
- },
203
- "forwarded": {
204
- "version": "0.1.2",
205
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
206
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
207
- },
208
- "fresh": {
209
- "version": "0.5.2",
210
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
211
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
212
- },
213
- "http-errors": {
214
- "version": "1.7.2",
215
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
216
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
217
- "requires": {
218
- "depd": "~1.1.2",
219
- "inherits": "2.0.3",
220
- "setprototypeof": "1.1.1",
221
- "statuses": ">= 1.5.0 < 2",
222
- "toidentifier": "1.0.0"
223
- }
224
- },
225
- "iconv-lite": {
226
- "version": "0.4.24",
227
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
228
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
229
- "requires": {
230
- "safer-buffer": ">= 2.1.2 < 3"
231
- }
232
- },
233
- "inherits": {
234
- "version": "2.0.3",
235
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
236
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
237
- },
238
- "ipaddr.js": {
239
- "version": "1.9.1",
240
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
241
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
242
- },
243
- "media-typer": {
244
- "version": "0.3.0",
245
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
246
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
247
- },
248
- "merge-descriptors": {
249
- "version": "1.0.1",
250
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
251
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
252
- },
253
- "methods": {
254
- "version": "1.1.2",
255
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
256
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
257
- },
258
- "mime": {
259
- "version": "1.6.0",
260
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
261
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
262
- },
263
- "mime-db": {
264
- "version": "1.43.0",
265
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
266
- "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
267
- },
268
- "mime-types": {
269
- "version": "2.1.26",
270
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
271
- "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
272
- "requires": {
273
- "mime-db": "1.43.0"
274
- }
275
- },
276
- "ms": {
277
- "version": "2.0.0",
278
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
279
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
280
- },
281
- "negotiator": {
282
- "version": "0.6.2",
283
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
284
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
285
- },
286
- "on-finished": {
287
- "version": "2.3.0",
288
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
289
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
290
- "requires": {
291
- "ee-first": "1.1.1"
292
- }
293
- },
294
- "parseurl": {
295
- "version": "1.3.3",
296
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
297
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
298
- },
299
- "path-to-regexp": {
300
- "version": "0.1.7",
301
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
302
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
303
- },
304
- "proxy-addr": {
305
- "version": "2.0.6",
306
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
307
- "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
308
- "requires": {
309
- "forwarded": "~0.1.2",
310
- "ipaddr.js": "1.9.1"
311
- }
312
- },
313
- "qs": {
314
- "version": "6.7.0",
315
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
316
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
317
- },
318
- "range-parser": {
319
- "version": "1.2.1",
320
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
321
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
322
- },
323
- "raw-body": {
324
- "version": "2.4.0",
325
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
326
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
327
- "requires": {
328
- "bytes": "3.1.0",
329
- "http-errors": "1.7.2",
330
- "iconv-lite": "0.4.24",
331
- "unpipe": "1.0.0"
332
- }
333
- },
334
- "readable-stream": {
335
- "version": "3.6.0",
336
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
337
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
338
- "requires": {
339
- "inherits": "^2.0.3",
340
- "string_decoder": "^1.1.1",
341
- "util-deprecate": "^1.0.1"
342
- }
343
- },
344
- "safe-buffer": {
345
- "version": "5.1.2",
346
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
347
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
348
- },
349
- "safer-buffer": {
350
- "version": "2.1.2",
351
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
352
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
353
- },
354
- "semver": {
355
- "version": "6.3.0",
356
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
357
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
358
- },
359
- "send": {
360
- "version": "0.17.1",
361
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
362
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
363
- "requires": {
364
- "debug": "2.6.9",
365
- "depd": "~1.1.2",
366
- "destroy": "~1.0.4",
367
- "encodeurl": "~1.0.2",
368
- "escape-html": "~1.0.3",
369
- "etag": "~1.8.1",
370
- "fresh": "0.5.2",
371
- "http-errors": "~1.7.2",
372
- "mime": "1.6.0",
373
- "ms": "2.1.1",
374
- "on-finished": "~2.3.0",
375
- "range-parser": "~1.2.1",
376
- "statuses": "~1.5.0"
377
- },
378
- "dependencies": {
379
- "ms": {
380
- "version": "2.1.1",
381
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
382
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
383
- }
384
- }
385
- },
386
- "serve-static": {
387
- "version": "1.14.1",
388
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
389
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
390
- "requires": {
391
- "encodeurl": "~1.0.2",
392
- "escape-html": "~1.0.3",
393
- "parseurl": "~1.3.3",
394
- "send": "0.17.1"
395
- }
396
- },
397
- "setprototypeof": {
398
- "version": "1.1.1",
399
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
400
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
401
- },
402
- "statuses": {
403
- "version": "1.5.0",
404
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
405
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
406
- },
407
- "string_decoder": {
408
- "version": "1.3.0",
409
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
410
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
411
- "requires": {
412
- "safe-buffer": "~5.2.0"
413
- },
414
- "dependencies": {
415
- "safe-buffer": {
416
- "version": "5.2.0",
417
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
418
- "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
419
- }
420
- }
421
- },
422
- "superagent": {
423
- "version": "5.2.2",
424
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.2.2.tgz",
425
- "integrity": "sha512-pMWBUnIllK4ZTw7p/UaobiQPwAO5w/1NRRTDpV0FTVNmECztsxKspj3ZWEordVEaqpZtmOQJJna4yTLyC/q7PQ==",
426
- "requires": {
427
- "component-emitter": "^1.3.0",
428
- "cookiejar": "^2.1.2",
429
- "debug": "^4.1.1",
430
- "fast-safe-stringify": "^2.0.7",
431
- "form-data": "^3.0.0",
432
- "formidable": "^1.2.1",
433
- "methods": "^1.1.2",
434
- "mime": "^2.4.4",
435
- "qs": "^6.9.1",
436
- "readable-stream": "^3.4.0",
437
- "semver": "^6.3.0"
438
- },
439
- "dependencies": {
440
- "debug": {
441
- "version": "4.1.1",
442
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
443
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
444
- "requires": {
445
- "ms": "^2.1.1"
446
- }
447
- },
448
- "mime": {
449
- "version": "2.4.4",
450
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
451
- "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
452
- },
453
- "ms": {
454
- "version": "2.1.2",
455
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
456
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
457
- },
458
- "qs": {
459
- "version": "6.9.3",
460
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
461
- "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw=="
462
- }
463
- }
464
- },
465
- "toidentifier": {
466
- "version": "1.0.0",
467
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
468
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
469
- },
470
- "type-is": {
471
- "version": "1.6.18",
472
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
473
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
474
- "requires": {
475
- "media-typer": "0.3.0",
476
- "mime-types": "~2.1.24"
477
- }
478
- },
479
- "unpipe": {
480
- "version": "1.0.0",
481
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
482
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
483
- },
484
- "util-deprecate": {
485
- "version": "1.0.2",
486
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
487
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
488
- },
489
- "utils-merge": {
490
- "version": "1.0.1",
491
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
492
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
493
- },
494
- "vary": {
495
- "version": "1.1.2",
496
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
497
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
498
- }
499
- }
500
- }
@@ -1,23 +0,0 @@
1
- {
2
- "name": "keuss-examples-webhooks",
3
- "version": "0.0.0",
4
- "homepage": "https://github.com/pepmartinez/keuss",
5
- "bugs": {
6
- "url": "https://github.com/pepmartinez/keuss/issues",
7
- "email": "pep.martinez@gmail.com"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/pepmartinez/keuss.git"
12
- },
13
- "author": {
14
- "name": "Jose Luis Martinez Juan",
15
- "email": "pep.martinez@gmail.com"
16
- },
17
- "license": "GPL-3.0",
18
- "dependencies": {
19
- "express": "~4.17.1",
20
- "body-parser": "~1.19.0",
21
- "superagent": "~5.2.2"
22
- }
23
- }