Roasted Bean Deploy commited on
Commit
ff7d7e4
·
1 Parent(s): 0c6ac49

🔧 Fix deployment: bind 0.0.0.0, health endpoint, gitignore

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +5 -0
  2. data/.credentials.json +0 -1
  3. node_modules/.bin/mime +0 -1
  4. node_modules/.bin/uuid +0 -1
  5. node_modules/.package-lock.json +0 -894
  6. node_modules/accepts/HISTORY.md +0 -243
  7. node_modules/accepts/LICENSE +0 -23
  8. node_modules/accepts/README.md +0 -140
  9. node_modules/accepts/index.js +0 -238
  10. node_modules/accepts/package.json +0 -47
  11. node_modules/array-flatten/LICENSE +0 -21
  12. node_modules/array-flatten/README.md +0 -43
  13. node_modules/array-flatten/array-flatten.js +0 -64
  14. node_modules/array-flatten/package.json +0 -39
  15. node_modules/bcryptjs/.npmignore +0 -6
  16. node_modules/bcryptjs/.travis.yml +0 -18
  17. node_modules/bcryptjs/.vscode/settings.json +0 -3
  18. node_modules/bcryptjs/LICENSE +0 -50
  19. node_modules/bcryptjs/README.md +0 -251
  20. node_modules/bcryptjs/bin/bcrypt +0 -25
  21. node_modules/bcryptjs/bower.json +0 -22
  22. node_modules/bcryptjs/dist/README.md +0 -15
  23. node_modules/bcryptjs/dist/bcrypt.js +0 -1379
  24. node_modules/bcryptjs/dist/bcrypt.min.js +0 -48
  25. node_modules/bcryptjs/dist/bcrypt.min.js.gz +0 -0
  26. node_modules/bcryptjs/dist/bcrypt.min.map +0 -8
  27. node_modules/bcryptjs/externs/bcrypt.js +0 -91
  28. node_modules/bcryptjs/externs/minimal-env.js +0 -98
  29. node_modules/bcryptjs/index.js +0 -29
  30. node_modules/bcryptjs/package.json +0 -47
  31. node_modules/bcryptjs/scripts/build.js +0 -37
  32. node_modules/bcryptjs/src/bcrypt.js +0 -327
  33. node_modules/bcryptjs/src/bcrypt/impl.js +0 -669
  34. node_modules/bcryptjs/src/bcrypt/prng/README.md +0 -5
  35. node_modules/bcryptjs/src/bcrypt/prng/accum.js +0 -133
  36. node_modules/bcryptjs/src/bcrypt/prng/isaac.js +0 -140
  37. node_modules/bcryptjs/src/bcrypt/util.js +0 -33
  38. node_modules/bcryptjs/src/bcrypt/util/base64.js +0 -115
  39. node_modules/bcryptjs/src/bower.json +0 -22
  40. node_modules/bcryptjs/src/wrap.js +0 -50
  41. node_modules/bcryptjs/tests/quickbrown.txt +0 -150
  42. node_modules/bcryptjs/tests/suite.js +0 -197
  43. node_modules/body-parser/HISTORY.md +0 -686
  44. node_modules/body-parser/LICENSE +0 -23
  45. node_modules/body-parser/README.md +0 -476
  46. node_modules/body-parser/index.js +0 -156
  47. node_modules/body-parser/lib/read.js +0 -205
  48. node_modules/body-parser/lib/types/json.js +0 -243
  49. node_modules/body-parser/lib/types/raw.js +0 -101
  50. node_modules/body-parser/lib/types/text.js +0 -121
.gitignore ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ node_modules/
2
+ data/.credentials.json
3
+ *.log
4
+ .DS_Store
5
+ /tmp
data/.credentials.json DELETED
@@ -1 +0,0 @@
1
- {"passwordHash":"$2a$10$w0/9KEhEWGPruYjo8Ljz1.lSJAWCCaCjM/lRycSBR49.9yBmb8HnO"}
 
 
node_modules/.bin/mime DELETED
@@ -1 +0,0 @@
1
- ../mime/cli.js
 
 
node_modules/.bin/uuid DELETED
@@ -1 +0,0 @@
1
- ../uuid/dist/bin/uuid
 
 
node_modules/.package-lock.json DELETED
@@ -1,894 +0,0 @@
1
- {
2
- "name": "cafe-website",
3
- "version": "1.0.0",
4
- "lockfileVersion": 3,
5
- "requires": true,
6
- "packages": {
7
- "node_modules/accepts": {
8
- "version": "1.3.8",
9
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
10
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
11
- "license": "MIT",
12
- "dependencies": {
13
- "mime-types": "~2.1.34",
14
- "negotiator": "0.6.3"
15
- },
16
- "engines": {
17
- "node": ">= 0.6"
18
- }
19
- },
20
- "node_modules/array-flatten": {
21
- "version": "1.1.1",
22
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
23
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
24
- "license": "MIT"
25
- },
26
- "node_modules/bcryptjs": {
27
- "version": "2.4.3",
28
- "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
29
- "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==",
30
- "license": "MIT"
31
- },
32
- "node_modules/body-parser": {
33
- "version": "1.20.5",
34
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz",
35
- "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==",
36
- "license": "MIT",
37
- "dependencies": {
38
- "bytes": "~3.1.2",
39
- "content-type": "~1.0.5",
40
- "debug": "2.6.9",
41
- "depd": "2.0.0",
42
- "destroy": "~1.2.0",
43
- "http-errors": "~2.0.1",
44
- "iconv-lite": "~0.4.24",
45
- "on-finished": "~2.4.1",
46
- "qs": "~6.15.1",
47
- "raw-body": "~2.5.3",
48
- "type-is": "~1.6.18",
49
- "unpipe": "~1.0.0"
50
- },
51
- "engines": {
52
- "node": ">= 0.8",
53
- "npm": "1.2.8000 || >= 1.4.16"
54
- }
55
- },
56
- "node_modules/bytes": {
57
- "version": "3.1.2",
58
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
59
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
60
- "license": "MIT",
61
- "engines": {
62
- "node": ">= 0.8"
63
- }
64
- },
65
- "node_modules/call-bind-apply-helpers": {
66
- "version": "1.0.2",
67
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
68
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
69
- "license": "MIT",
70
- "dependencies": {
71
- "es-errors": "^1.3.0",
72
- "function-bind": "^1.1.2"
73
- },
74
- "engines": {
75
- "node": ">= 0.4"
76
- }
77
- },
78
- "node_modules/call-bound": {
79
- "version": "1.0.4",
80
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
81
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
82
- "license": "MIT",
83
- "dependencies": {
84
- "call-bind-apply-helpers": "^1.0.2",
85
- "get-intrinsic": "^1.3.0"
86
- },
87
- "engines": {
88
- "node": ">= 0.4"
89
- },
90
- "funding": {
91
- "url": "https://github.com/sponsors/ljharb"
92
- }
93
- },
94
- "node_modules/content-disposition": {
95
- "version": "0.5.4",
96
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
97
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
98
- "license": "MIT",
99
- "dependencies": {
100
- "safe-buffer": "5.2.1"
101
- },
102
- "engines": {
103
- "node": ">= 0.6"
104
- }
105
- },
106
- "node_modules/content-type": {
107
- "version": "1.0.5",
108
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
109
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
110
- "license": "MIT",
111
- "engines": {
112
- "node": ">= 0.6"
113
- }
114
- },
115
- "node_modules/cookie": {
116
- "version": "0.7.2",
117
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
118
- "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
119
- "license": "MIT",
120
- "engines": {
121
- "node": ">= 0.6"
122
- }
123
- },
124
- "node_modules/cookie-signature": {
125
- "version": "1.0.7",
126
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
127
- "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
128
- "license": "MIT"
129
- },
130
- "node_modules/debug": {
131
- "version": "2.6.9",
132
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
133
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
134
- "license": "MIT",
135
- "dependencies": {
136
- "ms": "2.0.0"
137
- }
138
- },
139
- "node_modules/depd": {
140
- "version": "2.0.0",
141
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
142
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
143
- "license": "MIT",
144
- "engines": {
145
- "node": ">= 0.8"
146
- }
147
- },
148
- "node_modules/destroy": {
149
- "version": "1.2.0",
150
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
151
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
152
- "license": "MIT",
153
- "engines": {
154
- "node": ">= 0.8",
155
- "npm": "1.2.8000 || >= 1.4.16"
156
- }
157
- },
158
- "node_modules/dunder-proto": {
159
- "version": "1.0.1",
160
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
161
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
162
- "license": "MIT",
163
- "dependencies": {
164
- "call-bind-apply-helpers": "^1.0.1",
165
- "es-errors": "^1.3.0",
166
- "gopd": "^1.2.0"
167
- },
168
- "engines": {
169
- "node": ">= 0.4"
170
- }
171
- },
172
- "node_modules/ee-first": {
173
- "version": "1.1.1",
174
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
175
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
176
- "license": "MIT"
177
- },
178
- "node_modules/encodeurl": {
179
- "version": "2.0.0",
180
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
181
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
182
- "license": "MIT",
183
- "engines": {
184
- "node": ">= 0.8"
185
- }
186
- },
187
- "node_modules/es-define-property": {
188
- "version": "1.0.1",
189
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
190
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
191
- "license": "MIT",
192
- "engines": {
193
- "node": ">= 0.4"
194
- }
195
- },
196
- "node_modules/es-errors": {
197
- "version": "1.3.0",
198
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
199
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
200
- "license": "MIT",
201
- "engines": {
202
- "node": ">= 0.4"
203
- }
204
- },
205
- "node_modules/es-object-atoms": {
206
- "version": "1.1.2",
207
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
208
- "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
209
- "license": "MIT",
210
- "dependencies": {
211
- "es-errors": "^1.3.0"
212
- },
213
- "engines": {
214
- "node": ">= 0.4"
215
- }
216
- },
217
- "node_modules/escape-html": {
218
- "version": "1.0.3",
219
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
220
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
221
- "license": "MIT"
222
- },
223
- "node_modules/etag": {
224
- "version": "1.8.1",
225
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
226
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
227
- "license": "MIT",
228
- "engines": {
229
- "node": ">= 0.6"
230
- }
231
- },
232
- "node_modules/express": {
233
- "version": "4.22.2",
234
- "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz",
235
- "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==",
236
- "license": "MIT",
237
- "dependencies": {
238
- "accepts": "~1.3.8",
239
- "array-flatten": "1.1.1",
240
- "body-parser": "~1.20.5",
241
- "content-disposition": "~0.5.4",
242
- "content-type": "~1.0.4",
243
- "cookie": "~0.7.1",
244
- "cookie-signature": "~1.0.6",
245
- "debug": "2.6.9",
246
- "depd": "2.0.0",
247
- "encodeurl": "~2.0.0",
248
- "escape-html": "~1.0.3",
249
- "etag": "~1.8.1",
250
- "finalhandler": "~1.3.1",
251
- "fresh": "~0.5.2",
252
- "http-errors": "~2.0.0",
253
- "merge-descriptors": "1.0.3",
254
- "methods": "~1.1.2",
255
- "on-finished": "~2.4.1",
256
- "parseurl": "~1.3.3",
257
- "path-to-regexp": "~0.1.12",
258
- "proxy-addr": "~2.0.7",
259
- "qs": "~6.15.1",
260
- "range-parser": "~1.2.1",
261
- "safe-buffer": "5.2.1",
262
- "send": "~0.19.0",
263
- "serve-static": "~1.16.2",
264
- "setprototypeof": "1.2.0",
265
- "statuses": "~2.0.1",
266
- "type-is": "~1.6.18",
267
- "utils-merge": "1.0.1",
268
- "vary": "~1.1.2"
269
- },
270
- "engines": {
271
- "node": ">= 0.10.0"
272
- },
273
- "funding": {
274
- "type": "opencollective",
275
- "url": "https://opencollective.com/express"
276
- }
277
- },
278
- "node_modules/express-session": {
279
- "version": "1.19.0",
280
- "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.19.0.tgz",
281
- "integrity": "sha512-0csaMkGq+vaiZTmSMMGkfdCOabYv192VbytFypcvI0MANrp+4i/7yEkJ0sbAEhycQjntaKGzYfjfXQyVb7BHMA==",
282
- "license": "MIT",
283
- "dependencies": {
284
- "cookie": "~0.7.2",
285
- "cookie-signature": "~1.0.7",
286
- "debug": "~2.6.9",
287
- "depd": "~2.0.0",
288
- "on-headers": "~1.1.0",
289
- "parseurl": "~1.3.3",
290
- "safe-buffer": "~5.2.1",
291
- "uid-safe": "~2.1.5"
292
- },
293
- "engines": {
294
- "node": ">= 0.8.0"
295
- },
296
- "funding": {
297
- "type": "opencollective",
298
- "url": "https://opencollective.com/express"
299
- }
300
- },
301
- "node_modules/finalhandler": {
302
- "version": "1.3.2",
303
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
304
- "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
305
- "license": "MIT",
306
- "dependencies": {
307
- "debug": "2.6.9",
308
- "encodeurl": "~2.0.0",
309
- "escape-html": "~1.0.3",
310
- "on-finished": "~2.4.1",
311
- "parseurl": "~1.3.3",
312
- "statuses": "~2.0.2",
313
- "unpipe": "~1.0.0"
314
- },
315
- "engines": {
316
- "node": ">= 0.8"
317
- }
318
- },
319
- "node_modules/forwarded": {
320
- "version": "0.2.0",
321
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
322
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
323
- "license": "MIT",
324
- "engines": {
325
- "node": ">= 0.6"
326
- }
327
- },
328
- "node_modules/fresh": {
329
- "version": "0.5.2",
330
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
331
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
332
- "license": "MIT",
333
- "engines": {
334
- "node": ">= 0.6"
335
- }
336
- },
337
- "node_modules/function-bind": {
338
- "version": "1.1.2",
339
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
340
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
341
- "license": "MIT",
342
- "funding": {
343
- "url": "https://github.com/sponsors/ljharb"
344
- }
345
- },
346
- "node_modules/get-intrinsic": {
347
- "version": "1.3.0",
348
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
349
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
350
- "license": "MIT",
351
- "dependencies": {
352
- "call-bind-apply-helpers": "^1.0.2",
353
- "es-define-property": "^1.0.1",
354
- "es-errors": "^1.3.0",
355
- "es-object-atoms": "^1.1.1",
356
- "function-bind": "^1.1.2",
357
- "get-proto": "^1.0.1",
358
- "gopd": "^1.2.0",
359
- "has-symbols": "^1.1.0",
360
- "hasown": "^2.0.2",
361
- "math-intrinsics": "^1.1.0"
362
- },
363
- "engines": {
364
- "node": ">= 0.4"
365
- },
366
- "funding": {
367
- "url": "https://github.com/sponsors/ljharb"
368
- }
369
- },
370
- "node_modules/get-proto": {
371
- "version": "1.0.1",
372
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
373
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
374
- "license": "MIT",
375
- "dependencies": {
376
- "dunder-proto": "^1.0.1",
377
- "es-object-atoms": "^1.0.0"
378
- },
379
- "engines": {
380
- "node": ">= 0.4"
381
- }
382
- },
383
- "node_modules/gopd": {
384
- "version": "1.2.0",
385
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
386
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
387
- "license": "MIT",
388
- "engines": {
389
- "node": ">= 0.4"
390
- },
391
- "funding": {
392
- "url": "https://github.com/sponsors/ljharb"
393
- }
394
- },
395
- "node_modules/has-symbols": {
396
- "version": "1.1.0",
397
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
398
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
399
- "license": "MIT",
400
- "engines": {
401
- "node": ">= 0.4"
402
- },
403
- "funding": {
404
- "url": "https://github.com/sponsors/ljharb"
405
- }
406
- },
407
- "node_modules/hasown": {
408
- "version": "2.0.4",
409
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
410
- "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
411
- "license": "MIT",
412
- "dependencies": {
413
- "function-bind": "^1.1.2"
414
- },
415
- "engines": {
416
- "node": ">= 0.4"
417
- }
418
- },
419
- "node_modules/http-errors": {
420
- "version": "2.0.1",
421
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
422
- "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
423
- "license": "MIT",
424
- "dependencies": {
425
- "depd": "~2.0.0",
426
- "inherits": "~2.0.4",
427
- "setprototypeof": "~1.2.0",
428
- "statuses": "~2.0.2",
429
- "toidentifier": "~1.0.1"
430
- },
431
- "engines": {
432
- "node": ">= 0.8"
433
- },
434
- "funding": {
435
- "type": "opencollective",
436
- "url": "https://opencollective.com/express"
437
- }
438
- },
439
- "node_modules/iconv-lite": {
440
- "version": "0.4.24",
441
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
442
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
443
- "license": "MIT",
444
- "dependencies": {
445
- "safer-buffer": ">= 2.1.2 < 3"
446
- },
447
- "engines": {
448
- "node": ">=0.10.0"
449
- }
450
- },
451
- "node_modules/inherits": {
452
- "version": "2.0.4",
453
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
454
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
455
- "license": "ISC"
456
- },
457
- "node_modules/ipaddr.js": {
458
- "version": "1.9.1",
459
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
460
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
461
- "license": "MIT",
462
- "engines": {
463
- "node": ">= 0.10"
464
- }
465
- },
466
- "node_modules/math-intrinsics": {
467
- "version": "1.1.0",
468
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
469
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
470
- "license": "MIT",
471
- "engines": {
472
- "node": ">= 0.4"
473
- }
474
- },
475
- "node_modules/media-typer": {
476
- "version": "0.3.0",
477
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
478
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
479
- "license": "MIT",
480
- "engines": {
481
- "node": ">= 0.6"
482
- }
483
- },
484
- "node_modules/merge-descriptors": {
485
- "version": "1.0.3",
486
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
487
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
488
- "license": "MIT",
489
- "funding": {
490
- "url": "https://github.com/sponsors/sindresorhus"
491
- }
492
- },
493
- "node_modules/methods": {
494
- "version": "1.1.2",
495
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
496
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
497
- "license": "MIT",
498
- "engines": {
499
- "node": ">= 0.6"
500
- }
501
- },
502
- "node_modules/mime": {
503
- "version": "1.6.0",
504
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
505
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
506
- "license": "MIT",
507
- "bin": {
508
- "mime": "cli.js"
509
- },
510
- "engines": {
511
- "node": ">=4"
512
- }
513
- },
514
- "node_modules/mime-db": {
515
- "version": "1.52.0",
516
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
517
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
518
- "license": "MIT",
519
- "engines": {
520
- "node": ">= 0.6"
521
- }
522
- },
523
- "node_modules/mime-types": {
524
- "version": "2.1.35",
525
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
526
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
527
- "license": "MIT",
528
- "dependencies": {
529
- "mime-db": "1.52.0"
530
- },
531
- "engines": {
532
- "node": ">= 0.6"
533
- }
534
- },
535
- "node_modules/ms": {
536
- "version": "2.0.0",
537
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
538
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
539
- "license": "MIT"
540
- },
541
- "node_modules/negotiator": {
542
- "version": "0.6.3",
543
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
544
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
545
- "license": "MIT",
546
- "engines": {
547
- "node": ">= 0.6"
548
- }
549
- },
550
- "node_modules/object-inspect": {
551
- "version": "1.13.4",
552
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
553
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
554
- "license": "MIT",
555
- "engines": {
556
- "node": ">= 0.4"
557
- },
558
- "funding": {
559
- "url": "https://github.com/sponsors/ljharb"
560
- }
561
- },
562
- "node_modules/on-finished": {
563
- "version": "2.4.1",
564
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
565
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
566
- "license": "MIT",
567
- "dependencies": {
568
- "ee-first": "1.1.1"
569
- },
570
- "engines": {
571
- "node": ">= 0.8"
572
- }
573
- },
574
- "node_modules/on-headers": {
575
- "version": "1.1.0",
576
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
577
- "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
578
- "license": "MIT",
579
- "engines": {
580
- "node": ">= 0.8"
581
- }
582
- },
583
- "node_modules/parseurl": {
584
- "version": "1.3.3",
585
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
586
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
587
- "license": "MIT",
588
- "engines": {
589
- "node": ">= 0.8"
590
- }
591
- },
592
- "node_modules/path-to-regexp": {
593
- "version": "0.1.13",
594
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
595
- "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
596
- "license": "MIT"
597
- },
598
- "node_modules/proxy-addr": {
599
- "version": "2.0.7",
600
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
601
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
602
- "license": "MIT",
603
- "dependencies": {
604
- "forwarded": "0.2.0",
605
- "ipaddr.js": "1.9.1"
606
- },
607
- "engines": {
608
- "node": ">= 0.10"
609
- }
610
- },
611
- "node_modules/qs": {
612
- "version": "6.15.3",
613
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
614
- "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
615
- "license": "BSD-3-Clause",
616
- "dependencies": {
617
- "es-define-property": "^1.0.1",
618
- "side-channel": "^1.1.1"
619
- },
620
- "engines": {
621
- "node": ">=0.6"
622
- },
623
- "funding": {
624
- "url": "https://github.com/sponsors/ljharb"
625
- }
626
- },
627
- "node_modules/random-bytes": {
628
- "version": "1.0.0",
629
- "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
630
- "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==",
631
- "license": "MIT",
632
- "engines": {
633
- "node": ">= 0.8"
634
- }
635
- },
636
- "node_modules/range-parser": {
637
- "version": "1.2.1",
638
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
639
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
640
- "license": "MIT",
641
- "engines": {
642
- "node": ">= 0.6"
643
- }
644
- },
645
- "node_modules/raw-body": {
646
- "version": "2.5.3",
647
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
648
- "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
649
- "license": "MIT",
650
- "dependencies": {
651
- "bytes": "~3.1.2",
652
- "http-errors": "~2.0.1",
653
- "iconv-lite": "~0.4.24",
654
- "unpipe": "~1.0.0"
655
- },
656
- "engines": {
657
- "node": ">= 0.8"
658
- }
659
- },
660
- "node_modules/safe-buffer": {
661
- "version": "5.2.1",
662
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
663
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
664
- "funding": [
665
- {
666
- "type": "github",
667
- "url": "https://github.com/sponsors/feross"
668
- },
669
- {
670
- "type": "patreon",
671
- "url": "https://www.patreon.com/feross"
672
- },
673
- {
674
- "type": "consulting",
675
- "url": "https://feross.org/support"
676
- }
677
- ],
678
- "license": "MIT"
679
- },
680
- "node_modules/safer-buffer": {
681
- "version": "2.1.2",
682
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
683
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
684
- "license": "MIT"
685
- },
686
- "node_modules/send": {
687
- "version": "0.19.2",
688
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
689
- "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
690
- "license": "MIT",
691
- "dependencies": {
692
- "debug": "2.6.9",
693
- "depd": "2.0.0",
694
- "destroy": "1.2.0",
695
- "encodeurl": "~2.0.0",
696
- "escape-html": "~1.0.3",
697
- "etag": "~1.8.1",
698
- "fresh": "~0.5.2",
699
- "http-errors": "~2.0.1",
700
- "mime": "1.6.0",
701
- "ms": "2.1.3",
702
- "on-finished": "~2.4.1",
703
- "range-parser": "~1.2.1",
704
- "statuses": "~2.0.2"
705
- },
706
- "engines": {
707
- "node": ">= 0.8.0"
708
- }
709
- },
710
- "node_modules/send/node_modules/ms": {
711
- "version": "2.1.3",
712
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
713
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
714
- "license": "MIT"
715
- },
716
- "node_modules/serve-static": {
717
- "version": "1.16.3",
718
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
719
- "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
720
- "license": "MIT",
721
- "dependencies": {
722
- "encodeurl": "~2.0.0",
723
- "escape-html": "~1.0.3",
724
- "parseurl": "~1.3.3",
725
- "send": "~0.19.1"
726
- },
727
- "engines": {
728
- "node": ">= 0.8.0"
729
- }
730
- },
731
- "node_modules/setprototypeof": {
732
- "version": "1.2.0",
733
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
734
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
735
- "license": "ISC"
736
- },
737
- "node_modules/side-channel": {
738
- "version": "1.1.1",
739
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
740
- "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
741
- "license": "MIT",
742
- "dependencies": {
743
- "es-errors": "^1.3.0",
744
- "object-inspect": "^1.13.4",
745
- "side-channel-list": "^1.0.1",
746
- "side-channel-map": "^1.0.1",
747
- "side-channel-weakmap": "^1.0.2"
748
- },
749
- "engines": {
750
- "node": ">= 0.4"
751
- },
752
- "funding": {
753
- "url": "https://github.com/sponsors/ljharb"
754
- }
755
- },
756
- "node_modules/side-channel-list": {
757
- "version": "1.0.1",
758
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
759
- "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
760
- "license": "MIT",
761
- "dependencies": {
762
- "es-errors": "^1.3.0",
763
- "object-inspect": "^1.13.4"
764
- },
765
- "engines": {
766
- "node": ">= 0.4"
767
- },
768
- "funding": {
769
- "url": "https://github.com/sponsors/ljharb"
770
- }
771
- },
772
- "node_modules/side-channel-map": {
773
- "version": "1.0.1",
774
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
775
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
776
- "license": "MIT",
777
- "dependencies": {
778
- "call-bound": "^1.0.2",
779
- "es-errors": "^1.3.0",
780
- "get-intrinsic": "^1.2.5",
781
- "object-inspect": "^1.13.3"
782
- },
783
- "engines": {
784
- "node": ">= 0.4"
785
- },
786
- "funding": {
787
- "url": "https://github.com/sponsors/ljharb"
788
- }
789
- },
790
- "node_modules/side-channel-weakmap": {
791
- "version": "1.0.2",
792
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
793
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
794
- "license": "MIT",
795
- "dependencies": {
796
- "call-bound": "^1.0.2",
797
- "es-errors": "^1.3.0",
798
- "get-intrinsic": "^1.2.5",
799
- "object-inspect": "^1.13.3",
800
- "side-channel-map": "^1.0.1"
801
- },
802
- "engines": {
803
- "node": ">= 0.4"
804
- },
805
- "funding": {
806
- "url": "https://github.com/sponsors/ljharb"
807
- }
808
- },
809
- "node_modules/statuses": {
810
- "version": "2.0.2",
811
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
812
- "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
813
- "license": "MIT",
814
- "engines": {
815
- "node": ">= 0.8"
816
- }
817
- },
818
- "node_modules/toidentifier": {
819
- "version": "1.0.1",
820
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
821
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
822
- "license": "MIT",
823
- "engines": {
824
- "node": ">=0.6"
825
- }
826
- },
827
- "node_modules/type-is": {
828
- "version": "1.6.18",
829
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
830
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
831
- "license": "MIT",
832
- "dependencies": {
833
- "media-typer": "0.3.0",
834
- "mime-types": "~2.1.24"
835
- },
836
- "engines": {
837
- "node": ">= 0.6"
838
- }
839
- },
840
- "node_modules/uid-safe": {
841
- "version": "2.1.5",
842
- "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
843
- "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
844
- "license": "MIT",
845
- "dependencies": {
846
- "random-bytes": "~1.0.0"
847
- },
848
- "engines": {
849
- "node": ">= 0.8"
850
- }
851
- },
852
- "node_modules/unpipe": {
853
- "version": "1.0.0",
854
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
855
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
856
- "license": "MIT",
857
- "engines": {
858
- "node": ">= 0.8"
859
- }
860
- },
861
- "node_modules/utils-merge": {
862
- "version": "1.0.1",
863
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
864
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
865
- "license": "MIT",
866
- "engines": {
867
- "node": ">= 0.4.0"
868
- }
869
- },
870
- "node_modules/uuid": {
871
- "version": "9.0.1",
872
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
873
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
874
- "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).",
875
- "funding": [
876
- "https://github.com/sponsors/broofa",
877
- "https://github.com/sponsors/ctavan"
878
- ],
879
- "license": "MIT",
880
- "bin": {
881
- "uuid": "dist/bin/uuid"
882
- }
883
- },
884
- "node_modules/vary": {
885
- "version": "1.1.2",
886
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
887
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
888
- "license": "MIT",
889
- "engines": {
890
- "node": ">= 0.8"
891
- }
892
- }
893
- }
894
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/accepts/HISTORY.md DELETED
@@ -1,243 +0,0 @@
1
- 1.3.8 / 2022-02-02
2
- ==================
3
-
4
- * deps: mime-types@~2.1.34
5
- - deps: mime-db@~1.51.0
6
- * deps: negotiator@0.6.3
7
-
8
- 1.3.7 / 2019-04-29
9
- ==================
10
-
11
- * deps: negotiator@0.6.2
12
- - Fix sorting charset, encoding, and language with extra parameters
13
-
14
- 1.3.6 / 2019-04-28
15
- ==================
16
-
17
- * deps: mime-types@~2.1.24
18
- - deps: mime-db@~1.40.0
19
-
20
- 1.3.5 / 2018-02-28
21
- ==================
22
-
23
- * deps: mime-types@~2.1.18
24
- - deps: mime-db@~1.33.0
25
-
26
- 1.3.4 / 2017-08-22
27
- ==================
28
-
29
- * deps: mime-types@~2.1.16
30
- - deps: mime-db@~1.29.0
31
-
32
- 1.3.3 / 2016-05-02
33
- ==================
34
-
35
- * deps: mime-types@~2.1.11
36
- - deps: mime-db@~1.23.0
37
- * deps: negotiator@0.6.1
38
- - perf: improve `Accept` parsing speed
39
- - perf: improve `Accept-Charset` parsing speed
40
- - perf: improve `Accept-Encoding` parsing speed
41
- - perf: improve `Accept-Language` parsing speed
42
-
43
- 1.3.2 / 2016-03-08
44
- ==================
45
-
46
- * deps: mime-types@~2.1.10
47
- - Fix extension of `application/dash+xml`
48
- - Update primary extension for `audio/mp4`
49
- - deps: mime-db@~1.22.0
50
-
51
- 1.3.1 / 2016-01-19
52
- ==================
53
-
54
- * deps: mime-types@~2.1.9
55
- - deps: mime-db@~1.21.0
56
-
57
- 1.3.0 / 2015-09-29
58
- ==================
59
-
60
- * deps: mime-types@~2.1.7
61
- - deps: mime-db@~1.19.0
62
- * deps: negotiator@0.6.0
63
- - Fix including type extensions in parameters in `Accept` parsing
64
- - Fix parsing `Accept` parameters with quoted equals
65
- - Fix parsing `Accept` parameters with quoted semicolons
66
- - Lazy-load modules from main entry point
67
- - perf: delay type concatenation until needed
68
- - perf: enable strict mode
69
- - perf: hoist regular expressions
70
- - perf: remove closures getting spec properties
71
- - perf: remove a closure from media type parsing
72
- - perf: remove property delete from media type parsing
73
-
74
- 1.2.13 / 2015-09-06
75
- ===================
76
-
77
- * deps: mime-types@~2.1.6
78
- - deps: mime-db@~1.18.0
79
-
80
- 1.2.12 / 2015-07-30
81
- ===================
82
-
83
- * deps: mime-types@~2.1.4
84
- - deps: mime-db@~1.16.0
85
-
86
- 1.2.11 / 2015-07-16
87
- ===================
88
-
89
- * deps: mime-types@~2.1.3
90
- - deps: mime-db@~1.15.0
91
-
92
- 1.2.10 / 2015-07-01
93
- ===================
94
-
95
- * deps: mime-types@~2.1.2
96
- - deps: mime-db@~1.14.0
97
-
98
- 1.2.9 / 2015-06-08
99
- ==================
100
-
101
- * deps: mime-types@~2.1.1
102
- - perf: fix deopt during mapping
103
-
104
- 1.2.8 / 2015-06-07
105
- ==================
106
-
107
- * deps: mime-types@~2.1.0
108
- - deps: mime-db@~1.13.0
109
- * perf: avoid argument reassignment & argument slice
110
- * perf: avoid negotiator recursive construction
111
- * perf: enable strict mode
112
- * perf: remove unnecessary bitwise operator
113
-
114
- 1.2.7 / 2015-05-10
115
- ==================
116
-
117
- * deps: negotiator@0.5.3
118
- - Fix media type parameter matching to be case-insensitive
119
-
120
- 1.2.6 / 2015-05-07
121
- ==================
122
-
123
- * deps: mime-types@~2.0.11
124
- - deps: mime-db@~1.9.1
125
- * deps: negotiator@0.5.2
126
- - Fix comparing media types with quoted values
127
- - Fix splitting media types with quoted commas
128
-
129
- 1.2.5 / 2015-03-13
130
- ==================
131
-
132
- * deps: mime-types@~2.0.10
133
- - deps: mime-db@~1.8.0
134
-
135
- 1.2.4 / 2015-02-14
136
- ==================
137
-
138
- * Support Node.js 0.6
139
- * deps: mime-types@~2.0.9
140
- - deps: mime-db@~1.7.0
141
- * deps: negotiator@0.5.1
142
- - Fix preference sorting to be stable for long acceptable lists
143
-
144
- 1.2.3 / 2015-01-31
145
- ==================
146
-
147
- * deps: mime-types@~2.0.8
148
- - deps: mime-db@~1.6.0
149
-
150
- 1.2.2 / 2014-12-30
151
- ==================
152
-
153
- * deps: mime-types@~2.0.7
154
- - deps: mime-db@~1.5.0
155
-
156
- 1.2.1 / 2014-12-30
157
- ==================
158
-
159
- * deps: mime-types@~2.0.5
160
- - deps: mime-db@~1.3.1
161
-
162
- 1.2.0 / 2014-12-19
163
- ==================
164
-
165
- * deps: negotiator@0.5.0
166
- - Fix list return order when large accepted list
167
- - Fix missing identity encoding when q=0 exists
168
- - Remove dynamic building of Negotiator class
169
-
170
- 1.1.4 / 2014-12-10
171
- ==================
172
-
173
- * deps: mime-types@~2.0.4
174
- - deps: mime-db@~1.3.0
175
-
176
- 1.1.3 / 2014-11-09
177
- ==================
178
-
179
- * deps: mime-types@~2.0.3
180
- - deps: mime-db@~1.2.0
181
-
182
- 1.1.2 / 2014-10-14
183
- ==================
184
-
185
- * deps: negotiator@0.4.9
186
- - Fix error when media type has invalid parameter
187
-
188
- 1.1.1 / 2014-09-28
189
- ==================
190
-
191
- * deps: mime-types@~2.0.2
192
- - deps: mime-db@~1.1.0
193
- * deps: negotiator@0.4.8
194
- - Fix all negotiations to be case-insensitive
195
- - Stable sort preferences of same quality according to client order
196
-
197
- 1.1.0 / 2014-09-02
198
- ==================
199
-
200
- * update `mime-types`
201
-
202
- 1.0.7 / 2014-07-04
203
- ==================
204
-
205
- * Fix wrong type returned from `type` when match after unknown extension
206
-
207
- 1.0.6 / 2014-06-24
208
- ==================
209
-
210
- * deps: negotiator@0.4.7
211
-
212
- 1.0.5 / 2014-06-20
213
- ==================
214
-
215
- * fix crash when unknown extension given
216
-
217
- 1.0.4 / 2014-06-19
218
- ==================
219
-
220
- * use `mime-types`
221
-
222
- 1.0.3 / 2014-06-11
223
- ==================
224
-
225
- * deps: negotiator@0.4.6
226
- - Order by specificity when quality is the same
227
-
228
- 1.0.2 / 2014-05-29
229
- ==================
230
-
231
- * Fix interpretation when header not in request
232
- * deps: pin negotiator@0.4.5
233
-
234
- 1.0.1 / 2014-01-18
235
- ==================
236
-
237
- * Identity encoding isn't always acceptable
238
- * deps: negotiator@~0.4.0
239
-
240
- 1.0.0 / 2013-12-27
241
- ==================
242
-
243
- * Genesis
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/accepts/LICENSE DELETED
@@ -1,23 +0,0 @@
1
- (The MIT License)
2
-
3
- Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
4
- Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- 'Software'), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be
15
- included in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/accepts/README.md DELETED
@@ -1,140 +0,0 @@
1
- # accepts
2
-
3
- [![NPM Version][npm-version-image]][npm-url]
4
- [![NPM Downloads][npm-downloads-image]][npm-url]
5
- [![Node.js Version][node-version-image]][node-version-url]
6
- [![Build Status][github-actions-ci-image]][github-actions-ci-url]
7
- [![Test Coverage][coveralls-image]][coveralls-url]
8
-
9
- Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
10
- Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
11
-
12
- In addition to negotiator, it allows:
13
-
14
- - Allows types as an array or arguments list, ie `(['text/html', 'application/json'])`
15
- as well as `('text/html', 'application/json')`.
16
- - Allows type shorthands such as `json`.
17
- - Returns `false` when no types match
18
- - Treats non-existent headers as `*`
19
-
20
- ## Installation
21
-
22
- This is a [Node.js](https://nodejs.org/en/) module available through the
23
- [npm registry](https://www.npmjs.com/). Installation is done using the
24
- [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
25
-
26
- ```sh
27
- $ npm install accepts
28
- ```
29
-
30
- ## API
31
-
32
- ```js
33
- var accepts = require('accepts')
34
- ```
35
-
36
- ### accepts(req)
37
-
38
- Create a new `Accepts` object for the given `req`.
39
-
40
- #### .charset(charsets)
41
-
42
- Return the first accepted charset. If nothing in `charsets` is accepted,
43
- then `false` is returned.
44
-
45
- #### .charsets()
46
-
47
- Return the charsets that the request accepts, in the order of the client's
48
- preference (most preferred first).
49
-
50
- #### .encoding(encodings)
51
-
52
- Return the first accepted encoding. If nothing in `encodings` is accepted,
53
- then `false` is returned.
54
-
55
- #### .encodings()
56
-
57
- Return the encodings that the request accepts, in the order of the client's
58
- preference (most preferred first).
59
-
60
- #### .language(languages)
61
-
62
- Return the first accepted language. If nothing in `languages` is accepted,
63
- then `false` is returned.
64
-
65
- #### .languages()
66
-
67
- Return the languages that the request accepts, in the order of the client's
68
- preference (most preferred first).
69
-
70
- #### .type(types)
71
-
72
- Return the first accepted type (and it is returned as the same text as what
73
- appears in the `types` array). If nothing in `types` is accepted, then `false`
74
- is returned.
75
-
76
- The `types` array can contain full MIME types or file extensions. Any value
77
- that is not a full MIME types is passed to `require('mime-types').lookup`.
78
-
79
- #### .types()
80
-
81
- Return the types that the request accepts, in the order of the client's
82
- preference (most preferred first).
83
-
84
- ## Examples
85
-
86
- ### Simple type negotiation
87
-
88
- This simple example shows how to use `accepts` to return a different typed
89
- respond body based on what the client wants to accept. The server lists it's
90
- preferences in order and will get back the best match between the client and
91
- server.
92
-
93
- ```js
94
- var accepts = require('accepts')
95
- var http = require('http')
96
-
97
- function app (req, res) {
98
- var accept = accepts(req)
99
-
100
- // the order of this list is significant; should be server preferred order
101
- switch (accept.type(['json', 'html'])) {
102
- case 'json':
103
- res.setHeader('Content-Type', 'application/json')
104
- res.write('{"hello":"world!"}')
105
- break
106
- case 'html':
107
- res.setHeader('Content-Type', 'text/html')
108
- res.write('<b>hello, world!</b>')
109
- break
110
- default:
111
- // the fallback is text/plain, so no need to specify it above
112
- res.setHeader('Content-Type', 'text/plain')
113
- res.write('hello, world!')
114
- break
115
- }
116
-
117
- res.end()
118
- }
119
-
120
- http.createServer(app).listen(3000)
121
- ```
122
-
123
- You can test this out with the cURL program:
124
- ```sh
125
- curl -I -H'Accept: text/html' http://localhost:3000/
126
- ```
127
-
128
- ## License
129
-
130
- [MIT](LICENSE)
131
-
132
- [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
133
- [coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
134
- [github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci
135
- [github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml
136
- [node-version-image]: https://badgen.net/npm/node/accepts
137
- [node-version-url]: https://nodejs.org/en/download
138
- [npm-downloads-image]: https://badgen.net/npm/dm/accepts
139
- [npm-url]: https://npmjs.org/package/accepts
140
- [npm-version-image]: https://badgen.net/npm/v/accepts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/accepts/index.js DELETED
@@ -1,238 +0,0 @@
1
- /*!
2
- * accepts
3
- * Copyright(c) 2014 Jonathan Ong
4
- * Copyright(c) 2015 Douglas Christopher Wilson
5
- * MIT Licensed
6
- */
7
-
8
- 'use strict'
9
-
10
- /**
11
- * Module dependencies.
12
- * @private
13
- */
14
-
15
- var Negotiator = require('negotiator')
16
- var mime = require('mime-types')
17
-
18
- /**
19
- * Module exports.
20
- * @public
21
- */
22
-
23
- module.exports = Accepts
24
-
25
- /**
26
- * Create a new Accepts object for the given req.
27
- *
28
- * @param {object} req
29
- * @public
30
- */
31
-
32
- function Accepts (req) {
33
- if (!(this instanceof Accepts)) {
34
- return new Accepts(req)
35
- }
36
-
37
- this.headers = req.headers
38
- this.negotiator = new Negotiator(req)
39
- }
40
-
41
- /**
42
- * Check if the given `type(s)` is acceptable, returning
43
- * the best match when true, otherwise `undefined`, in which
44
- * case you should respond with 406 "Not Acceptable".
45
- *
46
- * The `type` value may be a single mime type string
47
- * such as "application/json", the extension name
48
- * such as "json" or an array `["json", "html", "text/plain"]`. When a list
49
- * or array is given the _best_ match, if any is returned.
50
- *
51
- * Examples:
52
- *
53
- * // Accept: text/html
54
- * this.types('html');
55
- * // => "html"
56
- *
57
- * // Accept: text/*, application/json
58
- * this.types('html');
59
- * // => "html"
60
- * this.types('text/html');
61
- * // => "text/html"
62
- * this.types('json', 'text');
63
- * // => "json"
64
- * this.types('application/json');
65
- * // => "application/json"
66
- *
67
- * // Accept: text/*, application/json
68
- * this.types('image/png');
69
- * this.types('png');
70
- * // => undefined
71
- *
72
- * // Accept: text/*;q=.5, application/json
73
- * this.types(['html', 'json']);
74
- * this.types('html', 'json');
75
- * // => "json"
76
- *
77
- * @param {String|Array} types...
78
- * @return {String|Array|Boolean}
79
- * @public
80
- */
81
-
82
- Accepts.prototype.type =
83
- Accepts.prototype.types = function (types_) {
84
- var types = types_
85
-
86
- // support flattened arguments
87
- if (types && !Array.isArray(types)) {
88
- types = new Array(arguments.length)
89
- for (var i = 0; i < types.length; i++) {
90
- types[i] = arguments[i]
91
- }
92
- }
93
-
94
- // no types, return all requested types
95
- if (!types || types.length === 0) {
96
- return this.negotiator.mediaTypes()
97
- }
98
-
99
- // no accept header, return first given type
100
- if (!this.headers.accept) {
101
- return types[0]
102
- }
103
-
104
- var mimes = types.map(extToMime)
105
- var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))
106
- var first = accepts[0]
107
-
108
- return first
109
- ? types[mimes.indexOf(first)]
110
- : false
111
- }
112
-
113
- /**
114
- * Return accepted encodings or best fit based on `encodings`.
115
- *
116
- * Given `Accept-Encoding: gzip, deflate`
117
- * an array sorted by quality is returned:
118
- *
119
- * ['gzip', 'deflate']
120
- *
121
- * @param {String|Array} encodings...
122
- * @return {String|Array}
123
- * @public
124
- */
125
-
126
- Accepts.prototype.encoding =
127
- Accepts.prototype.encodings = function (encodings_) {
128
- var encodings = encodings_
129
-
130
- // support flattened arguments
131
- if (encodings && !Array.isArray(encodings)) {
132
- encodings = new Array(arguments.length)
133
- for (var i = 0; i < encodings.length; i++) {
134
- encodings[i] = arguments[i]
135
- }
136
- }
137
-
138
- // no encodings, return all requested encodings
139
- if (!encodings || encodings.length === 0) {
140
- return this.negotiator.encodings()
141
- }
142
-
143
- return this.negotiator.encodings(encodings)[0] || false
144
- }
145
-
146
- /**
147
- * Return accepted charsets or best fit based on `charsets`.
148
- *
149
- * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
150
- * an array sorted by quality is returned:
151
- *
152
- * ['utf-8', 'utf-7', 'iso-8859-1']
153
- *
154
- * @param {String|Array} charsets...
155
- * @return {String|Array}
156
- * @public
157
- */
158
-
159
- Accepts.prototype.charset =
160
- Accepts.prototype.charsets = function (charsets_) {
161
- var charsets = charsets_
162
-
163
- // support flattened arguments
164
- if (charsets && !Array.isArray(charsets)) {
165
- charsets = new Array(arguments.length)
166
- for (var i = 0; i < charsets.length; i++) {
167
- charsets[i] = arguments[i]
168
- }
169
- }
170
-
171
- // no charsets, return all requested charsets
172
- if (!charsets || charsets.length === 0) {
173
- return this.negotiator.charsets()
174
- }
175
-
176
- return this.negotiator.charsets(charsets)[0] || false
177
- }
178
-
179
- /**
180
- * Return accepted languages or best fit based on `langs`.
181
- *
182
- * Given `Accept-Language: en;q=0.8, es, pt`
183
- * an array sorted by quality is returned:
184
- *
185
- * ['es', 'pt', 'en']
186
- *
187
- * @param {String|Array} langs...
188
- * @return {Array|String}
189
- * @public
190
- */
191
-
192
- Accepts.prototype.lang =
193
- Accepts.prototype.langs =
194
- Accepts.prototype.language =
195
- Accepts.prototype.languages = function (languages_) {
196
- var languages = languages_
197
-
198
- // support flattened arguments
199
- if (languages && !Array.isArray(languages)) {
200
- languages = new Array(arguments.length)
201
- for (var i = 0; i < languages.length; i++) {
202
- languages[i] = arguments[i]
203
- }
204
- }
205
-
206
- // no languages, return all requested languages
207
- if (!languages || languages.length === 0) {
208
- return this.negotiator.languages()
209
- }
210
-
211
- return this.negotiator.languages(languages)[0] || false
212
- }
213
-
214
- /**
215
- * Convert extnames to mime.
216
- *
217
- * @param {String} type
218
- * @return {String}
219
- * @private
220
- */
221
-
222
- function extToMime (type) {
223
- return type.indexOf('/') === -1
224
- ? mime.lookup(type)
225
- : type
226
- }
227
-
228
- /**
229
- * Check if mime is valid.
230
- *
231
- * @param {String} type
232
- * @return {String}
233
- * @private
234
- */
235
-
236
- function validMime (type) {
237
- return typeof type === 'string'
238
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/accepts/package.json DELETED
@@ -1,47 +0,0 @@
1
- {
2
- "name": "accepts",
3
- "description": "Higher-level content negotiation",
4
- "version": "1.3.8",
5
- "contributors": [
6
- "Douglas Christopher Wilson <doug@somethingdoug.com>",
7
- "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
8
- ],
9
- "license": "MIT",
10
- "repository": "jshttp/accepts",
11
- "dependencies": {
12
- "mime-types": "~2.1.34",
13
- "negotiator": "0.6.3"
14
- },
15
- "devDependencies": {
16
- "deep-equal": "1.0.1",
17
- "eslint": "7.32.0",
18
- "eslint-config-standard": "14.1.1",
19
- "eslint-plugin-import": "2.25.4",
20
- "eslint-plugin-markdown": "2.2.1",
21
- "eslint-plugin-node": "11.1.0",
22
- "eslint-plugin-promise": "4.3.1",
23
- "eslint-plugin-standard": "4.1.0",
24
- "mocha": "9.2.0",
25
- "nyc": "15.1.0"
26
- },
27
- "files": [
28
- "LICENSE",
29
- "HISTORY.md",
30
- "index.js"
31
- ],
32
- "engines": {
33
- "node": ">= 0.6"
34
- },
35
- "scripts": {
36
- "lint": "eslint .",
37
- "test": "mocha --reporter spec --check-leaks --bail test/",
38
- "test-ci": "nyc --reporter=lcov --reporter=text npm test",
39
- "test-cov": "nyc --reporter=html --reporter=text npm test"
40
- },
41
- "keywords": [
42
- "content",
43
- "negotiation",
44
- "accept",
45
- "accepts"
46
- ]
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/array-flatten/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/array-flatten/README.md DELETED
@@ -1,43 +0,0 @@
1
- # Array Flatten
2
-
3
- [![NPM version][npm-image]][npm-url]
4
- [![NPM downloads][downloads-image]][downloads-url]
5
- [![Build status][travis-image]][travis-url]
6
- [![Test coverage][coveralls-image]][coveralls-url]
7
-
8
- > Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
9
-
10
- ## Installation
11
-
12
- ```
13
- npm install array-flatten --save
14
- ```
15
-
16
- ## Usage
17
-
18
- ```javascript
19
- var flatten = require('array-flatten')
20
-
21
- flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
22
- //=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
23
-
24
- flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
25
- //=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
26
-
27
- (function () {
28
- flatten(arguments) //=> [1, 2, 3]
29
- })(1, [2, 3])
30
- ```
31
-
32
- ## License
33
-
34
- MIT
35
-
36
- [npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
37
- [npm-url]: https://npmjs.org/package/array-flatten
38
- [downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
39
- [downloads-url]: https://npmjs.org/package/array-flatten
40
- [travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
41
- [travis-url]: https://travis-ci.org/blakeembrey/array-flatten
42
- [coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
43
- [coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/array-flatten/array-flatten.js DELETED
@@ -1,64 +0,0 @@
1
- 'use strict'
2
-
3
- /**
4
- * Expose `arrayFlatten`.
5
- */
6
- module.exports = arrayFlatten
7
-
8
- /**
9
- * Recursive flatten function with depth.
10
- *
11
- * @param {Array} array
12
- * @param {Array} result
13
- * @param {Number} depth
14
- * @return {Array}
15
- */
16
- function flattenWithDepth (array, result, depth) {
17
- for (var i = 0; i < array.length; i++) {
18
- var value = array[i]
19
-
20
- if (depth > 0 && Array.isArray(value)) {
21
- flattenWithDepth(value, result, depth - 1)
22
- } else {
23
- result.push(value)
24
- }
25
- }
26
-
27
- return result
28
- }
29
-
30
- /**
31
- * Recursive flatten function. Omitting depth is slightly faster.
32
- *
33
- * @param {Array} array
34
- * @param {Array} result
35
- * @return {Array}
36
- */
37
- function flattenForever (array, result) {
38
- for (var i = 0; i < array.length; i++) {
39
- var value = array[i]
40
-
41
- if (Array.isArray(value)) {
42
- flattenForever(value, result)
43
- } else {
44
- result.push(value)
45
- }
46
- }
47
-
48
- return result
49
- }
50
-
51
- /**
52
- * Flatten an array, with the ability to define a depth.
53
- *
54
- * @param {Array} array
55
- * @param {Number} depth
56
- * @return {Array}
57
- */
58
- function arrayFlatten (array, depth) {
59
- if (depth == null) {
60
- return flattenForever(array, [])
61
- }
62
-
63
- return flattenWithDepth(array, [], depth)
64
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/array-flatten/package.json DELETED
@@ -1,39 +0,0 @@
1
- {
2
- "name": "array-flatten",
3
- "version": "1.1.1",
4
- "description": "Flatten an array of nested arrays into a single flat array",
5
- "main": "array-flatten.js",
6
- "files": [
7
- "array-flatten.js",
8
- "LICENSE"
9
- ],
10
- "scripts": {
11
- "test": "istanbul cover _mocha -- -R spec"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "git://github.com/blakeembrey/array-flatten.git"
16
- },
17
- "keywords": [
18
- "array",
19
- "flatten",
20
- "arguments",
21
- "depth"
22
- ],
23
- "author": {
24
- "name": "Blake Embrey",
25
- "email": "hello@blakeembrey.com",
26
- "url": "http://blakeembrey.me"
27
- },
28
- "license": "MIT",
29
- "bugs": {
30
- "url": "https://github.com/blakeembrey/array-flatten/issues"
31
- },
32
- "homepage": "https://github.com/blakeembrey/array-flatten",
33
- "devDependencies": {
34
- "istanbul": "^0.3.13",
35
- "mocha": "^2.2.4",
36
- "pre-commit": "^1.0.7",
37
- "standard": "^3.7.3"
38
- }
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/.npmignore DELETED
@@ -1,6 +0,0 @@
1
- node_modules/
2
- npm-debug.log
3
- debug.log
4
- doco/
5
- tests/bench.js
6
- *.png
 
 
 
 
 
 
 
node_modules/bcryptjs/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- language: node_js
2
-
3
- node_js:
4
- - 0.10
5
- - 0.12
6
- - 4
7
- - 6
8
-
9
- before_script: npm -g install testjs
10
-
11
- env:
12
- - CXX=g++-4.8
13
- addons:
14
- apt:
15
- sources:
16
- - ubuntu-toolchain-r-test
17
- packages:
18
- - g++-4.8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/.vscode/settings.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "vsicons.presets.angular": false
3
- }
 
 
 
 
node_modules/bcryptjs/LICENSE DELETED
@@ -1,50 +0,0 @@
1
- bcrypt.js
2
- ---------
3
- Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
4
- Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>
5
- Copyright (c) 2014 Daniel Wirtz <dcode@dcode.io>
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions
9
- are met:
10
- 1. Redistributions of source code must retain the above copyright
11
- notice, this list of conditions and the following disclaimer.
12
- 2. Redistributions in binary form must reproduce the above copyright
13
- notice, this list of conditions and the following disclaimer in the
14
- documentation and/or other materials provided with the distribution.
15
- 3. The name of the author may not be used to endorse or promote products
16
- derived from this software without specific prior written permission.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
-
29
- isaac.js
30
- --------
31
- Copyright (c) 2012 Yves-Marie K. Rinquin
32
-
33
- Permission is hereby granted, free of charge, to any person obtaining
34
- a copy of this software and associated documentation files (the
35
- "Software"), to deal in the Software without restriction, including
36
- without limitation the rights to use, copy, modify, merge, publish,
37
- distribute, sublicense, and/or sell copies of the Software, and to
38
- permit persons to whom the Software is furnished to do so, subject to
39
- the following conditions:
40
-
41
- The above copyright notice and this permission notice shall be
42
- included in all copies or substantial portions of the Software.
43
-
44
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
45
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
46
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
47
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
48
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
49
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
50
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/README.md DELETED
@@ -1,251 +0,0 @@
1
- bcrypt.js
2
- =========
3
- Optimized bcrypt in JavaScript with zero dependencies. Compatible to the C++ [bcrypt](https://npmjs.org/package/bcrypt)
4
- binding on node.js and also working in the browser.
5
-
6
- <a href="https://travis-ci.org/dcodeIO/bcrypt.js"><img alt="build static" src="https://travis-ci.org/dcodeIO/bcrypt.js.svg?branch=master" /></a> <a href="https://npmjs.org/package/bcryptjs"><img src="https://img.shields.io/npm/v/bcryptjs.svg" alt=""></a> <a href="https://npmjs.org/package/bcryptjs"><img src="https://img.shields.io/npm/dm/bcryptjs.svg" alt=""></a> <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dcode%40dcode.io&item_name=Open%20Source%20Software%20Donation&item_number=dcodeIO%2Fbcrypt.js"><img alt="donate ❤" src="https://img.shields.io/badge/donate-❤-ff2244.svg"></a>
7
-
8
-
9
- Security considerations
10
- -----------------------
11
- Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive function: over time, the
12
- iteration count can be increased to make it slower, so it remains resistant to brute-force search attacks even with
13
- increasing computation power. ([see](http://en.wikipedia.org/wiki/Bcrypt))
14
-
15
- While bcrypt.js is compatible to the C++ bcrypt binding, it is written in pure JavaScript and thus slower ([about 30%](https://github.com/dcodeIO/bcrypt.js/wiki/Benchmark)), effectively reducing the number of iterations that can be
16
- processed in an equal time span.
17
-
18
- The maximum input length is 72 bytes (note that UTF8 encoded characters use up to 4 bytes) and the length of generated
19
- hashes is 60 characters.
20
-
21
- Usage
22
- -----
23
- The library is compatible with CommonJS and AMD loaders and is exposed globally as `dcodeIO.bcrypt` if neither is
24
- available.
25
-
26
- ### node.js
27
-
28
- On node.js, the inbuilt [crypto module](http://nodejs.org/api/crypto.html)'s randomBytes interface is used to obtain
29
- secure random numbers.
30
-
31
- `npm install bcryptjs`
32
-
33
- ```js
34
- var bcrypt = require('bcryptjs');
35
- ...
36
- ```
37
-
38
- ### Browser
39
-
40
- In the browser, bcrypt.js relies on [Web Crypto API](http://www.w3.org/TR/WebCryptoAPI)'s getRandomValues
41
- interface to obtain secure random numbers. If no cryptographically secure source of randomness is available, you may
42
- specify one through [bcrypt.setRandomFallback](https://github.com/dcodeIO/bcrypt.js#setrandomfallbackrandom).
43
-
44
- ```js
45
- var bcrypt = dcodeIO.bcrypt;
46
- ...
47
- ```
48
-
49
- or
50
-
51
- ```js
52
- require.config({
53
- paths: { "bcrypt": "/path/to/bcrypt.js" }
54
- });
55
- require(["bcrypt"], function(bcrypt) {
56
- ...
57
- });
58
- ```
59
-
60
- Usage - Sync
61
- ------------
62
- To hash a password:
63
-
64
- ```javascript
65
- var bcrypt = require('bcryptjs');
66
- var salt = bcrypt.genSaltSync(10);
67
- var hash = bcrypt.hashSync("B4c0/\/", salt);
68
- // Store hash in your password DB.
69
- ```
70
-
71
- To check a password:
72
-
73
- ```javascript
74
- // Load hash from your password DB.
75
- bcrypt.compareSync("B4c0/\/", hash); // true
76
- bcrypt.compareSync("not_bacon", hash); // false
77
- ```
78
-
79
- Auto-gen a salt and hash:
80
-
81
- ```javascript
82
- var hash = bcrypt.hashSync('bacon', 8);
83
- ```
84
-
85
- Usage - Async
86
- -------------
87
- To hash a password:
88
-
89
- ```javascript
90
- var bcrypt = require('bcryptjs');
91
- bcrypt.genSalt(10, function(err, salt) {
92
- bcrypt.hash("B4c0/\/", salt, function(err, hash) {
93
- // Store hash in your password DB.
94
- });
95
- });
96
- ```
97
-
98
- To check a password:
99
-
100
- ```javascript
101
- // Load hash from your password DB.
102
- bcrypt.compare("B4c0/\/", hash, function(err, res) {
103
- // res === true
104
- });
105
- bcrypt.compare("not_bacon", hash, function(err, res) {
106
- // res === false
107
- });
108
-
109
- // As of bcryptjs 2.4.0, compare returns a promise if callback is omitted:
110
- bcrypt.compare("B4c0/\/", hash).then((res) => {
111
- // res === true
112
- });
113
- ```
114
-
115
- Auto-gen a salt and hash:
116
-
117
- ```javascript
118
- bcrypt.hash('bacon', 8, function(err, hash) {
119
- });
120
- ```
121
-
122
- **Note:** Under the hood, asynchronisation splits a crypto operation into small chunks. After the completion of a chunk, the execution of the next chunk is placed on the back of [JS event loop queue](https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop), thus efficiently sharing the computational resources with the other operations in the queue.
123
-
124
- API
125
- ---
126
- ### setRandomFallback(random)
127
-
128
- Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto
129
- API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it is
130
- seeded properly!
131
-
132
- | Parameter | Type | Description
133
- |-----------------|-----------------|---------------
134
- | random | *function(number):!Array.&lt;number&gt;* | Function taking the number of bytes to generate as its sole argument, returning the corresponding array of cryptographically secure random byte values.
135
- | **@see** | | http://nodejs.org/api/crypto.html
136
- | **@see** | | http://www.w3.org/TR/WebCryptoAPI/
137
-
138
- **Hint:** You might use [isaac.js](https://github.com/rubycon/isaac.js) as a CSPRNG but you still have to make sure to
139
- seed it properly.
140
-
141
- ### genSaltSync(rounds=, seed_length=)
142
-
143
- Synchronously generates a salt.
144
-
145
- | Parameter | Type | Description
146
- |-----------------|-----------------|---------------
147
- | rounds | *number* | Number of rounds to use, defaults to 10 if omitted
148
- | seed_length | *number* | Not supported.
149
- | **@returns** | *string* | Resulting salt
150
- | **@throws** | *Error* | If a random fallback is required but not set
151
-
152
- ### genSalt(rounds=, seed_length=, callback)
153
-
154
- Asynchronously generates a salt.
155
-
156
- | Parameter | Type | Description
157
- |-----------------|-----------------|---------------
158
- | rounds | *number &#124; function(Error, string=)* | Number of rounds to use, defaults to 10 if omitted
159
- | seed_length | *number &#124; function(Error, string=)* | Not supported.
160
- | callback | *function(Error, string=)* | Callback receiving the error, if any, and the resulting salt
161
- | **@returns** | *Promise* | If `callback` has been omitted
162
- | **@throws** | *Error* | If `callback` is present but not a function
163
-
164
- ### hashSync(s, salt=)
165
-
166
- Synchronously generates a hash for the given string.
167
-
168
- | Parameter | Type | Description
169
- |-----------------|-----------------|---------------
170
- | s | *string* | String to hash
171
- | salt | *number &#124; string* | Salt length to generate or salt to use, default to 10
172
- | **@returns** | *string* | Resulting hash
173
-
174
- ### hash(s, salt, callback, progressCallback=)
175
-
176
- Asynchronously generates a hash for the given string.
177
-
178
- | Parameter | Type | Description
179
- |-----------------|-----------------|---------------
180
- | s | *string* | String to hash
181
- | salt | *number &#124; string* | Salt length to generate or salt to use
182
- | callback | *function(Error, string=)* | Callback receiving the error, if any, and the resulting hash
183
- | progressCallback | *function(number)* | Callback successively called with the percentage of rounds completed (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
184
- | **@returns** | *Promise* | If `callback` has been omitted
185
- | **@throws** | *Error* | If `callback` is present but not a function
186
-
187
- ### compareSync(s, hash)
188
-
189
- Synchronously tests a string against a hash.
190
-
191
- | Parameter | Type | Description
192
- |-----------------|-----------------|---------------
193
- | s | *string* | String to compare
194
- | hash | *string* | Hash to test against
195
- | **@returns** | *boolean* | true if matching, otherwise false
196
- | **@throws** | *Error* | If an argument is illegal
197
-
198
- ### compare(s, hash, callback, progressCallback=)
199
-
200
- Asynchronously compares the given data against the given hash.
201
-
202
- | Parameter | Type | Description
203
- |-----------------|-----------------|---------------
204
- | s | *string* | Data to compare
205
- | hash | *string* | Data to be compared to
206
- | callback | *function(Error, boolean)* | Callback receiving the error, if any, otherwise the result
207
- | progressCallback | *function(number)* | Callback successively called with the percentage of rounds completed (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
208
- | **@returns** | *Promise* | If `callback` has been omitted
209
- | **@throws** | *Error* | If `callback` is present but not a function
210
-
211
- ### getRounds(hash)
212
-
213
- Gets the number of rounds used to encrypt the specified hash.
214
-
215
- | Parameter | Type | Description
216
- |-----------------|-----------------|---------------
217
- | hash | *string* | Hash to extract the used number of rounds from
218
- | **@returns** | *number* | Number of rounds used
219
- | **@throws** | *Error* | If `hash` is not a string
220
-
221
- ### getSalt(hash)
222
-
223
- Gets the salt portion from a hash. Does not validate the hash.
224
-
225
- | Parameter | Type | Description
226
- |-----------------|-----------------|---------------
227
- | hash | *string* | Hash to extract the salt from
228
- | **@returns** | *string* | Extracted salt part
229
- | **@throws** | *Error* | If `hash` is not a string or otherwise invalid
230
-
231
-
232
- Command line
233
- ------------
234
- `Usage: bcrypt <input> [salt]`
235
-
236
- If the input has spaces inside, simply surround it with quotes.
237
-
238
- Downloads
239
- ---------
240
- * [Distributions](https://github.com/dcodeIO/bcrypt.js/tree/master/dist)
241
- * [ZIP-Archive](https://github.com/dcodeIO/bcrypt.js/archive/master.zip)
242
- * [Tarball](https://github.com/dcodeIO/bcrypt.js/tarball/master)
243
-
244
- Credits
245
- -------
246
- Based on work started by Shane Girish at [bcrypt-nodejs](https://github.com/shaneGirish/bcrypt-nodejs) (MIT-licensed),
247
- which is itself based on [javascript-bcrypt](http://code.google.com/p/javascript-bcrypt/) (New BSD-licensed).
248
-
249
- License
250
- -------
251
- New-BSD / MIT ([see](https://github.com/dcodeIO/bcrypt.js/blob/master/LICENSE))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/bin/bcrypt DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- var path = require("path"),
4
- bcrypt = require(path.join(__dirname, '..', 'index.js')),
5
- pkg = require(path.join(__dirname, '..', 'package.json'));
6
-
7
- if (process.argv.length < 3) {
8
- process.stderr.write([ // No dependencies, so we do it from hand.
9
- "",
10
- " |_ _ _ _ |_",
11
- " |_)(_| \\/|_)|_ v"+pkg['version']+" (c) "+pkg['author'],
12
- " / | "
13
- ].join('\n')+'\n\n'+" Usage: "+path.basename(process.argv[1])+" <input> [rounds|salt]\n");
14
- process.exit(1);
15
- } else {
16
- var salt;
17
- if (process.argv.length > 3) {
18
- salt = process.argv[3];
19
- var rounds = parseInt(salt, 10);
20
- if (rounds == salt)
21
- salt = bcrypt.genSaltSync(rounds);
22
- } else
23
- salt = bcrypt.genSaltSync();
24
- process.stdout.write(bcrypt.hashSync(process.argv[2], salt)+"\n");
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/bower.json DELETED
@@ -1,22 +0,0 @@
1
- {
2
- "name": "bcryptjs",
3
- "description": "Optimized bcrypt in plain JavaScript with zero dependencies.",
4
- "version": "2.4.3",
5
- "main": "dist/bcrypt.min.js",
6
- "license": "New-BSD",
7
- "homepage": "http://dcode.io/",
8
- "repository": {
9
- "type": "git",
10
- "url": "git://github.com/dcodeIO/bcrypt.js.git"
11
- },
12
- "keywords": ["bcrypt", "password", "auth", "authentication", "encryption", "crypt", "crypto"],
13
- "dependencies": {},
14
- "devDependencies": {},
15
- "ignore": [
16
- "**/.*",
17
- "node_modules",
18
- "bower_components",
19
- "test",
20
- "tests"
21
- ]
22
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/dist/README.md DELETED
@@ -1,15 +0,0 @@
1
- Distributions
2
- =============
3
- bcrypt.js is available as the following distributions:
4
-
5
- * **[bcrypt.js](https://github.com/dcodeIO/bcrypt.js/blob/master/dist/bcrypt.js)**
6
- contains the commented source code.
7
-
8
- * **[bcrypt.min.js](https://github.com/dcodeIO/bcrypt.js/blob/master/dist/bcrypt.min.js)**
9
- has been compiled with Closure Compiler using advanced optimizations.
10
-
11
- * **[bcrypt.min.map](https://github.com/dcodeIO/bcrypt.js/blob/master/dist/bcrypt.min.map)**
12
- contains the source map generated by Closure Compiler.
13
-
14
- * **[bcrypt.min.js.gz](https://github.com/dcodeIO/bcrypt.js/blob/master/dist/bcrypt.min.js.gz)**
15
- has also been gzipped using `-9`.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/dist/bcrypt.js DELETED
@@ -1,1379 +0,0 @@
1
- /*
2
- Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
3
- Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>
4
- Copyright (c) 2014 Daniel Wirtz <dcode@dcode.io>
5
-
6
- Redistribution and use in source and binary forms, with or without
7
- modification, are permitted provided that the following conditions
8
- are met:
9
- 1. Redistributions of source code must retain the above copyright
10
- notice, this list of conditions and the following disclaimer.
11
- 2. Redistributions in binary form must reproduce the above copyright
12
- notice, this list of conditions and the following disclaimer in the
13
- documentation and/or other materials provided with the distribution.
14
- 3. The name of the author may not be used to endorse or promote products
15
- derived from this software without specific prior written permission.
16
-
17
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
- */
28
-
29
- /**
30
- * @license bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
31
- * Released under the Apache License, Version 2.0
32
- * see: https://github.com/dcodeIO/bcrypt.js for details
33
- */
34
- (function(global, factory) {
35
-
36
- /* AMD */ if (typeof define === 'function' && define["amd"])
37
- define([], factory);
38
- /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"])
39
- module["exports"] = factory();
40
- /* Global */ else
41
- (global["dcodeIO"] = global["dcodeIO"] || {})["bcrypt"] = factory();
42
-
43
- }(this, function() {
44
- "use strict";
45
-
46
- /**
47
- * bcrypt namespace.
48
- * @type {Object.<string,*>}
49
- */
50
- var bcrypt = {};
51
-
52
- /**
53
- * The random implementation to use as a fallback.
54
- * @type {?function(number):!Array.<number>}
55
- * @inner
56
- */
57
- var randomFallback = null;
58
-
59
- /**
60
- * Generates cryptographically secure random bytes.
61
- * @function
62
- * @param {number} len Bytes length
63
- * @returns {!Array.<number>} Random bytes
64
- * @throws {Error} If no random implementation is available
65
- * @inner
66
- */
67
- function random(len) {
68
- /* node */ if (typeof module !== 'undefined' && module && module['exports'])
69
- try {
70
- return require("crypto")['randomBytes'](len);
71
- } catch (e) {}
72
- /* WCA */ try {
73
- var a; (self['crypto']||self['msCrypto'])['getRandomValues'](a = new Uint32Array(len));
74
- return Array.prototype.slice.call(a);
75
- } catch (e) {}
76
- /* fallback */ if (!randomFallback)
77
- throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");
78
- return randomFallback(len);
79
- }
80
-
81
- // Test if any secure randomness source is available
82
- var randomAvailable = false;
83
- try {
84
- random(1);
85
- randomAvailable = true;
86
- } catch (e) {}
87
-
88
- // Default fallback, if any
89
- randomFallback = null;
90
- /**
91
- * Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto
92
- * API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it
93
- * is seeded properly!
94
- * @param {?function(number):!Array.<number>} random Function taking the number of bytes to generate as its
95
- * sole argument, returning the corresponding array of cryptographically secure random byte values.
96
- * @see http://nodejs.org/api/crypto.html
97
- * @see http://www.w3.org/TR/WebCryptoAPI/
98
- */
99
- bcrypt.setRandomFallback = function(random) {
100
- randomFallback = random;
101
- };
102
-
103
- /**
104
- * Synchronously generates a salt.
105
- * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted
106
- * @param {number=} seed_length Not supported.
107
- * @returns {string} Resulting salt
108
- * @throws {Error} If a random fallback is required but not set
109
- * @expose
110
- */
111
- bcrypt.genSaltSync = function(rounds, seed_length) {
112
- rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;
113
- if (typeof rounds !== 'number')
114
- throw Error("Illegal arguments: "+(typeof rounds)+", "+(typeof seed_length));
115
- if (rounds < 4)
116
- rounds = 4;
117
- else if (rounds > 31)
118
- rounds = 31;
119
- var salt = [];
120
- salt.push("$2a$");
121
- if (rounds < 10)
122
- salt.push("0");
123
- salt.push(rounds.toString());
124
- salt.push('$');
125
- salt.push(base64_encode(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw
126
- return salt.join('');
127
- };
128
-
129
- /**
130
- * Asynchronously generates a salt.
131
- * @param {(number|function(Error, string=))=} rounds Number of rounds to use, defaults to 10 if omitted
132
- * @param {(number|function(Error, string=))=} seed_length Not supported.
133
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting salt
134
- * @returns {!Promise} If `callback` has been omitted
135
- * @throws {Error} If `callback` is present but not a function
136
- * @expose
137
- */
138
- bcrypt.genSalt = function(rounds, seed_length, callback) {
139
- if (typeof seed_length === 'function')
140
- callback = seed_length,
141
- seed_length = undefined; // Not supported.
142
- if (typeof rounds === 'function')
143
- callback = rounds,
144
- rounds = undefined;
145
- if (typeof rounds === 'undefined')
146
- rounds = GENSALT_DEFAULT_LOG2_ROUNDS;
147
- else if (typeof rounds !== 'number')
148
- throw Error("illegal arguments: "+(typeof rounds));
149
-
150
- function _async(callback) {
151
- nextTick(function() { // Pretty thin, but salting is fast enough
152
- try {
153
- callback(null, bcrypt.genSaltSync(rounds));
154
- } catch (err) {
155
- callback(err);
156
- }
157
- });
158
- }
159
-
160
- if (callback) {
161
- if (typeof callback !== 'function')
162
- throw Error("Illegal callback: "+typeof(callback));
163
- _async(callback);
164
- } else
165
- return new Promise(function(resolve, reject) {
166
- _async(function(err, res) {
167
- if (err) {
168
- reject(err);
169
- return;
170
- }
171
- resolve(res);
172
- });
173
- });
174
- };
175
-
176
- /**
177
- * Synchronously generates a hash for the given string.
178
- * @param {string} s String to hash
179
- * @param {(number|string)=} salt Salt length to generate or salt to use, default to 10
180
- * @returns {string} Resulting hash
181
- * @expose
182
- */
183
- bcrypt.hashSync = function(s, salt) {
184
- if (typeof salt === 'undefined')
185
- salt = GENSALT_DEFAULT_LOG2_ROUNDS;
186
- if (typeof salt === 'number')
187
- salt = bcrypt.genSaltSync(salt);
188
- if (typeof s !== 'string' || typeof salt !== 'string')
189
- throw Error("Illegal arguments: "+(typeof s)+', '+(typeof salt));
190
- return _hash(s, salt);
191
- };
192
-
193
- /**
194
- * Asynchronously generates a hash for the given string.
195
- * @param {string} s String to hash
196
- * @param {number|string} salt Salt length to generate or salt to use
197
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash
198
- * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed
199
- * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
200
- * @returns {!Promise} If `callback` has been omitted
201
- * @throws {Error} If `callback` is present but not a function
202
- * @expose
203
- */
204
- bcrypt.hash = function(s, salt, callback, progressCallback) {
205
-
206
- function _async(callback) {
207
- if (typeof s === 'string' && typeof salt === 'number')
208
- bcrypt.genSalt(salt, function(err, salt) {
209
- _hash(s, salt, callback, progressCallback);
210
- });
211
- else if (typeof s === 'string' && typeof salt === 'string')
212
- _hash(s, salt, callback, progressCallback);
213
- else
214
- nextTick(callback.bind(this, Error("Illegal arguments: "+(typeof s)+', '+(typeof salt))));
215
- }
216
-
217
- if (callback) {
218
- if (typeof callback !== 'function')
219
- throw Error("Illegal callback: "+typeof(callback));
220
- _async(callback);
221
- } else
222
- return new Promise(function(resolve, reject) {
223
- _async(function(err, res) {
224
- if (err) {
225
- reject(err);
226
- return;
227
- }
228
- resolve(res);
229
- });
230
- });
231
- };
232
-
233
- /**
234
- * Compares two strings of the same length in constant time.
235
- * @param {string} known Must be of the correct length
236
- * @param {string} unknown Must be the same length as `known`
237
- * @returns {boolean}
238
- * @inner
239
- */
240
- function safeStringCompare(known, unknown) {
241
- var right = 0,
242
- wrong = 0;
243
- for (var i=0, k=known.length; i<k; ++i) {
244
- if (known.charCodeAt(i) === unknown.charCodeAt(i))
245
- ++right;
246
- else
247
- ++wrong;
248
- }
249
- // Prevent removal of unused variables (never true, actually)
250
- if (right < 0)
251
- return false;
252
- return wrong === 0;
253
- }
254
-
255
- /**
256
- * Synchronously tests a string against a hash.
257
- * @param {string} s String to compare
258
- * @param {string} hash Hash to test against
259
- * @returns {boolean} true if matching, otherwise false
260
- * @throws {Error} If an argument is illegal
261
- * @expose
262
- */
263
- bcrypt.compareSync = function(s, hash) {
264
- if (typeof s !== "string" || typeof hash !== "string")
265
- throw Error("Illegal arguments: "+(typeof s)+', '+(typeof hash));
266
- if (hash.length !== 60)
267
- return false;
268
- return safeStringCompare(bcrypt.hashSync(s, hash.substr(0, hash.length-31)), hash);
269
- };
270
-
271
- /**
272
- * Asynchronously compares the given data against the given hash.
273
- * @param {string} s Data to compare
274
- * @param {string} hash Data to be compared to
275
- * @param {function(Error, boolean)=} callback Callback receiving the error, if any, otherwise the result
276
- * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed
277
- * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
278
- * @returns {!Promise} If `callback` has been omitted
279
- * @throws {Error} If `callback` is present but not a function
280
- * @expose
281
- */
282
- bcrypt.compare = function(s, hash, callback, progressCallback) {
283
-
284
- function _async(callback) {
285
- if (typeof s !== "string" || typeof hash !== "string") {
286
- nextTick(callback.bind(this, Error("Illegal arguments: "+(typeof s)+', '+(typeof hash))));
287
- return;
288
- }
289
- if (hash.length !== 60) {
290
- nextTick(callback.bind(this, null, false));
291
- return;
292
- }
293
- bcrypt.hash(s, hash.substr(0, 29), function(err, comp) {
294
- if (err)
295
- callback(err);
296
- else
297
- callback(null, safeStringCompare(comp, hash));
298
- }, progressCallback);
299
- }
300
-
301
- if (callback) {
302
- if (typeof callback !== 'function')
303
- throw Error("Illegal callback: "+typeof(callback));
304
- _async(callback);
305
- } else
306
- return new Promise(function(resolve, reject) {
307
- _async(function(err, res) {
308
- if (err) {
309
- reject(err);
310
- return;
311
- }
312
- resolve(res);
313
- });
314
- });
315
- };
316
-
317
- /**
318
- * Gets the number of rounds used to encrypt the specified hash.
319
- * @param {string} hash Hash to extract the used number of rounds from
320
- * @returns {number} Number of rounds used
321
- * @throws {Error} If `hash` is not a string
322
- * @expose
323
- */
324
- bcrypt.getRounds = function(hash) {
325
- if (typeof hash !== "string")
326
- throw Error("Illegal arguments: "+(typeof hash));
327
- return parseInt(hash.split("$")[2], 10);
328
- };
329
-
330
- /**
331
- * Gets the salt portion from a hash. Does not validate the hash.
332
- * @param {string} hash Hash to extract the salt from
333
- * @returns {string} Extracted salt part
334
- * @throws {Error} If `hash` is not a string or otherwise invalid
335
- * @expose
336
- */
337
- bcrypt.getSalt = function(hash) {
338
- if (typeof hash !== 'string')
339
- throw Error("Illegal arguments: "+(typeof hash));
340
- if (hash.length !== 60)
341
- throw Error("Illegal hash length: "+hash.length+" != 60");
342
- return hash.substring(0, 29);
343
- };
344
-
345
- /**
346
- * Continues with the callback on the next tick.
347
- * @function
348
- * @param {function(...[*])} callback Callback to execute
349
- * @inner
350
- */
351
- var nextTick = typeof process !== 'undefined' && process && typeof process.nextTick === 'function'
352
- ? (typeof setImmediate === 'function' ? setImmediate : process.nextTick)
353
- : setTimeout;
354
-
355
- /**
356
- * Converts a JavaScript string to UTF8 bytes.
357
- * @param {string} str String
358
- * @returns {!Array.<number>} UTF8 bytes
359
- * @inner
360
- */
361
- function stringToBytes(str) {
362
- var out = [],
363
- i = 0;
364
- utfx.encodeUTF16toUTF8(function() {
365
- if (i >= str.length) return null;
366
- return str.charCodeAt(i++);
367
- }, function(b) {
368
- out.push(b);
369
- });
370
- return out;
371
- }
372
-
373
- // A base64 implementation for the bcrypt algorithm. This is partly non-standard.
374
-
375
- /**
376
- * bcrypt's own non-standard base64 dictionary.
377
- * @type {!Array.<string>}
378
- * @const
379
- * @inner
380
- **/
381
- var BASE64_CODE = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split('');
382
-
383
- /**
384
- * @type {!Array.<number>}
385
- * @const
386
- * @inner
387
- **/
388
- var BASE64_INDEX = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
389
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
390
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
391
- 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
392
- -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
393
- 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30,
394
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
395
- 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1];
396
-
397
- /**
398
- * @type {!function(...number):string}
399
- * @inner
400
- */
401
- var stringFromCharCode = String.fromCharCode;
402
-
403
- /**
404
- * Encodes a byte array to base64 with up to len bytes of input.
405
- * @param {!Array.<number>} b Byte array
406
- * @param {number} len Maximum input length
407
- * @returns {string}
408
- * @inner
409
- */
410
- function base64_encode(b, len) {
411
- var off = 0,
412
- rs = [],
413
- c1, c2;
414
- if (len <= 0 || len > b.length)
415
- throw Error("Illegal len: "+len);
416
- while (off < len) {
417
- c1 = b[off++] & 0xff;
418
- rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);
419
- c1 = (c1 & 0x03) << 4;
420
- if (off >= len) {
421
- rs.push(BASE64_CODE[c1 & 0x3f]);
422
- break;
423
- }
424
- c2 = b[off++] & 0xff;
425
- c1 |= (c2 >> 4) & 0x0f;
426
- rs.push(BASE64_CODE[c1 & 0x3f]);
427
- c1 = (c2 & 0x0f) << 2;
428
- if (off >= len) {
429
- rs.push(BASE64_CODE[c1 & 0x3f]);
430
- break;
431
- }
432
- c2 = b[off++] & 0xff;
433
- c1 |= (c2 >> 6) & 0x03;
434
- rs.push(BASE64_CODE[c1 & 0x3f]);
435
- rs.push(BASE64_CODE[c2 & 0x3f]);
436
- }
437
- return rs.join('');
438
- }
439
-
440
- /**
441
- * Decodes a base64 encoded string to up to len bytes of output.
442
- * @param {string} s String to decode
443
- * @param {number} len Maximum output length
444
- * @returns {!Array.<number>}
445
- * @inner
446
- */
447
- function base64_decode(s, len) {
448
- var off = 0,
449
- slen = s.length,
450
- olen = 0,
451
- rs = [],
452
- c1, c2, c3, c4, o, code;
453
- if (len <= 0)
454
- throw Error("Illegal len: "+len);
455
- while (off < slen - 1 && olen < len) {
456
- code = s.charCodeAt(off++);
457
- c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
458
- code = s.charCodeAt(off++);
459
- c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
460
- if (c1 == -1 || c2 == -1)
461
- break;
462
- o = (c1 << 2) >>> 0;
463
- o |= (c2 & 0x30) >> 4;
464
- rs.push(stringFromCharCode(o));
465
- if (++olen >= len || off >= slen)
466
- break;
467
- code = s.charCodeAt(off++);
468
- c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
469
- if (c3 == -1)
470
- break;
471
- o = ((c2 & 0x0f) << 4) >>> 0;
472
- o |= (c3 & 0x3c) >> 2;
473
- rs.push(stringFromCharCode(o));
474
- if (++olen >= len || off >= slen)
475
- break;
476
- code = s.charCodeAt(off++);
477
- c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
478
- o = ((c3 & 0x03) << 6) >>> 0;
479
- o |= c4;
480
- rs.push(stringFromCharCode(o));
481
- ++olen;
482
- }
483
- var res = [];
484
- for (off = 0; off<olen; off++)
485
- res.push(rs[off].charCodeAt(0));
486
- return res;
487
- }
488
-
489
- /**
490
- * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>
491
- * Released under the Apache License, Version 2.0
492
- * see: https://github.com/dcodeIO/utfx for details
493
- */
494
- var utfx = function() {
495
- "use strict";
496
-
497
- /**
498
- * utfx namespace.
499
- * @inner
500
- * @type {!Object.<string,*>}
501
- */
502
- var utfx = {};
503
-
504
- /**
505
- * Maximum valid code point.
506
- * @type {number}
507
- * @const
508
- */
509
- utfx.MAX_CODEPOINT = 0x10FFFF;
510
-
511
- /**
512
- * Encodes UTF8 code points to UTF8 bytes.
513
- * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point
514
- * respectively `null` if there are no more code points left or a single numeric code point.
515
- * @param {!function(number)} dst Bytes destination as a function successively called with the next byte
516
- */
517
- utfx.encodeUTF8 = function(src, dst) {
518
- var cp = null;
519
- if (typeof src === 'number')
520
- cp = src,
521
- src = function() { return null; };
522
- while (cp !== null || (cp = src()) !== null) {
523
- if (cp < 0x80)
524
- dst(cp&0x7F);
525
- else if (cp < 0x800)
526
- dst(((cp>>6)&0x1F)|0xC0),
527
- dst((cp&0x3F)|0x80);
528
- else if (cp < 0x10000)
529
- dst(((cp>>12)&0x0F)|0xE0),
530
- dst(((cp>>6)&0x3F)|0x80),
531
- dst((cp&0x3F)|0x80);
532
- else
533
- dst(((cp>>18)&0x07)|0xF0),
534
- dst(((cp>>12)&0x3F)|0x80),
535
- dst(((cp>>6)&0x3F)|0x80),
536
- dst((cp&0x3F)|0x80);
537
- cp = null;
538
- }
539
- };
540
-
541
- /**
542
- * Decodes UTF8 bytes to UTF8 code points.
543
- * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there
544
- * are no more bytes left.
545
- * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.
546
- * @throws {RangeError} If a starting byte is invalid in UTF8
547
- * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the
548
- * remaining bytes.
549
- */
550
- utfx.decodeUTF8 = function(src, dst) {
551
- var a, b, c, d, fail = function(b) {
552
- b = b.slice(0, b.indexOf(null));
553
- var err = Error(b.toString());
554
- err.name = "TruncatedError";
555
- err['bytes'] = b;
556
- throw err;
557
- };
558
- while ((a = src()) !== null) {
559
- if ((a&0x80) === 0)
560
- dst(a);
561
- else if ((a&0xE0) === 0xC0)
562
- ((b = src()) === null) && fail([a, b]),
563
- dst(((a&0x1F)<<6) | (b&0x3F));
564
- else if ((a&0xF0) === 0xE0)
565
- ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),
566
- dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));
567
- else if ((a&0xF8) === 0xF0)
568
- ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),
569
- dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));
570
- else throw RangeError("Illegal starting byte: "+a);
571
- }
572
- };
573
-
574
- /**
575
- * Converts UTF16 characters to UTF8 code points.
576
- * @param {!function():number|null} src Characters source as a function returning the next char code respectively
577
- * `null` if there are no more characters left.
578
- * @param {!function(number)} dst Code points destination as a function successively called with each converted code
579
- * point.
580
- */
581
- utfx.UTF16toUTF8 = function(src, dst) {
582
- var c1, c2 = null;
583
- while (true) {
584
- if ((c1 = c2 !== null ? c2 : src()) === null)
585
- break;
586
- if (c1 >= 0xD800 && c1 <= 0xDFFF) {
587
- if ((c2 = src()) !== null) {
588
- if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
589
- dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);
590
- c2 = null; continue;
591
- }
592
- }
593
- }
594
- dst(c1);
595
- }
596
- if (c2 !== null) dst(c2);
597
- };
598
-
599
- /**
600
- * Converts UTF8 code points to UTF16 characters.
601
- * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point
602
- * respectively `null` if there are no more code points left or a single numeric code point.
603
- * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.
604
- * @throws {RangeError} If a code point is out of range
605
- */
606
- utfx.UTF8toUTF16 = function(src, dst) {
607
- var cp = null;
608
- if (typeof src === 'number')
609
- cp = src, src = function() { return null; };
610
- while (cp !== null || (cp = src()) !== null) {
611
- if (cp <= 0xFFFF)
612
- dst(cp);
613
- else
614
- cp -= 0x10000,
615
- dst((cp>>10)+0xD800),
616
- dst((cp%0x400)+0xDC00);
617
- cp = null;
618
- }
619
- };
620
-
621
- /**
622
- * Converts and encodes UTF16 characters to UTF8 bytes.
623
- * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`
624
- * if there are no more characters left.
625
- * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.
626
- */
627
- utfx.encodeUTF16toUTF8 = function(src, dst) {
628
- utfx.UTF16toUTF8(src, function(cp) {
629
- utfx.encodeUTF8(cp, dst);
630
- });
631
- };
632
-
633
- /**
634
- * Decodes and converts UTF8 bytes to UTF16 characters.
635
- * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there
636
- * are no more bytes left.
637
- * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.
638
- * @throws {RangeError} If a starting byte is invalid in UTF8
639
- * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.
640
- */
641
- utfx.decodeUTF8toUTF16 = function(src, dst) {
642
- utfx.decodeUTF8(src, function(cp) {
643
- utfx.UTF8toUTF16(cp, dst);
644
- });
645
- };
646
-
647
- /**
648
- * Calculates the byte length of an UTF8 code point.
649
- * @param {number} cp UTF8 code point
650
- * @returns {number} Byte length
651
- */
652
- utfx.calculateCodePoint = function(cp) {
653
- return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;
654
- };
655
-
656
- /**
657
- * Calculates the number of UTF8 bytes required to store UTF8 code points.
658
- * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively
659
- * `null` if there are no more code points left.
660
- * @returns {number} The number of UTF8 bytes required
661
- */
662
- utfx.calculateUTF8 = function(src) {
663
- var cp, l=0;
664
- while ((cp = src()) !== null)
665
- l += utfx.calculateCodePoint(cp);
666
- return l;
667
- };
668
-
669
- /**
670
- * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.
671
- * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively
672
- * `null` if there are no more characters left.
673
- * @returns {!Array.<number>} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.
674
- */
675
- utfx.calculateUTF16asUTF8 = function(src) {
676
- var n=0, l=0;
677
- utfx.UTF16toUTF8(src, function(cp) {
678
- ++n; l += utfx.calculateCodePoint(cp);
679
- });
680
- return [n,l];
681
- };
682
-
683
- return utfx;
684
- }();
685
-
686
- Date.now = Date.now || function() { return +new Date; };
687
-
688
- /**
689
- * @type {number}
690
- * @const
691
- * @inner
692
- */
693
- var BCRYPT_SALT_LEN = 16;
694
-
695
- /**
696
- * @type {number}
697
- * @const
698
- * @inner
699
- */
700
- var GENSALT_DEFAULT_LOG2_ROUNDS = 10;
701
-
702
- /**
703
- * @type {number}
704
- * @const
705
- * @inner
706
- */
707
- var BLOWFISH_NUM_ROUNDS = 16;
708
-
709
- /**
710
- * @type {number}
711
- * @const
712
- * @inner
713
- */
714
- var MAX_EXECUTION_TIME = 100;
715
-
716
- /**
717
- * @type {Array.<number>}
718
- * @const
719
- * @inner
720
- */
721
- var P_ORIG = [
722
- 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822,
723
- 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,
724
- 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5,
725
- 0xb5470917, 0x9216d5d9, 0x8979fb1b
726
- ];
727
-
728
- /**
729
- * @type {Array.<number>}
730
- * @const
731
- * @inner
732
- */
733
- var S_ORIG = [
734
- 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed,
735
- 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
736
- 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3,
737
- 0xf4933d7e, 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
738
- 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0xc5d1b023,
739
- 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
740
- 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda,
741
- 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
742
- 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af,
743
- 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6,
744
- 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381,
745
- 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
746
- 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d,
747
- 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,
748
- 0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a,
749
- 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
750
- 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c,
751
- 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
752
- 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3,
753
- 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
754
- 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724,
755
- 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b,
756
- 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x976ce0bd,
757
- 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
758
- 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f,
759
- 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,
760
- 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39,
761
- 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
762
- 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0x3c7516df,
763
- 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
764
- 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e,
765
- 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
766
- 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98,
767
- 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565,
768
- 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341,
769
- 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
770
- 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0,
771
- 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,
772
- 0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191,
773
- 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
774
- 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0,
775
- 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
776
- 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5,
777
- 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
778
- 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b,
779
- 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f,
780
- 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x11c81968,
781
- 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
782
- 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5,
783
- 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,
784
- 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799,
785
- 0x6e85076a, 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
786
- 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xecaa8c71,
787
- 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,
788
- 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6,
789
- 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
790
- 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f,
791
- 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286,
792
- 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,
793
- 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
794
- 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9,
795
- 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
796
- 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e,
797
- 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
798
- 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290,
799
- 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,
800
- 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6,
801
- 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
802
- 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847,
803
- 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451,
804
- 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x81ac77d6,
805
- 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
806
- 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570,
807
- 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
808
- 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978,
809
- 0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
810
- 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0x5223a708,
811
- 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,
812
- 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185,
813
- 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
814
- 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830,
815
- 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239,
816
- 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab,
817
- 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
818
- 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19,
819
- 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
820
- 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1,
821
- 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
822
- 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef,
823
- 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,
824
- 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15,
825
- 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
826
- 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2,
827
- 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492,
828
- 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x1462b174,
829
- 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
830
- 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759,
831
- 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
832
- 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc,
833
- 0x800bcadc, 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
834
- 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xc5c43465,
835
- 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,
836
- 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c,
837
- 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
838
- 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e,
839
- 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,
840
- 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0,
841
- 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
842
- 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462,
843
- 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,
844
- 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399,
845
- 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
846
- 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74,
847
- 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,
848
- 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7,
849
- 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
850
- 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802,
851
- 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,
852
- 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4,
853
- 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
854
- 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2,
855
- 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,
856
- 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c,
857
- 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
858
- 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341,
859
- 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,
860
- 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b,
861
- 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
862
- 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88,
863
- 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,
864
- 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc,
865
- 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
866
- 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659,
867
- 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,
868
- 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8,
869
- 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
870
- 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be,
871
- 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,
872
- 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255,
873
- 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
874
- 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1,
875
- 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,
876
- 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025,
877
- 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
878
- 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01,
879
- 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,
880
- 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa,
881
- 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
882
- 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409,
883
- 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,
884
- 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3,
885
- 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
886
- 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234,
887
- 0x92638212, 0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf,
888
- 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740,
889
- 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
890
- 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f,
891
- 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,
892
- 0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8,
893
- 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
894
- 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba,
895
- 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
896
- 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69,
897
- 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
898
- 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a,
899
- 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b,
900
- 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x47b0acfd,
901
- 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
902
- 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4,
903
- 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,
904
- 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb,
905
- 0x26dcf319, 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
906
- 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x4de81751,
907
- 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
908
- 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369,
909
- 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
910
- 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd,
911
- 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45,
912
- 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae,
913
- 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
914
- 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08,
915
- 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,
916
- 0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b,
917
- 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
918
- 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e,
919
- 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
920
- 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c,
921
- 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
922
- 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361,
923
- 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c,
924
- 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be,
925
- 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
926
- 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d,
927
- 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,
928
- 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5,
929
- 0xf6fb2299, 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
930
- 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0xde966292,
931
- 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
932
- 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2,
933
- 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
934
- 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c,
935
- 0xf746ce76, 0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8,
936
- 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4,
937
- 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
938
- 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6
939
- ];
940
-
941
- /**
942
- * @type {Array.<number>}
943
- * @const
944
- * @inner
945
- */
946
- var C_ORIG = [
947
- 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944,
948
- 0x6f756274
949
- ];
950
-
951
- /**
952
- * @param {Array.<number>} lr
953
- * @param {number} off
954
- * @param {Array.<number>} P
955
- * @param {Array.<number>} S
956
- * @returns {Array.<number>}
957
- * @inner
958
- */
959
- function _encipher(lr, off, P, S) { // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt
960
- var n,
961
- l = lr[off],
962
- r = lr[off + 1];
963
-
964
- l ^= P[0];
965
-
966
- /*
967
- for (var i=0, k=BLOWFISH_NUM_ROUNDS-2; i<=k;)
968
- // Feistel substitution on left word
969
- n = S[l >>> 24],
970
- n += S[0x100 | ((l >> 16) & 0xff)],
971
- n ^= S[0x200 | ((l >> 8) & 0xff)],
972
- n += S[0x300 | (l & 0xff)],
973
- r ^= n ^ P[++i],
974
- // Feistel substitution on right word
975
- n = S[r >>> 24],
976
- n += S[0x100 | ((r >> 16) & 0xff)],
977
- n ^= S[0x200 | ((r >> 8) & 0xff)],
978
- n += S[0x300 | (r & 0xff)],
979
- l ^= n ^ P[++i];
980
- */
981
-
982
- //The following is an unrolled version of the above loop.
983
- //Iteration 0
984
- n = S[l >>> 24];
985
- n += S[0x100 | ((l >> 16) & 0xff)];
986
- n ^= S[0x200 | ((l >> 8) & 0xff)];
987
- n += S[0x300 | (l & 0xff)];
988
- r ^= n ^ P[1];
989
- n = S[r >>> 24];
990
- n += S[0x100 | ((r >> 16) & 0xff)];
991
- n ^= S[0x200 | ((r >> 8) & 0xff)];
992
- n += S[0x300 | (r & 0xff)];
993
- l ^= n ^ P[2];
994
- //Iteration 1
995
- n = S[l >>> 24];
996
- n += S[0x100 | ((l >> 16) & 0xff)];
997
- n ^= S[0x200 | ((l >> 8) & 0xff)];
998
- n += S[0x300 | (l & 0xff)];
999
- r ^= n ^ P[3];
1000
- n = S[r >>> 24];
1001
- n += S[0x100 | ((r >> 16) & 0xff)];
1002
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1003
- n += S[0x300 | (r & 0xff)];
1004
- l ^= n ^ P[4];
1005
- //Iteration 2
1006
- n = S[l >>> 24];
1007
- n += S[0x100 | ((l >> 16) & 0xff)];
1008
- n ^= S[0x200 | ((l >> 8) & 0xff)];
1009
- n += S[0x300 | (l & 0xff)];
1010
- r ^= n ^ P[5];
1011
- n = S[r >>> 24];
1012
- n += S[0x100 | ((r >> 16) & 0xff)];
1013
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1014
- n += S[0x300 | (r & 0xff)];
1015
- l ^= n ^ P[6];
1016
- //Iteration 3
1017
- n = S[l >>> 24];
1018
- n += S[0x100 | ((l >> 16) & 0xff)];
1019
- n ^= S[0x200 | ((l >> 8) & 0xff)];
1020
- n += S[0x300 | (l & 0xff)];
1021
- r ^= n ^ P[7];
1022
- n = S[r >>> 24];
1023
- n += S[0x100 | ((r >> 16) & 0xff)];
1024
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1025
- n += S[0x300 | (r & 0xff)];
1026
- l ^= n ^ P[8];
1027
- //Iteration 4
1028
- n = S[l >>> 24];
1029
- n += S[0x100 | ((l >> 16) & 0xff)];
1030
- n ^= S[0x200 | ((l >> 8) & 0xff)];
1031
- n += S[0x300 | (l & 0xff)];
1032
- r ^= n ^ P[9];
1033
- n = S[r >>> 24];
1034
- n += S[0x100 | ((r >> 16) & 0xff)];
1035
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1036
- n += S[0x300 | (r & 0xff)];
1037
- l ^= n ^ P[10];
1038
- //Iteration 5
1039
- n = S[l >>> 24];
1040
- n += S[0x100 | ((l >> 16) & 0xff)];
1041
- n ^= S[0x200 | ((l >> 8) & 0xff)];
1042
- n += S[0x300 | (l & 0xff)];
1043
- r ^= n ^ P[11];
1044
- n = S[r >>> 24];
1045
- n += S[0x100 | ((r >> 16) & 0xff)];
1046
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1047
- n += S[0x300 | (r & 0xff)];
1048
- l ^= n ^ P[12];
1049
- //Iteration 6
1050
- n = S[l >>> 24];
1051
- n += S[0x100 | ((l >> 16) & 0xff)];
1052
- n ^= S[0x200 | ((l >> 8) & 0xff)];
1053
- n += S[0x300 | (l & 0xff)];
1054
- r ^= n ^ P[13];
1055
- n = S[r >>> 24];
1056
- n += S[0x100 | ((r >> 16) & 0xff)];
1057
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1058
- n += S[0x300 | (r & 0xff)];
1059
- l ^= n ^ P[14];
1060
- //Iteration 7
1061
- n = S[l >>> 24];
1062
- n += S[0x100 | ((l >> 16) & 0xff)];
1063
- n ^= S[0x200 | ((l >> 8) & 0xff)];
1064
- n += S[0x300 | (l & 0xff)];
1065
- r ^= n ^ P[15];
1066
- n = S[r >>> 24];
1067
- n += S[0x100 | ((r >> 16) & 0xff)];
1068
- n ^= S[0x200 | ((r >> 8) & 0xff)];
1069
- n += S[0x300 | (r & 0xff)];
1070
- l ^= n ^ P[16];
1071
-
1072
- lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];
1073
- lr[off + 1] = l;
1074
- return lr;
1075
- }
1076
-
1077
- /**
1078
- * @param {Array.<number>} data
1079
- * @param {number} offp
1080
- * @returns {{key: number, offp: number}}
1081
- * @inner
1082
- */
1083
- function _streamtoword(data, offp) {
1084
- for (var i = 0, word = 0; i < 4; ++i)
1085
- word = (word << 8) | (data[offp] & 0xff),
1086
- offp = (offp + 1) % data.length;
1087
- return { key: word, offp: offp };
1088
- }
1089
-
1090
- /**
1091
- * @param {Array.<number>} key
1092
- * @param {Array.<number>} P
1093
- * @param {Array.<number>} S
1094
- * @inner
1095
- */
1096
- function _key(key, P, S) {
1097
- var offset = 0,
1098
- lr = [0, 0],
1099
- plen = P.length,
1100
- slen = S.length,
1101
- sw;
1102
- for (var i = 0; i < plen; i++)
1103
- sw = _streamtoword(key, offset),
1104
- offset = sw.offp,
1105
- P[i] = P[i] ^ sw.key;
1106
- for (i = 0; i < plen; i += 2)
1107
- lr = _encipher(lr, 0, P, S),
1108
- P[i] = lr[0],
1109
- P[i + 1] = lr[1];
1110
- for (i = 0; i < slen; i += 2)
1111
- lr = _encipher(lr, 0, P, S),
1112
- S[i] = lr[0],
1113
- S[i + 1] = lr[1];
1114
- }
1115
-
1116
- /**
1117
- * Expensive key schedule Blowfish.
1118
- * @param {Array.<number>} data
1119
- * @param {Array.<number>} key
1120
- * @param {Array.<number>} P
1121
- * @param {Array.<number>} S
1122
- * @inner
1123
- */
1124
- function _ekskey(data, key, P, S) {
1125
- var offp = 0,
1126
- lr = [0, 0],
1127
- plen = P.length,
1128
- slen = S.length,
1129
- sw;
1130
- for (var i = 0; i < plen; i++)
1131
- sw = _streamtoword(key, offp),
1132
- offp = sw.offp,
1133
- P[i] = P[i] ^ sw.key;
1134
- offp = 0;
1135
- for (i = 0; i < plen; i += 2)
1136
- sw = _streamtoword(data, offp),
1137
- offp = sw.offp,
1138
- lr[0] ^= sw.key,
1139
- sw = _streamtoword(data, offp),
1140
- offp = sw.offp,
1141
- lr[1] ^= sw.key,
1142
- lr = _encipher(lr, 0, P, S),
1143
- P[i] = lr[0],
1144
- P[i + 1] = lr[1];
1145
- for (i = 0; i < slen; i += 2)
1146
- sw = _streamtoword(data, offp),
1147
- offp = sw.offp,
1148
- lr[0] ^= sw.key,
1149
- sw = _streamtoword(data, offp),
1150
- offp = sw.offp,
1151
- lr[1] ^= sw.key,
1152
- lr = _encipher(lr, 0, P, S),
1153
- S[i] = lr[0],
1154
- S[i + 1] = lr[1];
1155
- }
1156
-
1157
- /**
1158
- * Internaly crypts a string.
1159
- * @param {Array.<number>} b Bytes to crypt
1160
- * @param {Array.<number>} salt Salt bytes to use
1161
- * @param {number} rounds Number of rounds
1162
- * @param {function(Error, Array.<number>=)=} callback Callback receiving the error, if any, and the resulting bytes. If
1163
- * omitted, the operation will be performed synchronously.
1164
- * @param {function(number)=} progressCallback Callback called with the current progress
1165
- * @returns {!Array.<number>|undefined} Resulting bytes if callback has been omitted, otherwise `undefined`
1166
- * @inner
1167
- */
1168
- function _crypt(b, salt, rounds, callback, progressCallback) {
1169
- var cdata = C_ORIG.slice(),
1170
- clen = cdata.length,
1171
- err;
1172
-
1173
- // Validate
1174
- if (rounds < 4 || rounds > 31) {
1175
- err = Error("Illegal number of rounds (4-31): "+rounds);
1176
- if (callback) {
1177
- nextTick(callback.bind(this, err));
1178
- return;
1179
- } else
1180
- throw err;
1181
- }
1182
- if (salt.length !== BCRYPT_SALT_LEN) {
1183
- err =Error("Illegal salt length: "+salt.length+" != "+BCRYPT_SALT_LEN);
1184
- if (callback) {
1185
- nextTick(callback.bind(this, err));
1186
- return;
1187
- } else
1188
- throw err;
1189
- }
1190
- rounds = (1 << rounds) >>> 0;
1191
-
1192
- var P, S, i = 0, j;
1193
-
1194
- //Use typed arrays when available - huge speedup!
1195
- if (Int32Array) {
1196
- P = new Int32Array(P_ORIG);
1197
- S = new Int32Array(S_ORIG);
1198
- } else {
1199
- P = P_ORIG.slice();
1200
- S = S_ORIG.slice();
1201
- }
1202
-
1203
- _ekskey(salt, b, P, S);
1204
-
1205
- /**
1206
- * Calcualtes the next round.
1207
- * @returns {Array.<number>|undefined} Resulting array if callback has been omitted, otherwise `undefined`
1208
- * @inner
1209
- */
1210
- function next() {
1211
- if (progressCallback)
1212
- progressCallback(i / rounds);
1213
- if (i < rounds) {
1214
- var start = Date.now();
1215
- for (; i < rounds;) {
1216
- i = i + 1;
1217
- _key(b, P, S);
1218
- _key(salt, P, S);
1219
- if (Date.now() - start > MAX_EXECUTION_TIME)
1220
- break;
1221
- }
1222
- } else {
1223
- for (i = 0; i < 64; i++)
1224
- for (j = 0; j < (clen >> 1); j++)
1225
- _encipher(cdata, j << 1, P, S);
1226
- var ret = [];
1227
- for (i = 0; i < clen; i++)
1228
- ret.push(((cdata[i] >> 24) & 0xff) >>> 0),
1229
- ret.push(((cdata[i] >> 16) & 0xff) >>> 0),
1230
- ret.push(((cdata[i] >> 8) & 0xff) >>> 0),
1231
- ret.push((cdata[i] & 0xff) >>> 0);
1232
- if (callback) {
1233
- callback(null, ret);
1234
- return;
1235
- } else
1236
- return ret;
1237
- }
1238
- if (callback)
1239
- nextTick(next);
1240
- }
1241
-
1242
- // Async
1243
- if (typeof callback !== 'undefined') {
1244
- next();
1245
-
1246
- // Sync
1247
- } else {
1248
- var res;
1249
- while (true)
1250
- if (typeof(res = next()) !== 'undefined')
1251
- return res || [];
1252
- }
1253
- }
1254
-
1255
- /**
1256
- * Internally hashes a string.
1257
- * @param {string} s String to hash
1258
- * @param {?string} salt Salt to use, actually never null
1259
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,
1260
- * hashing is perormed synchronously.
1261
- * @param {function(number)=} progressCallback Callback called with the current progress
1262
- * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`
1263
- * @inner
1264
- */
1265
- function _hash(s, salt, callback, progressCallback) {
1266
- var err;
1267
- if (typeof s !== 'string' || typeof salt !== 'string') {
1268
- err = Error("Invalid string / salt: Not a string");
1269
- if (callback) {
1270
- nextTick(callback.bind(this, err));
1271
- return;
1272
- }
1273
- else
1274
- throw err;
1275
- }
1276
-
1277
- // Validate the salt
1278
- var minor, offset;
1279
- if (salt.charAt(0) !== '$' || salt.charAt(1) !== '2') {
1280
- err = Error("Invalid salt version: "+salt.substring(0,2));
1281
- if (callback) {
1282
- nextTick(callback.bind(this, err));
1283
- return;
1284
- }
1285
- else
1286
- throw err;
1287
- }
1288
- if (salt.charAt(2) === '$')
1289
- minor = String.fromCharCode(0),
1290
- offset = 3;
1291
- else {
1292
- minor = salt.charAt(2);
1293
- if ((minor !== 'a' && minor !== 'b' && minor !== 'y') || salt.charAt(3) !== '$') {
1294
- err = Error("Invalid salt revision: "+salt.substring(2,4));
1295
- if (callback) {
1296
- nextTick(callback.bind(this, err));
1297
- return;
1298
- } else
1299
- throw err;
1300
- }
1301
- offset = 4;
1302
- }
1303
-
1304
- // Extract number of rounds
1305
- if (salt.charAt(offset + 2) > '$') {
1306
- err = Error("Missing salt rounds");
1307
- if (callback) {
1308
- nextTick(callback.bind(this, err));
1309
- return;
1310
- } else
1311
- throw err;
1312
- }
1313
- var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,
1314
- r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),
1315
- rounds = r1 + r2,
1316
- real_salt = salt.substring(offset + 3, offset + 25);
1317
- s += minor >= 'a' ? "\x00" : "";
1318
-
1319
- var passwordb = stringToBytes(s),
1320
- saltb = base64_decode(real_salt, BCRYPT_SALT_LEN);
1321
-
1322
- /**
1323
- * Finishes hashing.
1324
- * @param {Array.<number>} bytes Byte array
1325
- * @returns {string}
1326
- * @inner
1327
- */
1328
- function finish(bytes) {
1329
- var res = [];
1330
- res.push("$2");
1331
- if (minor >= 'a')
1332
- res.push(minor);
1333
- res.push("$");
1334
- if (rounds < 10)
1335
- res.push("0");
1336
- res.push(rounds.toString());
1337
- res.push("$");
1338
- res.push(base64_encode(saltb, saltb.length));
1339
- res.push(base64_encode(bytes, C_ORIG.length * 4 - 1));
1340
- return res.join('');
1341
- }
1342
-
1343
- // Sync
1344
- if (typeof callback == 'undefined')
1345
- return finish(_crypt(passwordb, saltb, rounds));
1346
-
1347
- // Async
1348
- else {
1349
- _crypt(passwordb, saltb, rounds, function(err, bytes) {
1350
- if (err)
1351
- callback(err, null);
1352
- else
1353
- callback(null, finish(bytes));
1354
- }, progressCallback);
1355
- }
1356
- }
1357
-
1358
- /**
1359
- * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.
1360
- * @function
1361
- * @param {!Array.<number>} b Byte array
1362
- * @param {number} len Maximum input length
1363
- * @returns {string}
1364
- * @expose
1365
- */
1366
- bcrypt.encodeBase64 = base64_encode;
1367
-
1368
- /**
1369
- * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.
1370
- * @function
1371
- * @param {string} s String to decode
1372
- * @param {number} len Maximum output length
1373
- * @returns {!Array.<number>}
1374
- * @expose
1375
- */
1376
- bcrypt.decodeBase64 = base64_decode;
1377
-
1378
- return bcrypt;
1379
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/dist/bcrypt.min.js DELETED
@@ -1,48 +0,0 @@
1
- /*
2
- bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
3
- Released under the Apache License, Version 2.0
4
- see: https://github.com/dcodeIO/bcrypt.js for details
5
- */
6
- (function(u,r){"function"===typeof define&&define.amd?define([],r):"function"===typeof require&&"object"===typeof module&&module&&module.exports?module.exports=r():(u.dcodeIO=u.dcodeIO||{}).bcrypt=r()})(this,function(){function u(e){if("undefined"!==typeof module&&module&&module.exports)try{return require("crypto").randomBytes(e)}catch(d){}try{var c;(self.crypto||self.msCrypto).getRandomValues(c=new Uint32Array(e));return Array.prototype.slice.call(c)}catch(b){}if(!w)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");
7
- return w(e)}function r(e,d){for(var c=0,b=0,a=0,f=e.length;a<f;++a)e.charCodeAt(a)===d.charCodeAt(a)?++c:++b;return 0>c?!1:0===b}function H(e){var d=[],c=0;I.encodeUTF16toUTF8(function(){return c>=e.length?null:e.charCodeAt(c++)},function(b){d.push(b)});return d}function x(e,d){var c=0,b=[],a,f;if(0>=d||d>e.length)throw Error("Illegal len: "+d);for(;c<d;){a=e[c++]&255;b.push(s[a>>2&63]);a=(a&3)<<4;if(c>=d){b.push(s[a&63]);break}f=e[c++]&255;a|=f>>4&15;b.push(s[a&63]);a=(f&15)<<2;if(c>=d){b.push(s[a&
8
- 63]);break}f=e[c++]&255;a|=f>>6&3;b.push(s[a&63]);b.push(s[f&63])}return b.join("")}function B(e,d){var c=0,b=e.length,a=0,f=[],g,m,h;if(0>=d)throw Error("Illegal len: "+d);for(;c<b-1&&a<d;){h=e.charCodeAt(c++);g=h<q.length?q[h]:-1;h=e.charCodeAt(c++);m=h<q.length?q[h]:-1;if(-1==g||-1==m)break;h=g<<2>>>0;h|=(m&48)>>4;f.push(z(h));if(++a>=d||c>=b)break;h=e.charCodeAt(c++);g=h<q.length?q[h]:-1;if(-1==g)break;h=(m&15)<<4>>>0;h|=(g&60)>>2;f.push(z(h));if(++a>=d||c>=b)break;h=e.charCodeAt(c++);m=h<q.length?
9
- q[h]:-1;h=(g&3)<<6>>>0;h|=m;f.push(z(h));++a}b=[];for(c=0;c<a;c++)b.push(f[c].charCodeAt(0));return b}function v(e,d,c,b){var a,f=e[d],g=e[d+1],f=f^c[0];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^c[1];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[2];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^c[3];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[4];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|
10
- f>>8&255];a+=b[768|f&255];g=g^a^c[5];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[6];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^c[7];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[8];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^c[9];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[10];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^
11
- c[11];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[12];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^c[13];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[14];a=b[f>>>24];a+=b[256|f>>16&255];a^=b[512|f>>8&255];a+=b[768|f&255];g=g^a^c[15];a=b[g>>>24];a+=b[256|g>>16&255];a^=b[512|g>>8&255];a+=b[768|g&255];f=f^a^c[16];e[d]=g^c[17];e[d+1]=f;return e}function t(e,d){for(var c=0,b=0;4>c;++c)b=b<<8|e[d]&255,d=(d+1)%e.length;
12
- return{key:b,offp:d}}function C(e,d,c){for(var b=0,a=[0,0],f=d.length,g=c.length,m,h=0;h<f;h++)m=t(e,b),b=m.offp,d[h]^=m.key;for(h=0;h<f;h+=2)a=v(a,0,d,c),d[h]=a[0],d[h+1]=a[1];for(h=0;h<g;h+=2)a=v(a,0,d,c),c[h]=a[0],c[h+1]=a[1]}function J(e,d,c,b){for(var a=0,f=[0,0],g=c.length,m=b.length,h,l=0;l<g;l++)h=t(d,a),a=h.offp,c[l]^=h.key;for(l=a=0;l<g;l+=2)h=t(e,a),a=h.offp,f[0]^=h.key,h=t(e,a),a=h.offp,f[1]^=h.key,f=v(f,0,c,b),c[l]=f[0],c[l+1]=f[1];for(l=0;l<m;l+=2)h=t(e,a),a=h.offp,f[0]^=h.key,h=t(e,
13
- a),a=h.offp,f[1]^=h.key,f=v(f,0,c,b),b[l]=f[0],b[l+1]=f[1]}function D(e,d,c,b,a){function f(){a&&a(n/c);if(n<c)for(var h=Date.now();n<c&&!(n+=1,C(e,l,k),C(d,l,k),100<Date.now()-h););else{for(n=0;64>n;n++)for(y=0;y<m>>1;y++)v(g,y<<1,l,k);h=[];for(n=0;n<m;n++)h.push((g[n]>>24&255)>>>0),h.push((g[n]>>16&255)>>>0),h.push((g[n]>>8&255)>>>0),h.push((g[n]&255)>>>0);if(b){b(null,h);return}return h}b&&p(f)}var g=E.slice(),m=g.length,h;if(4>c||31<c){h=Error("Illegal number of rounds (4-31): "+c);if(b){p(b.bind(this,
14
- h));return}throw h;}if(16!==d.length){h=Error("Illegal salt length: "+d.length+" != 16");if(b){p(b.bind(this,h));return}throw h;}c=1<<c>>>0;var l,k,n=0,y;Int32Array?(l=new Int32Array(F),k=new Int32Array(G)):(l=F.slice(),k=G.slice());J(d,e,l,k);if("undefined"!==typeof b)f();else for(;;)if("undefined"!==typeof(h=f()))return h||[]}function A(e,d,c,b){function a(a){var b=[];b.push("$2");"a"<=f&&b.push(f);b.push("$");10>l&&b.push("0");b.push(l.toString());b.push("$");b.push(x(k,k.length));b.push(x(a,4*
15
- E.length-1));return b.join("")}if("string"!==typeof e||"string"!==typeof d){b=Error("Invalid string / salt: Not a string");if(c){p(c.bind(this,b));return}throw b;}var f,g;if("$"!==d.charAt(0)||"2"!==d.charAt(1)){b=Error("Invalid salt version: "+d.substring(0,2));if(c){p(c.bind(this,b));return}throw b;}if("$"===d.charAt(2))f=String.fromCharCode(0),g=3;else{f=d.charAt(2);if("a"!==f&&"b"!==f&&"y"!==f||"$"!==d.charAt(3)){b=Error("Invalid salt revision: "+d.substring(2,4));if(c){p(c.bind(this,b));return}throw b;
16
- }g=4}if("$"<d.charAt(g+2)){b=Error("Missing salt rounds");if(c){p(c.bind(this,b));return}throw b;}var m=10*parseInt(d.substring(g,g+1),10),h=parseInt(d.substring(g+1,g+2),10),l=m+h;d=d.substring(g+3,g+25);e=H(e+("a"<=f?"\x00":""));var k=B(d,16);if("undefined"==typeof c)return a(D(e,k,l));D(e,k,l,function(b,d){b?c(b,null):c(null,a(d))},b)}var k={},w=null;try{u(1)}catch(K){}w=null;k.setRandomFallback=function(e){w=e};k.genSaltSync=function(e,d){e=e||10;if("number"!==typeof e)throw Error("Illegal arguments: "+
17
- typeof e+", "+typeof d);4>e?e=4:31<e&&(e=31);var c=[];c.push("$2a$");10>e&&c.push("0");c.push(e.toString());c.push("$");c.push(x(u(16),16));return c.join("")};k.genSalt=function(e,d,c){function b(a){p(function(){try{a(null,k.genSaltSync(e))}catch(b){a(b)}})}"function"===typeof d&&(c=d,d=void 0);"function"===typeof e&&(c=e,e=void 0);if("undefined"===typeof e)e=10;else if("number"!==typeof e)throw Error("illegal arguments: "+typeof e);if(c){if("function"!==typeof c)throw Error("Illegal callback: "+
18
- typeof c);b(c)}else return new Promise(function(a,c){b(function(b,d){b?c(b):a(d)})})};k.hashSync=function(e,d){"undefined"===typeof d&&(d=10);"number"===typeof d&&(d=k.genSaltSync(d));if("string"!==typeof e||"string"!==typeof d)throw Error("Illegal arguments: "+typeof e+", "+typeof d);return A(e,d)};k.hash=function(e,d,c,b){function a(a){"string"===typeof e&&"number"===typeof d?k.genSalt(d,function(c,d){A(e,d,a,b)}):"string"===typeof e&&"string"===typeof d?A(e,d,a,b):p(a.bind(this,Error("Illegal arguments: "+
19
- typeof e+", "+typeof d)))}if(c){if("function"!==typeof c)throw Error("Illegal callback: "+typeof c);a(c)}else return new Promise(function(b,c){a(function(a,d){a?c(a):b(d)})})};k.compareSync=function(e,d){if("string"!==typeof e||"string"!==typeof d)throw Error("Illegal arguments: "+typeof e+", "+typeof d);return 60!==d.length?!1:r(k.hashSync(e,d.substr(0,d.length-31)),d)};k.compare=function(e,d,c,b){function a(a){"string"!==typeof e||"string"!==typeof d?p(a.bind(this,Error("Illegal arguments: "+typeof e+
20
- ", "+typeof d))):60!==d.length?p(a.bind(this,null,!1)):k.hash(e,d.substr(0,29),function(b,c){b?a(b):a(null,r(c,d))},b)}if(c){if("function"!==typeof c)throw Error("Illegal callback: "+typeof c);a(c)}else return new Promise(function(b,c){a(function(a,d){a?c(a):b(d)})})};k.getRounds=function(e){if("string"!==typeof e)throw Error("Illegal arguments: "+typeof e);return parseInt(e.split("$")[2],10)};k.getSalt=function(e){if("string"!==typeof e)throw Error("Illegal arguments: "+typeof e);if(60!==e.length)throw Error("Illegal hash length: "+
21
- e.length+" != 60");return e.substring(0,29)};var p="undefined"!==typeof process&&process&&"function"===typeof process.nextTick?"function"===typeof setImmediate?setImmediate:process.nextTick:setTimeout,s="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),q=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,
22
- 13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],z=String.fromCharCode,I=function(){var e={MAX_CODEPOINT:1114111,encodeUTF8:function(d,c){var b=null;"number"===typeof d&&(b=d,d=function(){return null});for(;null!==b||null!==(b=d());)128>b?c(b&127):(2048>b?c(b>>6&31|192):(65536>b?c(b>>12&15|224):(c(b>>18&7|240),c(b>>12&63|128)),c(b>>6&63|128)),c(b&63|128)),b=null},decodeUTF8:function(d,c){for(var b,
23
- a,f,e,k=function(a){a=a.slice(0,a.indexOf(null));var b=Error(a.toString());b.name="TruncatedError";b.bytes=a;throw b;};null!==(b=d());)if(0===(b&128))c(b);else if(192===(b&224))null===(a=d())&&k([b,a]),c((b&31)<<6|a&63);else if(224===(b&240))null!==(a=d())&&null!==(f=d())||k([b,a,f]),c((b&15)<<12|(a&63)<<6|f&63);else if(240===(b&248))null!==(a=d())&&null!==(f=d())&&null!==(e=d())||k([b,a,f,e]),c((b&7)<<18|(a&63)<<12|(f&63)<<6|e&63);else throw RangeError("Illegal starting byte: "+b);},UTF16toUTF8:function(d,
24
- c){for(var b,a=null;null!==(b=null!==a?a:d());)55296<=b&&57343>=b&&null!==(a=d())&&56320<=a&&57343>=a?(c(1024*(b-55296)+a-56320+65536),a=null):c(b);null!==a&&c(a)},UTF8toUTF16:function(d,c){var b=null;"number"===typeof d&&(b=d,d=function(){return null});for(;null!==b||null!==(b=d());)65535>=b?c(b):(b-=65536,c((b>>10)+55296),c(b%1024+56320)),b=null},encodeUTF16toUTF8:function(d,c){e.UTF16toUTF8(d,function(b){e.encodeUTF8(b,c)})},decodeUTF8toUTF16:function(d,c){e.decodeUTF8(d,function(b){e.UTF8toUTF16(b,
25
- c)})},calculateCodePoint:function(d){return 128>d?1:2048>d?2:65536>d?3:4},calculateUTF8:function(d){for(var c,b=0;null!==(c=d());)b+=e.calculateCodePoint(c);return b},calculateUTF16asUTF8:function(d){var c=0,b=0;e.UTF16toUTF8(d,function(a){++c;b+=e.calculateCodePoint(a)});return[c,b]}};return e}();Date.now=Date.now||function(){return+new Date};var F=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,
26
- 3041331479,2450970073,2306472731],G=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,
27
- 289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,
28
- 1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,
29
- 442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,
30
- 3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,
31
- 48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,
32
- 1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,
33
- 613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,
34
- 2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,
35
- 1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,
36
- 4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,
37
- 2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,
38
- 499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,
39
- 3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,
40
- 309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,
41
- 1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,
42
- 2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,
43
- 2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,
44
- 3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,
45
- 3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,
46
- 3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,
47
- 1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],E=[1332899944,1700884034,1701343084,1684370003,1668446532,
48
- 1869963892];k.encodeBase64=x;k.decodeBase64=B;return k});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/dist/bcrypt.min.js.gz DELETED
Binary file (9.44 kB)
 
node_modules/bcryptjs/dist/bcrypt.min.map DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "version":3,
3
- "file":"",
4
- "lineCount":48,
5
- "mappings":"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",
6
- "sources":["dist/bcrypt.js"],
7
- "names":["global","factory","define","require","module","random","len","e","a","self","Uint32Array","Array","prototype","slice","call","randomFallback","Error","safeStringCompare","known","unknown","right","wrong","i","k","length","charCodeAt","stringToBytes","str","out","utfx","encodeUTF16toUTF8","b","push","base64_encode","off","rs","c1","c2","BASE64_CODE","join","base64_decode","s","slen","olen","o","code","BASE64_INDEX","stringFromCharCode","c3","c4","res","_encipher","lr","P","S","n","l","r","_streamtoword","data","offp","word","key","_key","offset","plen","sw","_ekskey","_crypt","salt","rounds","callback","progressCallback","next","start","Date","now","MAX_EXECUTION_TIME","j","clen","cdata","ret","nextTick","C_ORIG","err","bind","BCRYPT_SALT_LEN","Int32Array","P_ORIG","S_ORIG","_hash","finish","bytes","minor","toString","saltb","charAt","substring","String","fromCharCode","r1","parseInt","r2","real_salt","passwordb","bcrypt","setRandomFallback","bcrypt.setRandomFallback","genSaltSync","bcrypt.genSaltSync","seed_length","GENSALT_DEFAULT_LOG2_ROUNDS","genSalt","bcrypt.genSalt","_async","undefined","Promise","resolve","reject","hashSync","bcrypt.hashSync","hash","bcrypt.hash","compareSync","bcrypt.compareSync","substr","compare","bcrypt.compare","comp","getRounds","bcrypt.getRounds","split","getSalt","bcrypt.getSalt","process","setImmediate","setTimeout","utfx.encodeUTF8","src","dst","cp","utfx.decodeUTF8","c","d","fail","indexOf","name","RangeError","utfx.UTF16toUTF8","utfx.UTF8toUTF16","utfx.encodeUTF16toUTF8","UTF16toUTF8","encodeUTF8","utfx.decodeUTF8toUTF16","decodeUTF8","UTF8toUTF16","utfx.calculateCodePoint","utfx.calculateUTF8","calculateCodePoint","utfx.calculateUTF16asUTF8","encodeBase64","decodeBase64"]
8
- }
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/externs/bcrypt.js DELETED
@@ -1,91 +0,0 @@
1
- /*
2
- * Copyright 2012 The Closure Compiler Authors.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- /**
18
- * @fileoverview Definitions for bcrypt.js 2.
19
- * @externs
20
- * @author Daniel Wirtz <dcode@dcode.io>
21
- */
22
-
23
- /**
24
- * @type {Object.<string,*>}
25
- */
26
- var bcrypt = {};
27
-
28
- /**
29
- * @param {?function(number):!Array.<number>} random
30
- */
31
- bcrypt.setRandomFallback = function(random) {};
32
-
33
- /**
34
- * @param {number=} rounds
35
- * @param {number=} seed_length
36
- * @returns {string}
37
- */
38
- bcrypt.genSaltSync = function(rounds, seed_length) {};
39
-
40
- /**
41
- * @param {(number|function(Error, ?string))=} rounds
42
- * @param {(number|function(Error, ?string))=} seed_length
43
- * @param {function(Error, string=)=} callback
44
- */
45
- bcrypt.genSalt = function(rounds, seed_length, callback) {};
46
-
47
- /**
48
- * @param {string} s
49
- * @param {(number|string)=} salt
50
- * @returns {?string}
51
- */
52
- bcrypt.hashSync = function(s, salt) {};
53
-
54
- /**
55
- * @param {string} s
56
- * @param {number|string} salt
57
- * @param {function(Error, string=)} callback
58
- * @expose
59
- */
60
- bcrypt.hash = function(s, salt, callback) {};
61
-
62
- /**
63
- * @param {string} s
64
- * @param {string} hash
65
- * @returns {boolean}
66
- * @throws {Error}
67
- */
68
- bcrypt.compareSync = function(s, hash) {};
69
-
70
- /**
71
- * @param {string} s
72
- * @param {string} hash
73
- * @param {function(Error, boolean)} callback
74
- * @throws {Error}
75
- */
76
- bcrypt.compare = function(s, hash, callback) {};
77
-
78
- /**
79
- * @param {string} hash
80
- * @returns {number}
81
- * @throws {Error}
82
- */
83
- bcrypt.getRounds = function(hash) {};
84
-
85
- /**
86
- * @param {string} hash
87
- * @returns {string}
88
- * @throws {Error}
89
- * @expose
90
- */
91
- bcrypt.getSalt = function(hash) {};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/externs/minimal-env.js DELETED
@@ -1,98 +0,0 @@
1
- /**
2
- * @fileoverview Minimal environment for bcrypt.js.
3
- * @externs
4
- */
5
-
6
- /**
7
- * @param {string} moduleName
8
- * returns {*}
9
- */
10
- function require(moduleName) {}
11
-
12
- /**
13
- * @constructor
14
- * @private
15
- */
16
- var Module = function() {};
17
-
18
- /**
19
- * @type {*}
20
- */
21
- Module.prototype.exports;
22
-
23
- /**
24
- * @type {Module}
25
- */
26
- var module;
27
-
28
- /**
29
- * @type {string}
30
- */
31
- var __dirname;
32
-
33
- /**
34
- * @type {Object.<string,*>}
35
- */
36
- var process = {};
37
-
38
- /**
39
- * @param {function()} func
40
- */
41
- process.nextTick = function(func) {};
42
-
43
- /**
44
- * @param {string} s
45
- * @constructor
46
- * @extends Array
47
- */
48
- var Buffer = function(s) {};
49
-
50
- /**
51
- BEGIN_NODE_INCLUDE
52
- var crypto = require('crypto');
53
- END_NODE_INCLUDE
54
- */
55
-
56
- /**
57
- * @type {Object.<string,*>}
58
- */
59
- var crypto = {};
60
-
61
- /**
62
- * @param {number} n
63
- * @returns {Array.<number>}
64
- */
65
- crypto.randomBytes = function(n) {};
66
-
67
- /**
68
- * @type {Object.<string,*>}
69
- */
70
- window.crypto = {};
71
-
72
- /**
73
- * @param {Uint8Array|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array} array
74
- */
75
- window.crypto.getRandomValues = function(array) {};
76
-
77
- /**
78
- * @param {string} name
79
- * @param {function(...[*]):*} constructor
80
- */
81
- var define = function(name, constructor) {};
82
-
83
- /**
84
- * @type {boolean}
85
- */
86
- define.amd;
87
-
88
- /**
89
- * @param {...*} var_args
90
- * @returns {string}
91
- */
92
- String.fromCodePoint = function(var_args) {};
93
-
94
- /**
95
- * @param {number} offset
96
- * @returns {number}
97
- */
98
- String.prototype.codePointAt = function(offset) {};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/index.js DELETED
@@ -1,29 +0,0 @@
1
- /*
2
- Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
3
- Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>
4
- Copyright (c) 2013 Daniel Wirtz <dcode@dcode.io>
5
-
6
- Redistribution and use in source and binary forms, with or without
7
- modification, are permitted provided that the following conditions
8
- are met:
9
- 1. Redistributions of source code must retain the above copyright
10
- notice, this list of conditions and the following disclaimer.
11
- 2. Redistributions in binary form must reproduce the above copyright
12
- notice, this list of conditions and the following disclaimer in the
13
- documentation and/or other materials provided with the distribution.
14
- 3. The name of the author may not be used to endorse or promote products
15
- derived from this software without specific prior written permission.
16
-
17
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
- */
28
-
29
- module.exports = require("./dist/bcrypt.js");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/package.json DELETED
@@ -1,47 +0,0 @@
1
- {
2
- "name": "bcryptjs",
3
- "description": "Optimized bcrypt in plain JavaScript with zero dependencies. Compatible to 'bcrypt'.",
4
- "version": "2.4.3",
5
- "author": "Daniel Wirtz <dcode@dcode.io>",
6
- "contributors": [
7
- "Shane Girish <shaneGirish@gmail.com> (https://github.com/shaneGirish)",
8
- "Alex Murray <> (https://github.com/alexmurray)",
9
- "Nicolas Pelletier <> (https://github.com/NicolasPelletier)",
10
- "Josh Rogers <> (https://github.com/geekymole)",
11
- "Noah Isaacson <noah@nisaacson.com> (https://github.com/nisaacson)"
12
- ],
13
- "repository": {
14
- "type": "url",
15
- "url": "https://github.com/dcodeIO/bcrypt.js.git"
16
- },
17
- "bugs": {
18
- "url": "https://github.com/dcodeIO/bcrypt.js/issues"
19
- },
20
- "keywords": [
21
- "bcrypt",
22
- "password",
23
- "auth",
24
- "authentication",
25
- "encryption",
26
- "crypt",
27
- "crypto"
28
- ],
29
- "main": "index.js",
30
- "browser": "dist/bcrypt.js",
31
- "dependencies": {},
32
- "devDependencies": {
33
- "testjs": "~1",
34
- "closurecompiler": "~1",
35
- "metascript": "~0.18",
36
- "bcrypt": "latest",
37
- "utfx": "~1"
38
- },
39
- "license": "MIT",
40
- "scripts": {
41
- "test": "node node_modules/testjs/bin/testjs",
42
- "build": "node scripts/build.js",
43
- "compile": "node node_modules/closurecompiler/bin/ccjs dist/bcrypt.js --compilation_level=SIMPLE_OPTIMIZATIONS --create_source_map=dist/bcrypt.min.map > dist/bcrypt.min.js",
44
- "compress": "gzip -c -9 dist/bcrypt.min.js > dist/bcrypt.min.js.gz",
45
- "make": "npm run build && npm run compile && npm run compress && npm test"
46
- }
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/scripts/build.js DELETED
@@ -1,37 +0,0 @@
1
- var MetaScript = require("metascript"),
2
- path = require("path"),
3
- fs = require("fs");
4
-
5
- var rootDir = path.join(__dirname, ".."),
6
- srcDir = path.join(rootDir, "src"),
7
- distDir = path.join(rootDir, "dist"),
8
- pkg = require(path.join(rootDir, "package.json")),
9
- filename;
10
-
11
- var scope = {
12
- VERSION: pkg.version,
13
- ISAAC: false
14
- };
15
-
16
- // Make standard build
17
- console.log("Building bcrypt.js with scope", JSON.stringify(scope, null, 2));
18
- fs.writeFileSync(
19
- path.join(distDir, "bcrypt.js"),
20
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap.js")), filename, scope, srcDir)
21
- );
22
-
23
- // Make isaac build - see: https://github.com/dcodeIO/bcrypt.js/issues/16
24
- /* scope.ISAAC = true;
25
- console.log("Building bcrypt-isaac.js with scope", JSON.stringify(scope, null, 2));
26
- fs.writeFileSync(
27
- path.join(distDir, "bcrypt-isaac.js"),
28
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "bcrypt.js")), filename, scope, srcDir)
29
- ); */
30
-
31
- // Update bower.json
32
- scope = { VERSION: pkg.version };
33
- console.log("Updating bower.json with scope", JSON.stringify(scope, null, 2));
34
- fs.writeFileSync(
35
- path.join(rootDir, "bower.json"),
36
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "bower.json")), filename, scope, srcDir)
37
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt.js DELETED
@@ -1,327 +0,0 @@
1
- /**
2
- * bcrypt namespace.
3
- * @type {Object.<string,*>}
4
- */
5
- var bcrypt = {};
6
-
7
- /**
8
- * The random implementation to use as a fallback.
9
- * @type {?function(number):!Array.<number>}
10
- * @inner
11
- */
12
- var randomFallback = null;
13
-
14
- /**
15
- * Generates cryptographically secure random bytes.
16
- * @function
17
- * @param {number} len Bytes length
18
- * @returns {!Array.<number>} Random bytes
19
- * @throws {Error} If no random implementation is available
20
- * @inner
21
- */
22
- function random(len) {
23
- /* node */ if (typeof module !== 'undefined' && module && module['exports'])
24
- try {
25
- return require("crypto")['randomBytes'](len);
26
- } catch (e) {}
27
- /* WCA */ try {
28
- var a; (self['crypto']||self['msCrypto'])['getRandomValues'](a = new Uint32Array(len));
29
- return Array.prototype.slice.call(a);
30
- } catch (e) {}
31
- /* fallback */ if (!randomFallback)
32
- throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");
33
- return randomFallback(len);
34
- }
35
-
36
- // Test if any secure randomness source is available
37
- var randomAvailable = false;
38
- try {
39
- random(1);
40
- randomAvailable = true;
41
- } catch (e) {}
42
-
43
- // Default fallback, if any
44
- randomFallback = /*? if (ISAAC) { */function(len) {
45
- for (var a=[], i=0; i<len; ++i)
46
- a[i] = ((0.5 + isaac() * 2.3283064365386963e-10) * 256) | 0;
47
- return a;
48
- };/*? } else { */null;/*? }*/
49
-
50
- /**
51
- * Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto
52
- * API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it
53
- * is seeded properly!
54
- * @param {?function(number):!Array.<number>} random Function taking the number of bytes to generate as its
55
- * sole argument, returning the corresponding array of cryptographically secure random byte values.
56
- * @see http://nodejs.org/api/crypto.html
57
- * @see http://www.w3.org/TR/WebCryptoAPI/
58
- */
59
- bcrypt.setRandomFallback = function(random) {
60
- randomFallback = random;
61
- };
62
-
63
- /**
64
- * Synchronously generates a salt.
65
- * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted
66
- * @param {number=} seed_length Not supported.
67
- * @returns {string} Resulting salt
68
- * @throws {Error} If a random fallback is required but not set
69
- * @expose
70
- */
71
- bcrypt.genSaltSync = function(rounds, seed_length) {
72
- rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;
73
- if (typeof rounds !== 'number')
74
- throw Error("Illegal arguments: "+(typeof rounds)+", "+(typeof seed_length));
75
- if (rounds < 4)
76
- rounds = 4;
77
- else if (rounds > 31)
78
- rounds = 31;
79
- var salt = [];
80
- salt.push("$2a$");
81
- if (rounds < 10)
82
- salt.push("0");
83
- salt.push(rounds.toString());
84
- salt.push('$');
85
- salt.push(base64_encode(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw
86
- return salt.join('');
87
- };
88
-
89
- /**
90
- * Asynchronously generates a salt.
91
- * @param {(number|function(Error, string=))=} rounds Number of rounds to use, defaults to 10 if omitted
92
- * @param {(number|function(Error, string=))=} seed_length Not supported.
93
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting salt
94
- * @returns {!Promise} If `callback` has been omitted
95
- * @throws {Error} If `callback` is present but not a function
96
- * @expose
97
- */
98
- bcrypt.genSalt = function(rounds, seed_length, callback) {
99
- if (typeof seed_length === 'function')
100
- callback = seed_length,
101
- seed_length = undefined; // Not supported.
102
- if (typeof rounds === 'function')
103
- callback = rounds,
104
- rounds = undefined;
105
- if (typeof rounds === 'undefined')
106
- rounds = GENSALT_DEFAULT_LOG2_ROUNDS;
107
- else if (typeof rounds !== 'number')
108
- throw Error("illegal arguments: "+(typeof rounds));
109
-
110
- function _async(callback) {
111
- nextTick(function() { // Pretty thin, but salting is fast enough
112
- try {
113
- callback(null, bcrypt.genSaltSync(rounds));
114
- } catch (err) {
115
- callback(err);
116
- }
117
- });
118
- }
119
-
120
- if (callback) {
121
- if (typeof callback !== 'function')
122
- throw Error("Illegal callback: "+typeof(callback));
123
- _async(callback);
124
- } else
125
- return new Promise(function(resolve, reject) {
126
- _async(function(err, res) {
127
- if (err) {
128
- reject(err);
129
- return;
130
- }
131
- resolve(res);
132
- });
133
- });
134
- };
135
-
136
- /**
137
- * Synchronously generates a hash for the given string.
138
- * @param {string} s String to hash
139
- * @param {(number|string)=} salt Salt length to generate or salt to use, default to 10
140
- * @returns {string} Resulting hash
141
- * @expose
142
- */
143
- bcrypt.hashSync = function(s, salt) {
144
- if (typeof salt === 'undefined')
145
- salt = GENSALT_DEFAULT_LOG2_ROUNDS;
146
- if (typeof salt === 'number')
147
- salt = bcrypt.genSaltSync(salt);
148
- if (typeof s !== 'string' || typeof salt !== 'string')
149
- throw Error("Illegal arguments: "+(typeof s)+', '+(typeof salt));
150
- return _hash(s, salt);
151
- };
152
-
153
- /**
154
- * Asynchronously generates a hash for the given string.
155
- * @param {string} s String to hash
156
- * @param {number|string} salt Salt length to generate or salt to use
157
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash
158
- * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed
159
- * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
160
- * @returns {!Promise} If `callback` has been omitted
161
- * @throws {Error} If `callback` is present but not a function
162
- * @expose
163
- */
164
- bcrypt.hash = function(s, salt, callback, progressCallback) {
165
-
166
- function _async(callback) {
167
- if (typeof s === 'string' && typeof salt === 'number')
168
- bcrypt.genSalt(salt, function(err, salt) {
169
- _hash(s, salt, callback, progressCallback);
170
- });
171
- else if (typeof s === 'string' && typeof salt === 'string')
172
- _hash(s, salt, callback, progressCallback);
173
- else
174
- nextTick(callback.bind(this, Error("Illegal arguments: "+(typeof s)+', '+(typeof salt))));
175
- }
176
-
177
- if (callback) {
178
- if (typeof callback !== 'function')
179
- throw Error("Illegal callback: "+typeof(callback));
180
- _async(callback);
181
- } else
182
- return new Promise(function(resolve, reject) {
183
- _async(function(err, res) {
184
- if (err) {
185
- reject(err);
186
- return;
187
- }
188
- resolve(res);
189
- });
190
- });
191
- };
192
-
193
- /**
194
- * Compares two strings of the same length in constant time.
195
- * @param {string} known Must be of the correct length
196
- * @param {string} unknown Must be the same length as `known`
197
- * @returns {boolean}
198
- * @inner
199
- */
200
- function safeStringCompare(known, unknown) {
201
- var right = 0,
202
- wrong = 0;
203
- for (var i=0, k=known.length; i<k; ++i) {
204
- if (known.charCodeAt(i) === unknown.charCodeAt(i))
205
- ++right;
206
- else
207
- ++wrong;
208
- }
209
- // Prevent removal of unused variables (never true, actually)
210
- if (right < 0)
211
- return false;
212
- return wrong === 0;
213
- }
214
-
215
- /**
216
- * Synchronously tests a string against a hash.
217
- * @param {string} s String to compare
218
- * @param {string} hash Hash to test against
219
- * @returns {boolean} true if matching, otherwise false
220
- * @throws {Error} If an argument is illegal
221
- * @expose
222
- */
223
- bcrypt.compareSync = function(s, hash) {
224
- if (typeof s !== "string" || typeof hash !== "string")
225
- throw Error("Illegal arguments: "+(typeof s)+', '+(typeof hash));
226
- if (hash.length !== 60)
227
- return false;
228
- return safeStringCompare(bcrypt.hashSync(s, hash.substr(0, hash.length-31)), hash);
229
- };
230
-
231
- /**
232
- * Asynchronously compares the given data against the given hash.
233
- * @param {string} s Data to compare
234
- * @param {string} hash Data to be compared to
235
- * @param {function(Error, boolean)=} callback Callback receiving the error, if any, otherwise the result
236
- * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed
237
- * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
238
- * @returns {!Promise} If `callback` has been omitted
239
- * @throws {Error} If `callback` is present but not a function
240
- * @expose
241
- */
242
- bcrypt.compare = function(s, hash, callback, progressCallback) {
243
-
244
- function _async(callback) {
245
- if (typeof s !== "string" || typeof hash !== "string") {
246
- nextTick(callback.bind(this, Error("Illegal arguments: "+(typeof s)+', '+(typeof hash))));
247
- return;
248
- }
249
- if (hash.length !== 60) {
250
- nextTick(callback.bind(this, null, false));
251
- return;
252
- }
253
- bcrypt.hash(s, hash.substr(0, 29), function(err, comp) {
254
- if (err)
255
- callback(err);
256
- else
257
- callback(null, safeStringCompare(comp, hash));
258
- }, progressCallback);
259
- }
260
-
261
- if (callback) {
262
- if (typeof callback !== 'function')
263
- throw Error("Illegal callback: "+typeof(callback));
264
- _async(callback);
265
- } else
266
- return new Promise(function(resolve, reject) {
267
- _async(function(err, res) {
268
- if (err) {
269
- reject(err);
270
- return;
271
- }
272
- resolve(res);
273
- });
274
- });
275
- };
276
-
277
- /**
278
- * Gets the number of rounds used to encrypt the specified hash.
279
- * @param {string} hash Hash to extract the used number of rounds from
280
- * @returns {number} Number of rounds used
281
- * @throws {Error} If `hash` is not a string
282
- * @expose
283
- */
284
- bcrypt.getRounds = function(hash) {
285
- if (typeof hash !== "string")
286
- throw Error("Illegal arguments: "+(typeof hash));
287
- return parseInt(hash.split("$")[2], 10);
288
- };
289
-
290
- /**
291
- * Gets the salt portion from a hash. Does not validate the hash.
292
- * @param {string} hash Hash to extract the salt from
293
- * @returns {string} Extracted salt part
294
- * @throws {Error} If `hash` is not a string or otherwise invalid
295
- * @expose
296
- */
297
- bcrypt.getSalt = function(hash) {
298
- if (typeof hash !== 'string')
299
- throw Error("Illegal arguments: "+(typeof hash));
300
- if (hash.length !== 60)
301
- throw Error("Illegal hash length: "+hash.length+" != 60");
302
- return hash.substring(0, 29);
303
- };
304
-
305
- //? include("bcrypt/util.js");
306
-
307
- //? include("bcrypt/impl.js");
308
-
309
- /**
310
- * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.
311
- * @function
312
- * @param {!Array.<number>} b Byte array
313
- * @param {number} len Maximum input length
314
- * @returns {string}
315
- * @expose
316
- */
317
- bcrypt.encodeBase64 = base64_encode;
318
-
319
- /**
320
- * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.
321
- * @function
322
- * @param {string} s String to decode
323
- * @param {number} len Maximum output length
324
- * @returns {!Array.<number>}
325
- * @expose
326
- */
327
- bcrypt.decodeBase64 = base64_decode;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt/impl.js DELETED
@@ -1,669 +0,0 @@
1
- /**
2
- * @type {number}
3
- * @const
4
- * @inner
5
- */
6
- var BCRYPT_SALT_LEN = 16;
7
-
8
- /**
9
- * @type {number}
10
- * @const
11
- * @inner
12
- */
13
- var GENSALT_DEFAULT_LOG2_ROUNDS = 10;
14
-
15
- /**
16
- * @type {number}
17
- * @const
18
- * @inner
19
- */
20
- var BLOWFISH_NUM_ROUNDS = 16;
21
-
22
- /**
23
- * @type {number}
24
- * @const
25
- * @inner
26
- */
27
- var MAX_EXECUTION_TIME = 100;
28
-
29
- /**
30
- * @type {Array.<number>}
31
- * @const
32
- * @inner
33
- */
34
- var P_ORIG = [
35
- 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822,
36
- 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,
37
- 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5,
38
- 0xb5470917, 0x9216d5d9, 0x8979fb1b
39
- ];
40
-
41
- /**
42
- * @type {Array.<number>}
43
- * @const
44
- * @inner
45
- */
46
- var S_ORIG = [
47
- 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed,
48
- 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
49
- 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3,
50
- 0xf4933d7e, 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
51
- 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0xc5d1b023,
52
- 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
53
- 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda,
54
- 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
55
- 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af,
56
- 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6,
57
- 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381,
58
- 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
59
- 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d,
60
- 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,
61
- 0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a,
62
- 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
63
- 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c,
64
- 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
65
- 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3,
66
- 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
67
- 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724,
68
- 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b,
69
- 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x976ce0bd,
70
- 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
71
- 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f,
72
- 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,
73
- 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39,
74
- 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
75
- 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0x3c7516df,
76
- 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
77
- 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e,
78
- 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
79
- 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98,
80
- 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565,
81
- 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341,
82
- 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
83
- 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0,
84
- 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,
85
- 0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191,
86
- 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
87
- 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0,
88
- 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
89
- 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5,
90
- 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
91
- 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b,
92
- 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f,
93
- 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x11c81968,
94
- 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
95
- 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5,
96
- 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,
97
- 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799,
98
- 0x6e85076a, 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
99
- 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xecaa8c71,
100
- 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,
101
- 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6,
102
- 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
103
- 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f,
104
- 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286,
105
- 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,
106
- 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
107
- 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9,
108
- 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
109
- 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e,
110
- 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
111
- 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290,
112
- 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,
113
- 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6,
114
- 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
115
- 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847,
116
- 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451,
117
- 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x81ac77d6,
118
- 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
119
- 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570,
120
- 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
121
- 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978,
122
- 0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
123
- 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0x5223a708,
124
- 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,
125
- 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185,
126
- 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
127
- 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830,
128
- 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239,
129
- 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab,
130
- 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
131
- 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19,
132
- 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
133
- 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1,
134
- 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
135
- 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef,
136
- 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,
137
- 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15,
138
- 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
139
- 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2,
140
- 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492,
141
- 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x1462b174,
142
- 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
143
- 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759,
144
- 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
145
- 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc,
146
- 0x800bcadc, 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
147
- 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xc5c43465,
148
- 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,
149
- 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c,
150
- 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
151
- 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e,
152
- 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,
153
- 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0,
154
- 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
155
- 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462,
156
- 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,
157
- 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399,
158
- 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
159
- 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74,
160
- 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,
161
- 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7,
162
- 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
163
- 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802,
164
- 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,
165
- 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4,
166
- 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
167
- 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2,
168
- 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,
169
- 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c,
170
- 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
171
- 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341,
172
- 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,
173
- 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b,
174
- 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
175
- 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88,
176
- 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,
177
- 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc,
178
- 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
179
- 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659,
180
- 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,
181
- 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8,
182
- 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
183
- 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be,
184
- 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,
185
- 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255,
186
- 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
187
- 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1,
188
- 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,
189
- 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025,
190
- 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
191
- 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01,
192
- 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,
193
- 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa,
194
- 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
195
- 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409,
196
- 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,
197
- 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3,
198
- 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
199
- 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234,
200
- 0x92638212, 0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf,
201
- 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740,
202
- 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
203
- 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f,
204
- 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,
205
- 0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8,
206
- 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
207
- 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba,
208
- 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
209
- 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69,
210
- 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
211
- 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a,
212
- 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b,
213
- 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x47b0acfd,
214
- 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
215
- 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4,
216
- 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,
217
- 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb,
218
- 0x26dcf319, 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
219
- 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x4de81751,
220
- 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
221
- 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369,
222
- 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
223
- 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd,
224
- 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45,
225
- 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae,
226
- 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
227
- 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08,
228
- 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,
229
- 0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b,
230
- 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
231
- 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e,
232
- 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
233
- 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c,
234
- 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
235
- 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361,
236
- 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c,
237
- 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be,
238
- 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
239
- 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d,
240
- 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,
241
- 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5,
242
- 0xf6fb2299, 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
243
- 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0xde966292,
244
- 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
245
- 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2,
246
- 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
247
- 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c,
248
- 0xf746ce76, 0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8,
249
- 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4,
250
- 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
251
- 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6
252
- ];
253
-
254
- /**
255
- * @type {Array.<number>}
256
- * @const
257
- * @inner
258
- */
259
- var C_ORIG = [
260
- 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944,
261
- 0x6f756274
262
- ];
263
-
264
- /**
265
- * @param {Array.<number>} lr
266
- * @param {number} off
267
- * @param {Array.<number>} P
268
- * @param {Array.<number>} S
269
- * @returns {Array.<number>}
270
- * @inner
271
- */
272
- function _encipher(lr, off, P, S) { // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt
273
- var n,
274
- l = lr[off],
275
- r = lr[off + 1];
276
-
277
- l ^= P[0];
278
-
279
- /*
280
- for (var i=0, k=BLOWFISH_NUM_ROUNDS-2; i<=k;)
281
- // Feistel substitution on left word
282
- n = S[l >>> 24],
283
- n += S[0x100 | ((l >> 16) & 0xff)],
284
- n ^= S[0x200 | ((l >> 8) & 0xff)],
285
- n += S[0x300 | (l & 0xff)],
286
- r ^= n ^ P[++i],
287
- // Feistel substitution on right word
288
- n = S[r >>> 24],
289
- n += S[0x100 | ((r >> 16) & 0xff)],
290
- n ^= S[0x200 | ((r >> 8) & 0xff)],
291
- n += S[0x300 | (r & 0xff)],
292
- l ^= n ^ P[++i];
293
- */
294
-
295
- //The following is an unrolled version of the above loop.
296
- //Iteration 0
297
- n = S[l >>> 24];
298
- n += S[0x100 | ((l >> 16) & 0xff)];
299
- n ^= S[0x200 | ((l >> 8) & 0xff)];
300
- n += S[0x300 | (l & 0xff)];
301
- r ^= n ^ P[1];
302
- n = S[r >>> 24];
303
- n += S[0x100 | ((r >> 16) & 0xff)];
304
- n ^= S[0x200 | ((r >> 8) & 0xff)];
305
- n += S[0x300 | (r & 0xff)];
306
- l ^= n ^ P[2];
307
- //Iteration 1
308
- n = S[l >>> 24];
309
- n += S[0x100 | ((l >> 16) & 0xff)];
310
- n ^= S[0x200 | ((l >> 8) & 0xff)];
311
- n += S[0x300 | (l & 0xff)];
312
- r ^= n ^ P[3];
313
- n = S[r >>> 24];
314
- n += S[0x100 | ((r >> 16) & 0xff)];
315
- n ^= S[0x200 | ((r >> 8) & 0xff)];
316
- n += S[0x300 | (r & 0xff)];
317
- l ^= n ^ P[4];
318
- //Iteration 2
319
- n = S[l >>> 24];
320
- n += S[0x100 | ((l >> 16) & 0xff)];
321
- n ^= S[0x200 | ((l >> 8) & 0xff)];
322
- n += S[0x300 | (l & 0xff)];
323
- r ^= n ^ P[5];
324
- n = S[r >>> 24];
325
- n += S[0x100 | ((r >> 16) & 0xff)];
326
- n ^= S[0x200 | ((r >> 8) & 0xff)];
327
- n += S[0x300 | (r & 0xff)];
328
- l ^= n ^ P[6];
329
- //Iteration 3
330
- n = S[l >>> 24];
331
- n += S[0x100 | ((l >> 16) & 0xff)];
332
- n ^= S[0x200 | ((l >> 8) & 0xff)];
333
- n += S[0x300 | (l & 0xff)];
334
- r ^= n ^ P[7];
335
- n = S[r >>> 24];
336
- n += S[0x100 | ((r >> 16) & 0xff)];
337
- n ^= S[0x200 | ((r >> 8) & 0xff)];
338
- n += S[0x300 | (r & 0xff)];
339
- l ^= n ^ P[8];
340
- //Iteration 4
341
- n = S[l >>> 24];
342
- n += S[0x100 | ((l >> 16) & 0xff)];
343
- n ^= S[0x200 | ((l >> 8) & 0xff)];
344
- n += S[0x300 | (l & 0xff)];
345
- r ^= n ^ P[9];
346
- n = S[r >>> 24];
347
- n += S[0x100 | ((r >> 16) & 0xff)];
348
- n ^= S[0x200 | ((r >> 8) & 0xff)];
349
- n += S[0x300 | (r & 0xff)];
350
- l ^= n ^ P[10];
351
- //Iteration 5
352
- n = S[l >>> 24];
353
- n += S[0x100 | ((l >> 16) & 0xff)];
354
- n ^= S[0x200 | ((l >> 8) & 0xff)];
355
- n += S[0x300 | (l & 0xff)];
356
- r ^= n ^ P[11];
357
- n = S[r >>> 24];
358
- n += S[0x100 | ((r >> 16) & 0xff)];
359
- n ^= S[0x200 | ((r >> 8) & 0xff)];
360
- n += S[0x300 | (r & 0xff)];
361
- l ^= n ^ P[12];
362
- //Iteration 6
363
- n = S[l >>> 24];
364
- n += S[0x100 | ((l >> 16) & 0xff)];
365
- n ^= S[0x200 | ((l >> 8) & 0xff)];
366
- n += S[0x300 | (l & 0xff)];
367
- r ^= n ^ P[13];
368
- n = S[r >>> 24];
369
- n += S[0x100 | ((r >> 16) & 0xff)];
370
- n ^= S[0x200 | ((r >> 8) & 0xff)];
371
- n += S[0x300 | (r & 0xff)];
372
- l ^= n ^ P[14];
373
- //Iteration 7
374
- n = S[l >>> 24];
375
- n += S[0x100 | ((l >> 16) & 0xff)];
376
- n ^= S[0x200 | ((l >> 8) & 0xff)];
377
- n += S[0x300 | (l & 0xff)];
378
- r ^= n ^ P[15];
379
- n = S[r >>> 24];
380
- n += S[0x100 | ((r >> 16) & 0xff)];
381
- n ^= S[0x200 | ((r >> 8) & 0xff)];
382
- n += S[0x300 | (r & 0xff)];
383
- l ^= n ^ P[16];
384
-
385
- lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];
386
- lr[off + 1] = l;
387
- return lr;
388
- }
389
-
390
- /**
391
- * @param {Array.<number>} data
392
- * @param {number} offp
393
- * @returns {{key: number, offp: number}}
394
- * @inner
395
- */
396
- function _streamtoword(data, offp) {
397
- for (var i = 0, word = 0; i < 4; ++i)
398
- word = (word << 8) | (data[offp] & 0xff),
399
- offp = (offp + 1) % data.length;
400
- return { key: word, offp: offp };
401
- }
402
-
403
- /**
404
- * @param {Array.<number>} key
405
- * @param {Array.<number>} P
406
- * @param {Array.<number>} S
407
- * @inner
408
- */
409
- function _key(key, P, S) {
410
- var offset = 0,
411
- lr = [0, 0],
412
- plen = P.length,
413
- slen = S.length,
414
- sw;
415
- for (var i = 0; i < plen; i++)
416
- sw = _streamtoword(key, offset),
417
- offset = sw.offp,
418
- P[i] = P[i] ^ sw.key;
419
- for (i = 0; i < plen; i += 2)
420
- lr = _encipher(lr, 0, P, S),
421
- P[i] = lr[0],
422
- P[i + 1] = lr[1];
423
- for (i = 0; i < slen; i += 2)
424
- lr = _encipher(lr, 0, P, S),
425
- S[i] = lr[0],
426
- S[i + 1] = lr[1];
427
- }
428
-
429
- /**
430
- * Expensive key schedule Blowfish.
431
- * @param {Array.<number>} data
432
- * @param {Array.<number>} key
433
- * @param {Array.<number>} P
434
- * @param {Array.<number>} S
435
- * @inner
436
- */
437
- function _ekskey(data, key, P, S) {
438
- var offp = 0,
439
- lr = [0, 0],
440
- plen = P.length,
441
- slen = S.length,
442
- sw;
443
- for (var i = 0; i < plen; i++)
444
- sw = _streamtoword(key, offp),
445
- offp = sw.offp,
446
- P[i] = P[i] ^ sw.key;
447
- offp = 0;
448
- for (i = 0; i < plen; i += 2)
449
- sw = _streamtoword(data, offp),
450
- offp = sw.offp,
451
- lr[0] ^= sw.key,
452
- sw = _streamtoword(data, offp),
453
- offp = sw.offp,
454
- lr[1] ^= sw.key,
455
- lr = _encipher(lr, 0, P, S),
456
- P[i] = lr[0],
457
- P[i + 1] = lr[1];
458
- for (i = 0; i < slen; i += 2)
459
- sw = _streamtoword(data, offp),
460
- offp = sw.offp,
461
- lr[0] ^= sw.key,
462
- sw = _streamtoword(data, offp),
463
- offp = sw.offp,
464
- lr[1] ^= sw.key,
465
- lr = _encipher(lr, 0, P, S),
466
- S[i] = lr[0],
467
- S[i + 1] = lr[1];
468
- }
469
-
470
- /**
471
- * Internaly crypts a string.
472
- * @param {Array.<number>} b Bytes to crypt
473
- * @param {Array.<number>} salt Salt bytes to use
474
- * @param {number} rounds Number of rounds
475
- * @param {function(Error, Array.<number>=)=} callback Callback receiving the error, if any, and the resulting bytes. If
476
- * omitted, the operation will be performed synchronously.
477
- * @param {function(number)=} progressCallback Callback called with the current progress
478
- * @returns {!Array.<number>|undefined} Resulting bytes if callback has been omitted, otherwise `undefined`
479
- * @inner
480
- */
481
- function _crypt(b, salt, rounds, callback, progressCallback) {
482
- var cdata = C_ORIG.slice(),
483
- clen = cdata.length,
484
- err;
485
-
486
- // Validate
487
- if (rounds < 4 || rounds > 31) {
488
- err = Error("Illegal number of rounds (4-31): "+rounds);
489
- if (callback) {
490
- nextTick(callback.bind(this, err));
491
- return;
492
- } else
493
- throw err;
494
- }
495
- if (salt.length !== BCRYPT_SALT_LEN) {
496
- err =Error("Illegal salt length: "+salt.length+" != "+BCRYPT_SALT_LEN);
497
- if (callback) {
498
- nextTick(callback.bind(this, err));
499
- return;
500
- } else
501
- throw err;
502
- }
503
- rounds = (1 << rounds) >>> 0;
504
-
505
- var P, S, i = 0, j;
506
-
507
- //Use typed arrays when available - huge speedup!
508
- if (Int32Array) {
509
- P = new Int32Array(P_ORIG);
510
- S = new Int32Array(S_ORIG);
511
- } else {
512
- P = P_ORIG.slice();
513
- S = S_ORIG.slice();
514
- }
515
-
516
- _ekskey(salt, b, P, S);
517
-
518
- /**
519
- * Calcualtes the next round.
520
- * @returns {Array.<number>|undefined} Resulting array if callback has been omitted, otherwise `undefined`
521
- * @inner
522
- */
523
- function next() {
524
- if (progressCallback)
525
- progressCallback(i / rounds);
526
- if (i < rounds) {
527
- var start = Date.now();
528
- for (; i < rounds;) {
529
- i = i + 1;
530
- _key(b, P, S);
531
- _key(salt, P, S);
532
- if (Date.now() - start > MAX_EXECUTION_TIME)
533
- break;
534
- }
535
- } else {
536
- for (i = 0; i < 64; i++)
537
- for (j = 0; j < (clen >> 1); j++)
538
- _encipher(cdata, j << 1, P, S);
539
- var ret = [];
540
- for (i = 0; i < clen; i++)
541
- ret.push(((cdata[i] >> 24) & 0xff) >>> 0),
542
- ret.push(((cdata[i] >> 16) & 0xff) >>> 0),
543
- ret.push(((cdata[i] >> 8) & 0xff) >>> 0),
544
- ret.push((cdata[i] & 0xff) >>> 0);
545
- if (callback) {
546
- callback(null, ret);
547
- return;
548
- } else
549
- return ret;
550
- }
551
- if (callback)
552
- nextTick(next);
553
- }
554
-
555
- // Async
556
- if (typeof callback !== 'undefined') {
557
- next();
558
-
559
- // Sync
560
- } else {
561
- var res;
562
- while (true)
563
- if (typeof(res = next()) !== 'undefined')
564
- return res || [];
565
- }
566
- }
567
-
568
- /**
569
- * Internally hashes a string.
570
- * @param {string} s String to hash
571
- * @param {?string} salt Salt to use, actually never null
572
- * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,
573
- * hashing is perormed synchronously.
574
- * @param {function(number)=} progressCallback Callback called with the current progress
575
- * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`
576
- * @inner
577
- */
578
- function _hash(s, salt, callback, progressCallback) {
579
- var err;
580
- if (typeof s !== 'string' || typeof salt !== 'string') {
581
- err = Error("Invalid string / salt: Not a string");
582
- if (callback) {
583
- nextTick(callback.bind(this, err));
584
- return;
585
- }
586
- else
587
- throw err;
588
- }
589
-
590
- // Validate the salt
591
- var minor, offset;
592
- if (salt.charAt(0) !== '$' || salt.charAt(1) !== '2') {
593
- err = Error("Invalid salt version: "+salt.substring(0,2));
594
- if (callback) {
595
- nextTick(callback.bind(this, err));
596
- return;
597
- }
598
- else
599
- throw err;
600
- }
601
- if (salt.charAt(2) === '$')
602
- minor = String.fromCharCode(0),
603
- offset = 3;
604
- else {
605
- minor = salt.charAt(2);
606
- if ((minor !== 'a' && minor !== 'b' && minor !== 'y') || salt.charAt(3) !== '$') {
607
- err = Error("Invalid salt revision: "+salt.substring(2,4));
608
- if (callback) {
609
- nextTick(callback.bind(this, err));
610
- return;
611
- } else
612
- throw err;
613
- }
614
- offset = 4;
615
- }
616
-
617
- // Extract number of rounds
618
- if (salt.charAt(offset + 2) > '$') {
619
- err = Error("Missing salt rounds");
620
- if (callback) {
621
- nextTick(callback.bind(this, err));
622
- return;
623
- } else
624
- throw err;
625
- }
626
- var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,
627
- r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),
628
- rounds = r1 + r2,
629
- real_salt = salt.substring(offset + 3, offset + 25);
630
- s += minor >= 'a' ? "\x00" : "";
631
-
632
- var passwordb = stringToBytes(s),
633
- saltb = base64_decode(real_salt, BCRYPT_SALT_LEN);
634
-
635
- /**
636
- * Finishes hashing.
637
- * @param {Array.<number>} bytes Byte array
638
- * @returns {string}
639
- * @inner
640
- */
641
- function finish(bytes) {
642
- var res = [];
643
- res.push("$2");
644
- if (minor >= 'a')
645
- res.push(minor);
646
- res.push("$");
647
- if (rounds < 10)
648
- res.push("0");
649
- res.push(rounds.toString());
650
- res.push("$");
651
- res.push(base64_encode(saltb, saltb.length));
652
- res.push(base64_encode(bytes, C_ORIG.length * 4 - 1));
653
- return res.join('');
654
- }
655
-
656
- // Sync
657
- if (typeof callback == 'undefined')
658
- return finish(_crypt(passwordb, saltb, rounds));
659
-
660
- // Async
661
- else {
662
- _crypt(passwordb, saltb, rounds, function(err, bytes) {
663
- if (err)
664
- callback(err, null);
665
- else
666
- callback(null, finish(bytes));
667
- }, progressCallback);
668
- }
669
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt/prng/README.md DELETED
@@ -1,5 +0,0 @@
1
- Because of [reasonable security doubts](https://github.com/dcodeIO/bcrypt.js/issues/16), these files, which used to be
2
- a part of bcrypt-isaac.js, are no longer used but are kept here for reference only.
3
-
4
- What is required instead is a proper way to collect entropy sources (using an intermediate stream cipher) which is then
5
- used to seed the CSPRNG. Pick one and use `bcrypt.setRandomFallback` instead.
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt/prng/accum.js DELETED
@@ -1,133 +0,0 @@
1
- /* basic entropy accumulator */
2
- var accum = (function() {
3
-
4
- var pool, // randomness pool
5
- time, // start timestamp
6
- last; // last step timestamp
7
-
8
- /* initialize with default pool */
9
- function init() {
10
- pool = [];
11
- time = new Date().getTime();
12
- last = time;
13
- // use Math.random
14
- pool.push((Math.random() * 0xffffffff)|0);
15
- // use current time
16
- pool.push(time|0);
17
- }
18
-
19
- /* perform one step */
20
- function step() {
21
- if (!to)
22
- return;
23
- if (pool.length >= 255) { // stop at 255 values (1 more is added on fetch)
24
- stop();
25
- return;
26
- }
27
- var now = new Date().getTime();
28
- // use actual time difference
29
- pool.push(now-last);
30
- // always compute, occasionally use Math.random
31
- var rnd = (Math.random() * 0xffffffff)|0;
32
- if (now % 2)
33
- pool[pool.length-1] += rnd;
34
- last = now;
35
- to = setTimeout(step, 100+Math.random()*512); // use hypothetical time difference
36
- }
37
-
38
- var to = null;
39
-
40
- /* starts accumulating */
41
- function start() {
42
- if (to) return;
43
- to = setTimeout(step, 100+Math.random()*512);
44
- if (console.log)
45
- console.log("bcrypt-isaac: collecting entropy...");
46
- // install collectors
47
- if (typeof window !== 'undefined' && window && window.addEventListener)
48
- window.addEventListener("load", loadCollector, false),
49
- window.addEventListener("mousemove", mouseCollector, false),
50
- window.addEventListener("touchmove", touchCollector, false);
51
- else if (typeof document !== 'undefined' && document && document.attachEvent)
52
- document.attachEvent("onload", loadCollector),
53
- document.attachEvent("onmousemove", mouseCollector);
54
- }
55
-
56
- /* stops accumulating */
57
- function stop() {
58
- if (!to) return;
59
- clearTimeout(to); to = null;
60
- // uninstall collectors
61
- if (typeof window !== 'undefined' && window && window.removeEventListener)
62
- window.removeEventListener("load", loadCollector, false),
63
- window.removeEventListener("mousemove", mouseCollector, false),
64
- window.removeEventListener("touchmove", touchCollector, false);
65
- else if (typeof document !== 'undefined' && document && document.detachEvent)
66
- document.detachEvent("onload", loadCollector),
67
- document.detachEvent("onmousemove", mouseCollector);
68
- }
69
-
70
- /* fetches the randomness pool */
71
- function fetch() {
72
- // add overall time difference
73
- pool.push((new Date().getTime()-time)|0);
74
- var res = pool;
75
- init();
76
- if (console.log)
77
- console.log("bcrypt-isaac: using "+res.length+"/256 samples of entropy");
78
- // console.log(res);
79
- return res;
80
- }
81
-
82
- /* adds the current time to the top of the pool */
83
- function addTime() {
84
- pool[pool.length-1] += new Date().getTime() - time;
85
- }
86
-
87
- /* page load collector */
88
- function loadCollector() {
89
- if (!to || pool.length >= 255)
90
- return;
91
- pool.push(0);
92
- addTime();
93
- }
94
-
95
- /* mouse events collector */
96
- function mouseCollector(ev) {
97
- if (!to || pool.length >= 255)
98
- return;
99
- try {
100
- var x = ev.x || ev.clientX || ev.offsetX || 0,
101
- y = ev.y || ev.clientY || ev.offsetY || 0;
102
- if (x != 0 || y != 0)
103
- pool[pool.length-1] += ((x-mouseCollector.last[0]) ^ (y-mouseCollector.last[1])),
104
- addTime(),
105
- mouseCollector.last = [x,y];
106
- } catch (e) {}
107
- }
108
- mouseCollector.last = [0,0];
109
-
110
- /* touch events collector */
111
- function touchCollector(ev) {
112
- if (!to || pool.length >= 255)
113
- return;
114
- try {
115
- var touch = ev.touches[0] || ev.changedTouches[0];
116
- var x = touch.pageX || touch.clientX || 0,
117
- y = touch.pageY || touch.clientY || 0;
118
- if (x != 0 || y != 0)
119
- pool[pool.length-1] += (x-touchCollector.last[0]) ^ (y-touchCollector.last[1]),
120
- addTime(),
121
- touchCollector.last = [x,y];
122
- } catch (e) {}
123
- }
124
- touchCollector.last = [0,0];
125
-
126
- init();
127
- return {
128
- "start": start,
129
- "stop": stop,
130
- "fetch": fetch
131
- }
132
-
133
- })();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt/prng/isaac.js DELETED
@@ -1,140 +0,0 @@
1
- /*
2
- isaac.js Copyright (c) 2012 Yves-Marie K. Rinquin
3
-
4
- Permission is hereby granted, free of charge, to any person obtaining
5
- a copy of this software and associated documentation files (the
6
- "Software"), to deal in the Software without restriction, including
7
- without limitation the rights to use, copy, modify, merge, publish,
8
- distribute, sublicense, and/or sell copies of the Software, and to
9
- permit persons to whom the Software is furnished to do so, subject to
10
- the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be
13
- included in all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- */
23
-
24
- /* isaac module pattern */
25
- var isaac = (function(){
26
-
27
- /* internal states */
28
- var m = Array(256), // internal memory
29
- acc = 0, // accumulator
30
- brs = 0, // last result
31
- cnt = 0, // counter
32
- r = Array(256), // result array
33
- gnt = 0, // generation counter
34
- isd = false; // initially seeded
35
-
36
-
37
- /* 32-bit integer safe adder */
38
- function add(x, y) {
39
- var lsb = (x & 0xffff) + (y & 0xffff),
40
- msb = (x >>> 16) + (y >>> 16) + (lsb >>> 16);
41
- return (msb << 16) | (lsb & 0xffff);
42
- }
43
-
44
- /* initialisation */
45
- function reset() {
46
- acc = brs = cnt = 0;
47
- for (var i = 0; i < 256; ++i)
48
- m[i] = r[i] = 0;
49
- gnt = 0;
50
- }
51
-
52
- /* seeding function */
53
- function seed(s) {
54
- var a, b, c, d, e, f, g, h, i;
55
-
56
- /* seeding the seeds of love */
57
- a = b = c = d = e = f = g = h = 0x9e3779b9; /* the golden ratio */
58
-
59
- if (s && typeof(s) === 'number')
60
- s = [s];
61
-
62
- if (s instanceof Array) {
63
- reset();
64
- for (i = 0; i < s.length; ++i)
65
- r[i & 0xff] += typeof(s[i]) === 'number' ? s[i] : 0;
66
- }
67
-
68
- /* private: seed mixer */
69
- function seed_mix() {
70
- a ^= b << 11; d = add(d, a); b = add(b, c);
71
- b ^= c >>> 2; e = add(e, b); c = add(c, d);
72
- c ^= d << 8; f = add(f, c); d = add(d, e);
73
- d ^= e >>> 16; g = add(g, d); e = add(e, f);
74
- e ^= f << 10; h = add(h, e); f = add(f, g);
75
- f ^= g >>> 4; a = add(a, f); g = add(g, h);
76
- g ^= h << 8; b = add(b, g); h = add(h, a);
77
- h ^= a >>> 9; c = add(c, h); a = add(a, b);
78
- }
79
-
80
- for (i = 0; i < 4; i++) /* scramble it */
81
- seed_mix();
82
-
83
- for (i = 0; i < 256; i += 8) {
84
- if (s) /* use all the information in the seed */
85
- a = add(a, r[i + 0]), b = add(b, r[i + 1]),
86
- c = add(c, r[i + 2]), d = add(d, r[i + 3]),
87
- e = add(e, r[i + 4]), f = add(f, r[i + 5]),
88
- g = add(g, r[i + 6]), h = add(h, r[i + 7]);
89
- seed_mix();
90
- /* fill in m[] with messy stuff */
91
- m[i + 0] = a; m[i + 1] = b; m[i + 2] = c; m[i + 3] = d;
92
- m[i + 4] = e; m[i + 5] = f; m[i + 6] = g; m[i + 7] = h;
93
- }
94
- if (s)
95
- /* do a second pass to make all of the seed affect all of m[] */
96
- for (i = 0; i < 256; i += 8)
97
- a = add(a, m[i + 0]), b = add(b, m[i + 1]),
98
- c = add(c, m[i + 2]), d = add(d, m[i + 3]),
99
- e = add(e, m[i + 4]), f = add(f, m[i + 5]),
100
- g = add(g, m[i + 6]), h = add(h, m[i + 7]),
101
- seed_mix(),
102
- /* fill in m[] with messy stuff (again) */
103
- m[i + 0] = a, m[i + 1] = b, m[i + 2] = c, m[i + 3] = d,
104
- m[i + 4] = e, m[i + 5] = f, m[i + 6] = g, m[i + 7] = h;
105
- prng(); /* fill in the first set of results */
106
- gnt = 256; /* prepare to use the first set of results */;
107
- }
108
-
109
- /* isaac generator, n = number of run */
110
- function prng(n) {
111
- var i, x, y;
112
- n = n && typeof(n) === 'number' ? Math.abs(Math.floor(n)) : 1;
113
- while (n--) {
114
- cnt = add(cnt, 1);
115
- brs = add(brs, cnt);
116
- for(i = 0; i < 256; i++) {
117
- switch(i & 3) {
118
- case 0: acc ^= acc << 13; break;
119
- case 1: acc ^= acc >>> 6; break;
120
- case 2: acc ^= acc << 2; break;
121
- case 3: acc ^= acc >>> 16; break;
122
- }
123
- acc = add(m[(i + 128) & 0xff], acc); x = m[i];
124
- m[i] = y = add(m[(x >>> 2) & 0xff], add(acc, brs));
125
- r[i] = brs = add(m[(y >>> 10) & 0xff], x);
126
- }
127
- }
128
- }
129
-
130
- /* return a random number between */
131
- return function() {
132
- if (!isd) // seed from accumulator
133
- isd = true,
134
- accum.stop(),
135
- seed(accum.fetch());
136
- if (!gnt--)
137
- prng(), gnt = 255;
138
- return r[gnt];
139
- };
140
- })();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt/util.js DELETED
@@ -1,33 +0,0 @@
1
- /**
2
- * Continues with the callback on the next tick.
3
- * @function
4
- * @param {function(...[*])} callback Callback to execute
5
- * @inner
6
- */
7
- var nextTick = typeof process !== 'undefined' && process && typeof process.nextTick === 'function'
8
- ? (typeof setImmediate === 'function' ? setImmediate : process.nextTick)
9
- : setTimeout;
10
-
11
- /**
12
- * Converts a JavaScript string to UTF8 bytes.
13
- * @param {string} str String
14
- * @returns {!Array.<number>} UTF8 bytes
15
- * @inner
16
- */
17
- function stringToBytes(str) {
18
- var out = [],
19
- i = 0;
20
- utfx.encodeUTF16toUTF8(function() {
21
- if (i >= str.length) return null;
22
- return str.charCodeAt(i++);
23
- }, function(b) {
24
- out.push(b);
25
- });
26
- return out;
27
- }
28
-
29
- //? include("util/base64.js");
30
-
31
- //? include("../../node_modules/utfx/dist/utfx-embeddable.js");
32
-
33
- Date.now = Date.now || function() { return +new Date; };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bcrypt/util/base64.js DELETED
@@ -1,115 +0,0 @@
1
- // A base64 implementation for the bcrypt algorithm. This is partly non-standard.
2
-
3
- /**
4
- * bcrypt's own non-standard base64 dictionary.
5
- * @type {!Array.<string>}
6
- * @const
7
- * @inner
8
- **/
9
- var BASE64_CODE = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split('');
10
-
11
- /**
12
- * @type {!Array.<number>}
13
- * @const
14
- * @inner
15
- **/
16
- var BASE64_INDEX = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
17
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
18
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
19
- 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
20
- -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
21
- 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30,
22
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
23
- 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1];
24
-
25
- /**
26
- * @type {!function(...number):string}
27
- * @inner
28
- */
29
- var stringFromCharCode = String.fromCharCode;
30
-
31
- /**
32
- * Encodes a byte array to base64 with up to len bytes of input.
33
- * @param {!Array.<number>} b Byte array
34
- * @param {number} len Maximum input length
35
- * @returns {string}
36
- * @inner
37
- */
38
- function base64_encode(b, len) {
39
- var off = 0,
40
- rs = [],
41
- c1, c2;
42
- if (len <= 0 || len > b.length)
43
- throw Error("Illegal len: "+len);
44
- while (off < len) {
45
- c1 = b[off++] & 0xff;
46
- rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);
47
- c1 = (c1 & 0x03) << 4;
48
- if (off >= len) {
49
- rs.push(BASE64_CODE[c1 & 0x3f]);
50
- break;
51
- }
52
- c2 = b[off++] & 0xff;
53
- c1 |= (c2 >> 4) & 0x0f;
54
- rs.push(BASE64_CODE[c1 & 0x3f]);
55
- c1 = (c2 & 0x0f) << 2;
56
- if (off >= len) {
57
- rs.push(BASE64_CODE[c1 & 0x3f]);
58
- break;
59
- }
60
- c2 = b[off++] & 0xff;
61
- c1 |= (c2 >> 6) & 0x03;
62
- rs.push(BASE64_CODE[c1 & 0x3f]);
63
- rs.push(BASE64_CODE[c2 & 0x3f]);
64
- }
65
- return rs.join('');
66
- }
67
-
68
- /**
69
- * Decodes a base64 encoded string to up to len bytes of output.
70
- * @param {string} s String to decode
71
- * @param {number} len Maximum output length
72
- * @returns {!Array.<number>}
73
- * @inner
74
- */
75
- function base64_decode(s, len) {
76
- var off = 0,
77
- slen = s.length,
78
- olen = 0,
79
- rs = [],
80
- c1, c2, c3, c4, o, code;
81
- if (len <= 0)
82
- throw Error("Illegal len: "+len);
83
- while (off < slen - 1 && olen < len) {
84
- code = s.charCodeAt(off++);
85
- c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
86
- code = s.charCodeAt(off++);
87
- c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
88
- if (c1 == -1 || c2 == -1)
89
- break;
90
- o = (c1 << 2) >>> 0;
91
- o |= (c2 & 0x30) >> 4;
92
- rs.push(stringFromCharCode(o));
93
- if (++olen >= len || off >= slen)
94
- break;
95
- code = s.charCodeAt(off++);
96
- c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
97
- if (c3 == -1)
98
- break;
99
- o = ((c2 & 0x0f) << 4) >>> 0;
100
- o |= (c3 & 0x3c) >> 2;
101
- rs.push(stringFromCharCode(o));
102
- if (++olen >= len || off >= slen)
103
- break;
104
- code = s.charCodeAt(off++);
105
- c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
106
- o = ((c3 & 0x03) << 6) >>> 0;
107
- o |= c4;
108
- rs.push(stringFromCharCode(o));
109
- ++olen;
110
- }
111
- var res = [];
112
- for (off = 0; off<olen; off++)
113
- res.push(rs[off].charCodeAt(0));
114
- return res;
115
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/bower.json DELETED
@@ -1,22 +0,0 @@
1
- {
2
- "name": "bcryptjs",
3
- "description": "Optimized bcrypt in plain JavaScript with zero dependencies.",
4
- "version": /*?== VERSION */,
5
- "main": "dist/bcrypt.min.js",
6
- "license": "New-BSD",
7
- "homepage": "http://dcode.io/",
8
- "repository": {
9
- "type": "git",
10
- "url": "git://github.com/dcodeIO/bcrypt.js.git"
11
- },
12
- "keywords": ["bcrypt", "password", "auth", "authentication", "encryption", "crypt", "crypto"],
13
- "dependencies": {},
14
- "devDependencies": {},
15
- "ignore": [
16
- "**/.*",
17
- "node_modules",
18
- "bower_components",
19
- "test",
20
- "tests"
21
- ]
22
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/src/wrap.js DELETED
@@ -1,50 +0,0 @@
1
- //? if (typeof ISAAC === 'undefined') ISAAC = false;
2
- /*
3
- Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
4
- Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>
5
- Copyright (c) 2014 Daniel Wirtz <dcode@dcode.io>
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions
9
- are met:
10
- 1. Redistributions of source code must retain the above copyright
11
- notice, this list of conditions and the following disclaimer.
12
- 2. Redistributions in binary form must reproduce the above copyright
13
- notice, this list of conditions and the following disclaimer in the
14
- documentation and/or other materials provided with the distribution.
15
- 3. The name of the author may not be used to endorse or promote products
16
- derived from this software without specific prior written permission.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
- */
29
-
30
- /**
31
- * @license bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
32
- * Released under the Apache License, Version 2.0
33
- * see: https://github.com/dcodeIO/bcrypt.js for details
34
- */
35
- (function(global, factory) {
36
-
37
- /* AMD */ if (typeof define === 'function' && define["amd"])
38
- define([], factory);
39
- /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"])
40
- module["exports"] = factory();
41
- /* Global */ else
42
- (global["dcodeIO"] = global["dcodeIO"] || {})["bcrypt"] = factory();
43
-
44
- }(this, function() {
45
- "use strict";
46
-
47
- //? include("bcrypt.js");
48
-
49
- return bcrypt;
50
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/tests/quickbrown.txt DELETED
@@ -1,150 +0,0 @@
1
- Sentences that contain all letters commonly used in a language
2
- --------------------------------------------------------------
3
-
4
- Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2012-04-11
5
-
6
- This is an example of a plain-text file encoded in UTF-8.
7
-
8
-
9
- Danish (da)
10
- ---------
11
-
12
- Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen
13
- Wolther spillede på xylofon.
14
- (= Quiz contestants were eating strawbery with cream while Wolther
15
- the circus clown played on xylophone.)
16
-
17
- German (de)
18
- -----------
19
-
20
- Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
21
- (= Wrongful practicing of xylophone music tortures every larger dwarf)
22
-
23
- Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
24
- (= Twelve boxing fighters hunted Eva across the dike of Sylt)
25
-
26
- Heizölrückstoßabdämpfung
27
- (= fuel oil recoil absorber)
28
- (jqvwxy missing, but all non-ASCII letters in one word)
29
-
30
- Greek (el)
31
- ----------
32
-
33
- Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο
34
- (= No more shall I see acacias or myrtles in the golden clearing)
35
-
36
- Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
37
- (= I uncover the soul-destroying abhorrence)
38
-
39
- English (en)
40
- ------------
41
-
42
- The quick brown fox jumps over the lazy dog
43
-
44
- Spanish (es)
45
- ------------
46
-
47
- El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y
48
- frío, añoraba a su querido cachorro.
49
- (Contains every letter and every accent, but not every combination
50
- of vowel + acute.)
51
-
52
- French (fr)
53
- -----------
54
-
55
- Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
56
- côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce
57
- qui lui permet de penser à la cænogenèse de l'être dont il est question
58
- dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui,
59
- pense-t-il, diminue çà et là la qualité de son œuvre.
60
-
61
- l'île exiguë
62
- Où l'obèse jury mûr
63
- Fête l'haï volapük,
64
- Âne ex aéquo au whist,
65
- Ôtez ce vœu déçu.
66
-
67
- Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
68
- canoë au delà des îles, près du mälström où brûlent les novæ.
69
-
70
- Irish Gaelic (ga)
71
- -----------------
72
-
73
- D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
74
-
75
- Hungarian (hu)
76
- --------------
77
-
78
- Árvíztűrő tükörfúrógép
79
- (= flood-proof mirror-drilling machine, only all non-ASCII letters)
80
-
81
- Icelandic (is)
82
- --------------
83
-
84
- Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
85
-
86
- Sævör grét áðan því úlpan var ónýt
87
- (some ASCII letters missing)
88
-
89
- Japanese (jp)
90
- -------------
91
-
92
- Hiragana: (Iroha)
93
-
94
- いろはにほへとちりぬるを
95
- わかよたれそつねならむ
96
- うゐのおくやまけふこえて
97
- あさきゆめみしゑひもせす
98
-
99
- Katakana:
100
-
101
- イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム
102
- ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン
103
-
104
- Hebrew (iw)
105
- -----------
106
-
107
- ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה
108
-
109
- Polish (pl)
110
- -----------
111
-
112
- Pchnąć w tę łódź jeża lub ośm skrzyń fig
113
- (= To push a hedgehog or eight bins of figs in this boat)
114
-
115
- Russian (ru)
116
- ------------
117
-
118
- В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
119
- (= Would a citrus live in the bushes of south? Yes, but only a fake one!)
120
-
121
- Съешь же ещё этих мягких французских булок да выпей чаю
122
- (= Eat some more of these fresh French loafs and have some tea)
123
-
124
- Thai (th)
125
- ---------
126
-
127
- [--------------------------|------------------------]
128
- ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน
129
- จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
130
- ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย
131
- ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ
132
-
133
- [The copyright for the Thai example is owned by The Computer
134
- Association of Thailand under the Royal Patronage of His Majesty the
135
- King.]
136
-
137
- Turkish (tr)
138
- ------------
139
-
140
- Pijamalı hasta, yağız şoföre çabucak güvendi.
141
- (=Patient with pajamas, trusted swarthy driver quickly)
142
-
143
-
144
- Special thanks to the people from all over the world who contributed
145
- these sentences since 1999.
146
-
147
- A much larger collection of such pangrams is now available at
148
-
149
- http://en.wikipedia.org/wiki/List_of_pangrams
150
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/bcryptjs/tests/suite.js DELETED
@@ -1,197 +0,0 @@
1
- var path = require("path"),
2
- fs = require("fs"),
3
- binding = require("bcrypt"),
4
- bcrypt = require(path.join(__dirname, '..', 'index.js'))/*,
5
- isaac = eval(
6
- fs.readFileSync(path.join(__dirname, "..", "src", "bcrypt", "prng", "accum.js"))+
7
- fs.readFileSync(path.join(__dirname, "..", "src", "bcrypt", "prng", "isaac.js"))+
8
- " accum.start();"+
9
- " isaac"
10
- )*/;
11
-
12
- module.exports = {
13
-
14
- "encodeBase64": function(test) {
15
- var str = bcrypt.encodeBase64([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10], 16);
16
- test.strictEqual(str, "..CA.uOD/eaGAOmJB.yMBu");
17
- test.done();
18
- },
19
-
20
- "decodeBase64": function(test) {
21
- var bytes = bcrypt.decodeBase64("..CA.uOD/eaGAOmJB.yMBv.", 16);
22
- test.deepEqual(bytes, [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F]);
23
- test.done();
24
- },
25
-
26
- "genSaltSync": function(test) {
27
- var salt = bcrypt.genSaltSync(10);
28
- test.ok(salt);
29
- test.ok(typeof salt == 'string');
30
- test.ok(salt.length > 0);
31
- test.done();
32
- },
33
-
34
- "genSalt": function(test) {
35
- bcrypt.genSalt(10, function(err, salt) {
36
- test.ok(salt);
37
- test.ok(typeof salt == 'string');
38
- test.ok(salt.length > 0);
39
- test.done();
40
- });
41
- },
42
-
43
- "hashSync": function(test) {
44
- test.doesNotThrow(function() {
45
- bcrypt.hashSync("hello", 10);
46
- });
47
- test.notEqual(bcrypt.hashSync("hello", 10), bcrypt.hashSync("hello", 10));
48
- test.done();
49
- },
50
-
51
- "hash": function(test) {
52
- bcrypt.hash("hello", 10, function(err, hash) {
53
- test.notOk(err);
54
- test.ok(hash);
55
- test.done();
56
- });
57
- },
58
-
59
- "compareSync": function(test) {
60
- var salt1 = bcrypt.genSaltSync(),
61
- hash1 = bcrypt.hashSync("hello", salt1); // $2a$
62
- var salt2 = bcrypt.genSaltSync().replace(/\$2a\$/, "$2y$"),
63
- hash2 = bcrypt.hashSync("world", salt2);
64
- var salt3 = bcrypt.genSaltSync().replace(/\$2a\$/, "$2b$"),
65
- hash3 = bcrypt.hashSync("hello world", salt3);
66
-
67
- test.strictEqual(hash1.substring(0,4), "$2a$");
68
- test.ok(bcrypt.compareSync("hello", hash1));
69
- test.notOk(bcrypt.compareSync("hello", hash2));
70
- test.notOk(bcrypt.compareSync("hello", hash3));
71
-
72
- test.strictEqual(hash2.substring(0,4), "$2y$");
73
- test.ok(bcrypt.compareSync("world", hash2));
74
- test.notOk(bcrypt.compareSync("world", hash1));
75
- test.notOk(bcrypt.compareSync("world", hash3));
76
-
77
- test.strictEqual(hash3.substring(0,4), "$2b$");
78
- test.ok(bcrypt.compareSync("hello world", hash3));
79
- test.notOk(bcrypt.compareSync("hello world", hash1));
80
- test.notOk(bcrypt.compareSync("hello world", hash2));
81
-
82
- test.done();
83
- },
84
-
85
- "compare": function(test) {
86
- var salt1 = bcrypt.genSaltSync(),
87
- hash1 = bcrypt.hashSync("hello", salt1); // $2a$
88
- var salt2 = bcrypt.genSaltSync();
89
- salt2 = salt2.substring(0,2)+'y'+salt2.substring(3); // $2y$
90
- var hash2 = bcrypt.hashSync("world", salt2);
91
- bcrypt.compare("hello", hash1, function(err, same) {
92
- test.notOk(err);
93
- test.ok(same);
94
- bcrypt.compare("hello", hash2, function(err, same) {
95
- test.notOk(err);
96
- test.notOk(same);
97
- bcrypt.compare("world", hash2, function(err, same) {
98
- test.notOk(err);
99
- test.ok(same);
100
- bcrypt.compare("world", hash1, function(err, same) {
101
- test.notOk(err);
102
- test.notOk(same);
103
- test.done();
104
- });
105
- });
106
- });
107
- });
108
- },
109
-
110
- "getSalt": function(test) {
111
- var hash1 = bcrypt.hashSync("hello", bcrypt.genSaltSync());
112
- var salt = bcrypt.getSalt(hash1);
113
- var hash2 = bcrypt.hashSync("hello", salt);
114
- test.equal(hash1, hash2);
115
- test.done();
116
- },
117
-
118
- "getRounds": function(test) {
119
- var hash1 = bcrypt.hashSync("hello", bcrypt.genSaltSync());
120
- test.equal(bcrypt.getRounds(hash1), 10);
121
- test.done();
122
- },
123
-
124
- "progress": function(test) {
125
- bcrypt.genSalt(12, function(err, salt) {
126
- test.ok(!err);
127
- var progress = [];
128
- bcrypt.hash("hello world", salt, function(err, hash) {
129
- test.ok(!err);
130
- test.ok(typeof hash === 'string');
131
- test.ok(progress.length >= 2);
132
- test.strictEqual(progress[0], 0);
133
- test.strictEqual(progress[progress.length-1], 1);
134
- test.done();
135
- }, function(n) {
136
- progress.push(n);
137
- });
138
- });
139
- },
140
-
141
- "promise": function(test) {
142
- bcrypt.genSalt(10)
143
- .then(function(salt) {
144
- bcrypt.hash("hello", salt)
145
- .then(function(hash) {
146
- test.ok(hash);
147
- bcrypt.compare("hello", hash)
148
- .then(function(result) {
149
- test.ok(result);
150
- bcrypt.genSalt(/* no args */)
151
- .then(function(salt) {
152
- test.ok(salt);
153
- test.done();
154
- }, function(err) {
155
- test.fail(err, null, "promise rejected");
156
- });
157
- }, function(err) {
158
- test.fail(err, null, "promise rejected");
159
- });
160
- }, function(err) {
161
- test.fail(err, null, 'promise rejected');
162
- });
163
- }, function(err) {
164
- test.fail(err, null, "promise rejected");
165
- });
166
- },
167
-
168
- "compat": {
169
- "quickbrown": function(test) {
170
- var pass = fs.readFileSync(path.join(__dirname, "quickbrown.txt"))+"",
171
- salt = bcrypt.genSaltSync(),
172
- hash1 = binding.hashSync(pass, salt),
173
- hash2 = bcrypt.hashSync(pass, salt);
174
- test.equal(hash1, hash2);
175
- test.done();
176
- },
177
-
178
- "roundsOOB": function(test) {
179
- var salt1 = bcrypt.genSaltSync(0), // $10$ like not set
180
- salt2 = binding.genSaltSync(0);
181
- test.strictEqual(salt1.substring(0, 7), "$2a$10$");
182
- test.strictEqual(salt2.substring(0, 7), "$2a$10$");
183
-
184
- salt1 = bcrypt.genSaltSync(3); // $04$ is lower cap
185
- salt2 = bcrypt.genSaltSync(3);
186
- test.strictEqual(salt1.substring(0, 7), "$2a$04$");
187
- test.strictEqual(salt2.substring(0, 7), "$2a$04$");
188
-
189
- salt1 = bcrypt.genSaltSync(32); // $31$ is upper cap
190
- salt2 = bcrypt.genSaltSync(32);
191
- test.strictEqual(salt1.substring(0, 7), "$2a$31$");
192
- test.strictEqual(salt2.substring(0, 7), "$2a$31$");
193
-
194
- test.done();
195
- }
196
- }
197
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/HISTORY.md DELETED
@@ -1,686 +0,0 @@
1
- 1.20.5 / 2026-04-24
2
- ===================
3
- * refactor(json): simplify strict mode error string construction
4
- * fix: extended urlencoded parsing of arrays with >100 elements (#716)
5
- * deps: qs@~6.15.1
6
-
7
- 1.20.4 / 2025-12-01
8
- ===================
9
-
10
- * deps: qs@~6.14.0
11
- * deps: use tilde notation for dependencies
12
- * deps: http-errors@~2.0.1
13
- * deps: raw-body@~2.5.3
14
-
15
- 1.20.3 / 2024-09-10
16
- ===================
17
-
18
- * deps: qs@6.13.0
19
- * add `depth` option to customize the depth level in the parser
20
- * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`)
21
-
22
- 1.20.2 / 2023-02-21
23
- ===================
24
-
25
- * Fix strict json error message on Node.js 19+
26
- * deps: content-type@~1.0.5
27
- - perf: skip value escaping when unnecessary
28
- * deps: raw-body@2.5.2
29
-
30
- 1.20.1 / 2022-10-06
31
- ===================
32
-
33
- * deps: qs@6.11.0
34
- * perf: remove unnecessary object clone
35
-
36
- 1.20.0 / 2022-04-02
37
- ===================
38
-
39
- * Fix error message for json parse whitespace in `strict`
40
- * Fix internal error when inflated body exceeds limit
41
- * Prevent loss of async hooks context
42
- * Prevent hanging when request already read
43
- * deps: depd@2.0.0
44
- - Replace internal `eval` usage with `Function` constructor
45
- - Use instance methods on `process` to check for listeners
46
- * deps: http-errors@2.0.0
47
- - deps: depd@2.0.0
48
- - deps: statuses@2.0.1
49
- * deps: on-finished@2.4.1
50
- * deps: qs@6.10.3
51
- * deps: raw-body@2.5.1
52
- - deps: http-errors@2.0.0
53
-
54
- 1.19.2 / 2022-02-15
55
- ===================
56
-
57
- * deps: bytes@3.1.2
58
- * deps: qs@6.9.7
59
- * Fix handling of `__proto__` keys
60
- * deps: raw-body@2.4.3
61
- - deps: bytes@3.1.2
62
-
63
- 1.19.1 / 2021-12-10
64
- ===================
65
-
66
- * deps: bytes@3.1.1
67
- * deps: http-errors@1.8.1
68
- - deps: inherits@2.0.4
69
- - deps: toidentifier@1.0.1
70
- - deps: setprototypeof@1.2.0
71
- * deps: qs@6.9.6
72
- * deps: raw-body@2.4.2
73
- - deps: bytes@3.1.1
74
- - deps: http-errors@1.8.1
75
- * deps: safe-buffer@5.2.1
76
- * deps: type-is@~1.6.18
77
-
78
- 1.19.0 / 2019-04-25
79
- ===================
80
-
81
- * deps: bytes@3.1.0
82
- - Add petabyte (`pb`) support
83
- * deps: http-errors@1.7.2
84
- - Set constructor name when possible
85
- - deps: setprototypeof@1.1.1
86
- - deps: statuses@'>= 1.5.0 < 2'
87
- * deps: iconv-lite@0.4.24
88
- - Added encoding MIK
89
- * deps: qs@6.7.0
90
- - Fix parsing array brackets after index
91
- * deps: raw-body@2.4.0
92
- - deps: bytes@3.1.0
93
- - deps: http-errors@1.7.2
94
- - deps: iconv-lite@0.4.24
95
- * deps: type-is@~1.6.17
96
- - deps: mime-types@~2.1.24
97
- - perf: prevent internal `throw` on invalid type
98
-
99
- 1.18.3 / 2018-05-14
100
- ===================
101
-
102
- * Fix stack trace for strict json parse error
103
- * deps: depd@~1.1.2
104
- - perf: remove argument reassignment
105
- * deps: http-errors@~1.6.3
106
- - deps: depd@~1.1.2
107
- - deps: setprototypeof@1.1.0
108
- - deps: statuses@'>= 1.3.1 < 2'
109
- * deps: iconv-lite@0.4.23
110
- - Fix loading encoding with year appended
111
- - Fix deprecation warnings on Node.js 10+
112
- * deps: qs@6.5.2
113
- * deps: raw-body@2.3.3
114
- - deps: http-errors@1.6.3
115
- - deps: iconv-lite@0.4.23
116
- * deps: type-is@~1.6.16
117
- - deps: mime-types@~2.1.18
118
-
119
- 1.18.2 / 2017-09-22
120
- ===================
121
-
122
- * deps: debug@2.6.9
123
- * perf: remove argument reassignment
124
-
125
- 1.18.1 / 2017-09-12
126
- ===================
127
-
128
- * deps: content-type@~1.0.4
129
- - perf: remove argument reassignment
130
- - perf: skip parameter parsing when no parameters
131
- * deps: iconv-lite@0.4.19
132
- - Fix ISO-8859-1 regression
133
- - Update Windows-1255
134
- * deps: qs@6.5.1
135
- - Fix parsing & compacting very deep objects
136
- * deps: raw-body@2.3.2
137
- - deps: iconv-lite@0.4.19
138
-
139
- 1.18.0 / 2017-09-08
140
- ===================
141
-
142
- * Fix JSON strict violation error to match native parse error
143
- * Include the `body` property on verify errors
144
- * Include the `type` property on all generated errors
145
- * Use `http-errors` to set status code on errors
146
- * deps: bytes@3.0.0
147
- * deps: debug@2.6.8
148
- * deps: depd@~1.1.1
149
- - Remove unnecessary `Buffer` loading
150
- * deps: http-errors@~1.6.2
151
- - deps: depd@1.1.1
152
- * deps: iconv-lite@0.4.18
153
- - Add support for React Native
154
- - Add a warning if not loaded as utf-8
155
- - Fix CESU-8 decoding in Node.js 8
156
- - Improve speed of ISO-8859-1 encoding
157
- * deps: qs@6.5.0
158
- * deps: raw-body@2.3.1
159
- - Use `http-errors` for standard emitted errors
160
- - deps: bytes@3.0.0
161
- - deps: iconv-lite@0.4.18
162
- - perf: skip buffer decoding on overage chunk
163
- * perf: prevent internal `throw` when missing charset
164
-
165
- 1.17.2 / 2017-05-17
166
- ===================
167
-
168
- * deps: debug@2.6.7
169
- - Fix `DEBUG_MAX_ARRAY_LENGTH`
170
- - deps: ms@2.0.0
171
- * deps: type-is@~1.6.15
172
- - deps: mime-types@~2.1.15
173
-
174
- 1.17.1 / 2017-03-06
175
- ===================
176
-
177
- * deps: qs@6.4.0
178
- - Fix regression parsing keys starting with `[`
179
-
180
- 1.17.0 / 2017-03-01
181
- ===================
182
-
183
- * deps: http-errors@~1.6.1
184
- - Make `message` property enumerable for `HttpError`s
185
- - deps: setprototypeof@1.0.3
186
- * deps: qs@6.3.1
187
- - Fix compacting nested arrays
188
-
189
- 1.16.1 / 2017-02-10
190
- ===================
191
-
192
- * deps: debug@2.6.1
193
- - Fix deprecation messages in WebStorm and other editors
194
- - Undeprecate `DEBUG_FD` set to `1` or `2`
195
-
196
- 1.16.0 / 2017-01-17
197
- ===================
198
-
199
- * deps: debug@2.6.0
200
- - Allow colors in workers
201
- - Deprecated `DEBUG_FD` environment variable
202
- - Fix error when running under React Native
203
- - Use same color for same namespace
204
- - deps: ms@0.7.2
205
- * deps: http-errors@~1.5.1
206
- - deps: inherits@2.0.3
207
- - deps: setprototypeof@1.0.2
208
- - deps: statuses@'>= 1.3.1 < 2'
209
- * deps: iconv-lite@0.4.15
210
- - Added encoding MS-31J
211
- - Added encoding MS-932
212
- - Added encoding MS-936
213
- - Added encoding MS-949
214
- - Added encoding MS-950
215
- - Fix GBK/GB18030 handling of Euro character
216
- * deps: qs@6.2.1
217
- - Fix array parsing from skipping empty values
218
- * deps: raw-body@~2.2.0
219
- - deps: iconv-lite@0.4.15
220
- * deps: type-is@~1.6.14
221
- - deps: mime-types@~2.1.13
222
-
223
- 1.15.2 / 2016-06-19
224
- ===================
225
-
226
- * deps: bytes@2.4.0
227
- * deps: content-type@~1.0.2
228
- - perf: enable strict mode
229
- * deps: http-errors@~1.5.0
230
- - Use `setprototypeof` module to replace `__proto__` setting
231
- - deps: statuses@'>= 1.3.0 < 2'
232
- - perf: enable strict mode
233
- * deps: qs@6.2.0
234
- * deps: raw-body@~2.1.7
235
- - deps: bytes@2.4.0
236
- - perf: remove double-cleanup on happy path
237
- * deps: type-is@~1.6.13
238
- - deps: mime-types@~2.1.11
239
-
240
- 1.15.1 / 2016-05-05
241
- ===================
242
-
243
- * deps: bytes@2.3.0
244
- - Drop partial bytes on all parsed units
245
- - Fix parsing byte string that looks like hex
246
- * deps: raw-body@~2.1.6
247
- - deps: bytes@2.3.0
248
- * deps: type-is@~1.6.12
249
- - deps: mime-types@~2.1.10
250
-
251
- 1.15.0 / 2016-02-10
252
- ===================
253
-
254
- * deps: http-errors@~1.4.0
255
- - Add `HttpError` export, for `err instanceof createError.HttpError`
256
- - deps: inherits@2.0.1
257
- - deps: statuses@'>= 1.2.1 < 2'
258
- * deps: qs@6.1.0
259
- * deps: type-is@~1.6.11
260
- - deps: mime-types@~2.1.9
261
-
262
- 1.14.2 / 2015-12-16
263
- ===================
264
-
265
- * deps: bytes@2.2.0
266
- * deps: iconv-lite@0.4.13
267
- * deps: qs@5.2.0
268
- * deps: raw-body@~2.1.5
269
- - deps: bytes@2.2.0
270
- - deps: iconv-lite@0.4.13
271
- * deps: type-is@~1.6.10
272
- - deps: mime-types@~2.1.8
273
-
274
- 1.14.1 / 2015-09-27
275
- ===================
276
-
277
- * Fix issue where invalid charset results in 400 when `verify` used
278
- * deps: iconv-lite@0.4.12
279
- - Fix CESU-8 decoding in Node.js 4.x
280
- * deps: raw-body@~2.1.4
281
- - Fix masking critical errors from `iconv-lite`
282
- - deps: iconv-lite@0.4.12
283
- * deps: type-is@~1.6.9
284
- - deps: mime-types@~2.1.7
285
-
286
- 1.14.0 / 2015-09-16
287
- ===================
288
-
289
- * Fix JSON strict parse error to match syntax errors
290
- * Provide static `require` analysis in `urlencoded` parser
291
- * deps: depd@~1.1.0
292
- - Support web browser loading
293
- * deps: qs@5.1.0
294
- * deps: raw-body@~2.1.3
295
- - Fix sync callback when attaching data listener causes sync read
296
- * deps: type-is@~1.6.8
297
- - Fix type error when given invalid type to match against
298
- - deps: mime-types@~2.1.6
299
-
300
- 1.13.3 / 2015-07-31
301
- ===================
302
-
303
- * deps: type-is@~1.6.6
304
- - deps: mime-types@~2.1.4
305
-
306
- 1.13.2 / 2015-07-05
307
- ===================
308
-
309
- * deps: iconv-lite@0.4.11
310
- * deps: qs@4.0.0
311
- - Fix dropping parameters like `hasOwnProperty`
312
- - Fix user-visible incompatibilities from 3.1.0
313
- - Fix various parsing edge cases
314
- * deps: raw-body@~2.1.2
315
- - Fix error stack traces to skip `makeError`
316
- - deps: iconv-lite@0.4.11
317
- * deps: type-is@~1.6.4
318
- - deps: mime-types@~2.1.2
319
- - perf: enable strict mode
320
- - perf: remove argument reassignment
321
-
322
- 1.13.1 / 2015-06-16
323
- ===================
324
-
325
- * deps: qs@2.4.2
326
- - Downgraded from 3.1.0 because of user-visible incompatibilities
327
-
328
- 1.13.0 / 2015-06-14
329
- ===================
330
-
331
- * Add `statusCode` property on `Error`s, in addition to `status`
332
- * Change `type` default to `application/json` for JSON parser
333
- * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser
334
- * Provide static `require` analysis
335
- * Use the `http-errors` module to generate errors
336
- * deps: bytes@2.1.0
337
- - Slight optimizations
338
- * deps: iconv-lite@0.4.10
339
- - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails
340
- - Leading BOM is now removed when decoding
341
- * deps: on-finished@~2.3.0
342
- - Add defined behavior for HTTP `CONNECT` requests
343
- - Add defined behavior for HTTP `Upgrade` requests
344
- - deps: ee-first@1.1.1
345
- * deps: qs@3.1.0
346
- - Fix dropping parameters like `hasOwnProperty`
347
- - Fix various parsing edge cases
348
- - Parsed object now has `null` prototype
349
- * deps: raw-body@~2.1.1
350
- - Use `unpipe` module for unpiping requests
351
- - deps: iconv-lite@0.4.10
352
- * deps: type-is@~1.6.3
353
- - deps: mime-types@~2.1.1
354
- - perf: reduce try block size
355
- - perf: remove bitwise operations
356
- * perf: enable strict mode
357
- * perf: remove argument reassignment
358
- * perf: remove delete call
359
-
360
- 1.12.4 / 2015-05-10
361
- ===================
362
-
363
- * deps: debug@~2.2.0
364
- * deps: qs@2.4.2
365
- - Fix allowing parameters like `constructor`
366
- * deps: on-finished@~2.2.1
367
- * deps: raw-body@~2.0.1
368
- - Fix a false-positive when unpiping in Node.js 0.8
369
- - deps: bytes@2.0.1
370
- * deps: type-is@~1.6.2
371
- - deps: mime-types@~2.0.11
372
-
373
- 1.12.3 / 2015-04-15
374
- ===================
375
-
376
- * Slight efficiency improvement when not debugging
377
- * deps: depd@~1.0.1
378
- * deps: iconv-lite@0.4.8
379
- - Add encoding alias UNICODE-1-1-UTF-7
380
- * deps: raw-body@1.3.4
381
- - Fix hanging callback if request aborts during read
382
- - deps: iconv-lite@0.4.8
383
-
384
- 1.12.2 / 2015-03-16
385
- ===================
386
-
387
- * deps: qs@2.4.1
388
- - Fix error when parameter `hasOwnProperty` is present
389
-
390
- 1.12.1 / 2015-03-15
391
- ===================
392
-
393
- * deps: debug@~2.1.3
394
- - Fix high intensity foreground color for bold
395
- - deps: ms@0.7.0
396
- * deps: type-is@~1.6.1
397
- - deps: mime-types@~2.0.10
398
-
399
- 1.12.0 / 2015-02-13
400
- ===================
401
-
402
- * add `debug` messages
403
- * accept a function for the `type` option
404
- * use `content-type` to parse `Content-Type` headers
405
- * deps: iconv-lite@0.4.7
406
- - Gracefully support enumerables on `Object.prototype`
407
- * deps: raw-body@1.3.3
408
- - deps: iconv-lite@0.4.7
409
- * deps: type-is@~1.6.0
410
- - fix argument reassignment
411
- - fix false-positives in `hasBody` `Transfer-Encoding` check
412
- - support wildcard for both type and subtype (`*/*`)
413
- - deps: mime-types@~2.0.9
414
-
415
- 1.11.0 / 2015-01-30
416
- ===================
417
-
418
- * make internal `extended: true` depth limit infinity
419
- * deps: type-is@~1.5.6
420
- - deps: mime-types@~2.0.8
421
-
422
- 1.10.2 / 2015-01-20
423
- ===================
424
-
425
- * deps: iconv-lite@0.4.6
426
- - Fix rare aliases of single-byte encodings
427
- * deps: raw-body@1.3.2
428
- - deps: iconv-lite@0.4.6
429
-
430
- 1.10.1 / 2015-01-01
431
- ===================
432
-
433
- * deps: on-finished@~2.2.0
434
- * deps: type-is@~1.5.5
435
- - deps: mime-types@~2.0.7
436
-
437
- 1.10.0 / 2014-12-02
438
- ===================
439
-
440
- * make internal `extended: true` array limit dynamic
441
-
442
- 1.9.3 / 2014-11-21
443
- ==================
444
-
445
- * deps: iconv-lite@0.4.5
446
- - Fix Windows-31J and X-SJIS encoding support
447
- * deps: qs@2.3.3
448
- - Fix `arrayLimit` behavior
449
- * deps: raw-body@1.3.1
450
- - deps: iconv-lite@0.4.5
451
- * deps: type-is@~1.5.3
452
- - deps: mime-types@~2.0.3
453
-
454
- 1.9.2 / 2014-10-27
455
- ==================
456
-
457
- * deps: qs@2.3.2
458
- - Fix parsing of mixed objects and values
459
-
460
- 1.9.1 / 2014-10-22
461
- ==================
462
-
463
- * deps: on-finished@~2.1.1
464
- - Fix handling of pipelined requests
465
- * deps: qs@2.3.0
466
- - Fix parsing of mixed implicit and explicit arrays
467
- * deps: type-is@~1.5.2
468
- - deps: mime-types@~2.0.2
469
-
470
- 1.9.0 / 2014-09-24
471
- ==================
472
-
473
- * include the charset in "unsupported charset" error message
474
- * include the encoding in "unsupported content encoding" error message
475
- * deps: depd@~1.0.0
476
-
477
- 1.8.4 / 2014-09-23
478
- ==================
479
-
480
- * fix content encoding to be case-insensitive
481
-
482
- 1.8.3 / 2014-09-19
483
- ==================
484
-
485
- * deps: qs@2.2.4
486
- - Fix issue with object keys starting with numbers truncated
487
-
488
- 1.8.2 / 2014-09-15
489
- ==================
490
-
491
- * deps: depd@0.4.5
492
-
493
- 1.8.1 / 2014-09-07
494
- ==================
495
-
496
- * deps: media-typer@0.3.0
497
- * deps: type-is@~1.5.1
498
-
499
- 1.8.0 / 2014-09-05
500
- ==================
501
-
502
- * make empty-body-handling consistent between chunked requests
503
- - empty `json` produces `{}`
504
- - empty `raw` produces `new Buffer(0)`
505
- - empty `text` produces `''`
506
- - empty `urlencoded` produces `{}`
507
- * deps: qs@2.2.3
508
- - Fix issue where first empty value in array is discarded
509
- * deps: type-is@~1.5.0
510
- - fix `hasbody` to be true for `content-length: 0`
511
-
512
- 1.7.0 / 2014-09-01
513
- ==================
514
-
515
- * add `parameterLimit` option to `urlencoded` parser
516
- * change `urlencoded` extended array limit to 100
517
- * respond with 413 when over `parameterLimit` in `urlencoded`
518
-
519
- 1.6.7 / 2014-08-29
520
- ==================
521
-
522
- * deps: qs@2.2.2
523
- - Remove unnecessary cloning
524
-
525
- 1.6.6 / 2014-08-27
526
- ==================
527
-
528
- * deps: qs@2.2.0
529
- - Array parsing fix
530
- - Performance improvements
531
-
532
- 1.6.5 / 2014-08-16
533
- ==================
534
-
535
- * deps: on-finished@2.1.0
536
-
537
- 1.6.4 / 2014-08-14
538
- ==================
539
-
540
- * deps: qs@1.2.2
541
-
542
- 1.6.3 / 2014-08-10
543
- ==================
544
-
545
- * deps: qs@1.2.1
546
-
547
- 1.6.2 / 2014-08-07
548
- ==================
549
-
550
- * deps: qs@1.2.0
551
- - Fix parsing array of objects
552
-
553
- 1.6.1 / 2014-08-06
554
- ==================
555
-
556
- * deps: qs@1.1.0
557
- - Accept urlencoded square brackets
558
- - Accept empty values in implicit array notation
559
-
560
- 1.6.0 / 2014-08-05
561
- ==================
562
-
563
- * deps: qs@1.0.2
564
- - Complete rewrite
565
- - Limits array length to 20
566
- - Limits object depth to 5
567
- - Limits parameters to 1,000
568
-
569
- 1.5.2 / 2014-07-27
570
- ==================
571
-
572
- * deps: depd@0.4.4
573
- - Work-around v8 generating empty stack traces
574
-
575
- 1.5.1 / 2014-07-26
576
- ==================
577
-
578
- * deps: depd@0.4.3
579
- - Fix exception when global `Error.stackTraceLimit` is too low
580
-
581
- 1.5.0 / 2014-07-20
582
- ==================
583
-
584
- * deps: depd@0.4.2
585
- - Add `TRACE_DEPRECATION` environment variable
586
- - Remove non-standard grey color from color output
587
- - Support `--no-deprecation` argument
588
- - Support `--trace-deprecation` argument
589
- * deps: iconv-lite@0.4.4
590
- - Added encoding UTF-7
591
- * deps: raw-body@1.3.0
592
- - deps: iconv-lite@0.4.4
593
- - Added encoding UTF-7
594
- - Fix `Cannot switch to old mode now` error on Node.js 0.10+
595
- * deps: type-is@~1.3.2
596
-
597
- 1.4.3 / 2014-06-19
598
- ==================
599
-
600
- * deps: type-is@1.3.1
601
- - fix global variable leak
602
-
603
- 1.4.2 / 2014-06-19
604
- ==================
605
-
606
- * deps: type-is@1.3.0
607
- - improve type parsing
608
-
609
- 1.4.1 / 2014-06-19
610
- ==================
611
-
612
- * fix urlencoded extended deprecation message
613
-
614
- 1.4.0 / 2014-06-19
615
- ==================
616
-
617
- * add `text` parser
618
- * add `raw` parser
619
- * check accepted charset in content-type (accepts utf-8)
620
- * check accepted encoding in content-encoding (accepts identity)
621
- * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed
622
- * deprecate `urlencoded()` without provided `extended` option
623
- * lazy-load urlencoded parsers
624
- * parsers split into files for reduced mem usage
625
- * support gzip and deflate bodies
626
- - set `inflate: false` to turn off
627
- * deps: raw-body@1.2.2
628
- - Support all encodings from `iconv-lite`
629
-
630
- 1.3.1 / 2014-06-11
631
- ==================
632
-
633
- * deps: type-is@1.2.1
634
- - Switch dependency from mime to mime-types@1.0.0
635
-
636
- 1.3.0 / 2014-05-31
637
- ==================
638
-
639
- * add `extended` option to urlencoded parser
640
-
641
- 1.2.2 / 2014-05-27
642
- ==================
643
-
644
- * deps: raw-body@1.1.6
645
- - assert stream encoding on node.js 0.8
646
- - assert stream encoding on node.js < 0.10.6
647
- - deps: bytes@1
648
-
649
- 1.2.1 / 2014-05-26
650
- ==================
651
-
652
- * invoke `next(err)` after request fully read
653
- - prevents hung responses and socket hang ups
654
-
655
- 1.2.0 / 2014-05-11
656
- ==================
657
-
658
- * add `verify` option
659
- * deps: type-is@1.2.0
660
- - support suffix matching
661
-
662
- 1.1.2 / 2014-05-11
663
- ==================
664
-
665
- * improve json parser speed
666
-
667
- 1.1.1 / 2014-05-11
668
- ==================
669
-
670
- * fix repeated limit parsing with every request
671
-
672
- 1.1.0 / 2014-05-10
673
- ==================
674
-
675
- * add `type` option
676
- * deps: pin for safety and consistency
677
-
678
- 1.0.2 / 2014-04-14
679
- ==================
680
-
681
- * use `type-is` module
682
-
683
- 1.0.1 / 2014-03-20
684
- ==================
685
-
686
- * lower default limits to 100kb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/LICENSE DELETED
@@ -1,23 +0,0 @@
1
- (The MIT License)
2
-
3
- Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
4
- Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- 'Software'), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be
15
- included in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/README.md DELETED
@@ -1,476 +0,0 @@
1
- # body-parser
2
-
3
- [![NPM Version][npm-version-image]][npm-url]
4
- [![NPM Downloads][npm-downloads-image]][npm-url]
5
- [![Build Status][ci-image]][ci-url]
6
- [![Test Coverage][coveralls-image]][coveralls-url]
7
- [![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer]
8
-
9
- Node.js body parsing middleware.
10
-
11
- Parse incoming request bodies in a middleware before your handlers, available
12
- under the `req.body` property.
13
-
14
- **Note** As `req.body`'s shape is based on user-controlled input, all
15
- properties and values in this object are untrusted and should be validated
16
- before trusting. For example, `req.body.foo.toString()` may fail in multiple
17
- ways, for example the `foo` property may not be there or may not be a string,
18
- and `toString` may not be a function and instead a string or other user input.
19
-
20
- [Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/).
21
-
22
- _This does not handle multipart bodies_, due to their complex and typically
23
- large nature. For multipart bodies, you may be interested in the following
24
- modules:
25
-
26
- * [busboy](https://www.npmjs.org/package/busboy#readme) and
27
- [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme)
28
- * [multiparty](https://www.npmjs.org/package/multiparty#readme) and
29
- [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme)
30
- * [formidable](https://www.npmjs.org/package/formidable#readme)
31
- * [multer](https://www.npmjs.org/package/multer#readme)
32
-
33
- This module provides the following parsers:
34
-
35
- * [JSON body parser](#bodyparserjsonoptions)
36
- * [Raw body parser](#bodyparserrawoptions)
37
- * [Text body parser](#bodyparsertextoptions)
38
- * [URL-encoded form body parser](#bodyparserurlencodedoptions)
39
-
40
- Other body parsers you might be interested in:
41
-
42
- - [body](https://www.npmjs.org/package/body#readme)
43
- - [co-body](https://www.npmjs.org/package/co-body#readme)
44
-
45
- ## Installation
46
-
47
- ```sh
48
- $ npm install body-parser
49
- ```
50
-
51
- ## API
52
-
53
- ```js
54
- var bodyParser = require('body-parser')
55
- ```
56
-
57
- The `bodyParser` object exposes various factories to create middlewares. All
58
- middlewares will populate the `req.body` property with the parsed body when
59
- the `Content-Type` request header matches the `type` option, or an empty
60
- object (`{}`) if there was no body to parse, the `Content-Type` was not matched,
61
- or an error occurred.
62
-
63
- The various errors returned by this module are described in the
64
- [errors section](#errors).
65
-
66
- ### bodyParser.json([options])
67
-
68
- Returns middleware that only parses `json` and only looks at requests where
69
- the `Content-Type` header matches the `type` option. This parser accepts any
70
- Unicode encoding of the body and supports automatic inflation of `gzip` and
71
- `deflate` encodings.
72
-
73
- A new `body` object containing the parsed data is populated on the `request`
74
- object after the middleware (i.e. `req.body`).
75
-
76
- #### Options
77
-
78
- The `json` function takes an optional `options` object that may contain any of
79
- the following keys:
80
-
81
- ##### inflate
82
-
83
- When set to `true`, then deflated (compressed) bodies will be inflated; when
84
- `false`, deflated bodies are rejected. Defaults to `true`.
85
-
86
- ##### limit
87
-
88
- Controls the maximum request body size. If this is a number, then the value
89
- specifies the number of bytes; if it is a string, the value is passed to the
90
- [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
91
- to `'100kb'`.
92
-
93
- ##### reviver
94
-
95
- The `reviver` option is passed directly to `JSON.parse` as the second
96
- argument. You can find more information on this argument
97
- [in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter).
98
-
99
- ##### strict
100
-
101
- When set to `true`, will only accept arrays and objects; when `false` will
102
- accept anything `JSON.parse` accepts. Defaults to `true`.
103
-
104
- ##### type
105
-
106
- The `type` option is used to determine what media type the middleware will
107
- parse. This option can be a string, array of strings, or a function. If not a
108
- function, `type` option is passed directly to the
109
- [type-is](https://www.npmjs.org/package/type-is#readme) library and this can
110
- be an extension name (like `json`), a mime type (like `application/json`), or
111
- a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type`
112
- option is called as `fn(req)` and the request is parsed if it returns a truthy
113
- value. Defaults to `application/json`.
114
-
115
- ##### verify
116
-
117
- The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
118
- where `buf` is a `Buffer` of the raw request body and `encoding` is the
119
- encoding of the request. The parsing can be aborted by throwing an error.
120
-
121
- ### bodyParser.raw([options])
122
-
123
- Returns middleware that parses all bodies as a `Buffer` and only looks at
124
- requests where the `Content-Type` header matches the `type` option. This
125
- parser supports automatic inflation of `gzip` and `deflate` encodings.
126
-
127
- A new `body` object containing the parsed data is populated on the `request`
128
- object after the middleware (i.e. `req.body`). This will be a `Buffer` object
129
- of the body.
130
-
131
- #### Options
132
-
133
- The `raw` function takes an optional `options` object that may contain any of
134
- the following keys:
135
-
136
- ##### inflate
137
-
138
- When set to `true`, then deflated (compressed) bodies will be inflated; when
139
- `false`, deflated bodies are rejected. Defaults to `true`.
140
-
141
- ##### limit
142
-
143
- Controls the maximum request body size. If this is a number, then the value
144
- specifies the number of bytes; if it is a string, the value is passed to the
145
- [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
146
- to `'100kb'`.
147
-
148
- ##### type
149
-
150
- The `type` option is used to determine what media type the middleware will
151
- parse. This option can be a string, array of strings, or a function.
152
- If not a function, `type` option is passed directly to the
153
- [type-is](https://www.npmjs.org/package/type-is#readme) library and this
154
- can be an extension name (like `bin`), a mime type (like
155
- `application/octet-stream`), or a mime type with a wildcard (like `*/*` or
156
- `application/*`). If a function, the `type` option is called as `fn(req)`
157
- and the request is parsed if it returns a truthy value. Defaults to
158
- `application/octet-stream`.
159
-
160
- ##### verify
161
-
162
- The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
163
- where `buf` is a `Buffer` of the raw request body and `encoding` is the
164
- encoding of the request. The parsing can be aborted by throwing an error.
165
-
166
- ### bodyParser.text([options])
167
-
168
- Returns middleware that parses all bodies as a string and only looks at
169
- requests where the `Content-Type` header matches the `type` option. This
170
- parser supports automatic inflation of `gzip` and `deflate` encodings.
171
-
172
- A new `body` string containing the parsed data is populated on the `request`
173
- object after the middleware (i.e. `req.body`). This will be a string of the
174
- body.
175
-
176
- #### Options
177
-
178
- The `text` function takes an optional `options` object that may contain any of
179
- the following keys:
180
-
181
- ##### defaultCharset
182
-
183
- Specify the default character set for the text content if the charset is not
184
- specified in the `Content-Type` header of the request. Defaults to `utf-8`.
185
-
186
- ##### inflate
187
-
188
- When set to `true`, then deflated (compressed) bodies will be inflated; when
189
- `false`, deflated bodies are rejected. Defaults to `true`.
190
-
191
- ##### limit
192
-
193
- Controls the maximum request body size. If this is a number, then the value
194
- specifies the number of bytes; if it is a string, the value is passed to the
195
- [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
196
- to `'100kb'`.
197
-
198
- ##### type
199
-
200
- The `type` option is used to determine what media type the middleware will
201
- parse. This option can be a string, array of strings, or a function. If not
202
- a function, `type` option is passed directly to the
203
- [type-is](https://www.npmjs.org/package/type-is#readme) library and this can
204
- be an extension name (like `txt`), a mime type (like `text/plain`), or a mime
205
- type with a wildcard (like `*/*` or `text/*`). If a function, the `type`
206
- option is called as `fn(req)` and the request is parsed if it returns a
207
- truthy value. Defaults to `text/plain`.
208
-
209
- ##### verify
210
-
211
- The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
212
- where `buf` is a `Buffer` of the raw request body and `encoding` is the
213
- encoding of the request. The parsing can be aborted by throwing an error.
214
-
215
- ### bodyParser.urlencoded([options])
216
-
217
- Returns middleware that only parses `urlencoded` bodies and only looks at
218
- requests where the `Content-Type` header matches the `type` option. This
219
- parser accepts only UTF-8 encoding of the body and supports automatic
220
- inflation of `gzip` and `deflate` encodings.
221
-
222
- A new `body` object containing the parsed data is populated on the `request`
223
- object after the middleware (i.e. `req.body`). This object will contain
224
- key-value pairs, where the value can be a string or array (when `extended` is
225
- `false`), or any type (when `extended` is `true`).
226
-
227
- #### Options
228
-
229
- The `urlencoded` function takes an optional `options` object that may contain
230
- any of the following keys:
231
-
232
- ##### extended
233
-
234
- The `extended` option allows to choose between parsing the URL-encoded data
235
- with the `querystring` library (when `false`) or the `qs` library (when
236
- `true`). The "extended" syntax allows for rich objects and arrays to be
237
- encoded into the URL-encoded format, allowing for a JSON-like experience
238
- with URL-encoded. For more information, please
239
- [see the qs library](https://www.npmjs.org/package/qs#readme).
240
-
241
- Defaults to `true`, but using the default has been deprecated. Please
242
- research into the difference between `qs` and `querystring` and choose the
243
- appropriate setting.
244
-
245
- ##### inflate
246
-
247
- When set to `true`, then deflated (compressed) bodies will be inflated; when
248
- `false`, deflated bodies are rejected. Defaults to `true`.
249
-
250
- ##### limit
251
-
252
- Controls the maximum request body size. If this is a number, then the value
253
- specifies the number of bytes; if it is a string, the value is passed to the
254
- [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
255
- to `'100kb'`.
256
-
257
- ##### parameterLimit
258
-
259
- The `parameterLimit` option controls the maximum number of parameters that
260
- are allowed in the URL-encoded data. If a request contains more parameters
261
- than this value, a 413 will be returned to the client. Defaults to `1000`.
262
-
263
- ##### type
264
-
265
- The `type` option is used to determine what media type the middleware will
266
- parse. This option can be a string, array of strings, or a function. If not
267
- a function, `type` option is passed directly to the
268
- [type-is](https://www.npmjs.org/package/type-is#readme) library and this can
269
- be an extension name (like `urlencoded`), a mime type (like
270
- `application/x-www-form-urlencoded`), or a mime type with a wildcard (like
271
- `*/x-www-form-urlencoded`). If a function, the `type` option is called as
272
- `fn(req)` and the request is parsed if it returns a truthy value. Defaults
273
- to `application/x-www-form-urlencoded`.
274
-
275
- ##### verify
276
-
277
- The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
278
- where `buf` is a `Buffer` of the raw request body and `encoding` is the
279
- encoding of the request. The parsing can be aborted by throwing an error.
280
-
281
- #### depth
282
-
283
- The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible.
284
-
285
- ## Errors
286
-
287
- The middlewares provided by this module create errors using the
288
- [`http-errors` module](https://www.npmjs.com/package/http-errors). The errors
289
- will typically have a `status`/`statusCode` property that contains the suggested
290
- HTTP response code, an `expose` property to determine if the `message` property
291
- should be displayed to the client, a `type` property to determine the type of
292
- error without matching against the `message`, and a `body` property containing
293
- the read body, if available.
294
-
295
- The following are the common errors created, though any error can come through
296
- for various reasons.
297
-
298
- ### content encoding unsupported
299
-
300
- This error will occur when the request had a `Content-Encoding` header that
301
- contained an encoding but the "inflation" option was set to `false`. The
302
- `status` property is set to `415`, the `type` property is set to
303
- `'encoding.unsupported'`, and the `charset` property will be set to the
304
- encoding that is unsupported.
305
-
306
- ### entity parse failed
307
-
308
- This error will occur when the request contained an entity that could not be
309
- parsed by the middleware. The `status` property is set to `400`, the `type`
310
- property is set to `'entity.parse.failed'`, and the `body` property is set to
311
- the entity value that failed parsing.
312
-
313
- ### entity verify failed
314
-
315
- This error will occur when the request contained an entity that could not be
316
- failed verification by the defined `verify` option. The `status` property is
317
- set to `403`, the `type` property is set to `'entity.verify.failed'`, and the
318
- `body` property is set to the entity value that failed verification.
319
-
320
- ### request aborted
321
-
322
- This error will occur when the request is aborted by the client before reading
323
- the body has finished. The `received` property will be set to the number of
324
- bytes received before the request was aborted and the `expected` property is
325
- set to the number of expected bytes. The `status` property is set to `400`
326
- and `type` property is set to `'request.aborted'`.
327
-
328
- ### request entity too large
329
-
330
- This error will occur when the request body's size is larger than the "limit"
331
- option. The `limit` property will be set to the byte limit and the `length`
332
- property will be set to the request body's length. The `status` property is
333
- set to `413` and the `type` property is set to `'entity.too.large'`.
334
-
335
- ### request size did not match content length
336
-
337
- This error will occur when the request's length did not match the length from
338
- the `Content-Length` header. This typically occurs when the request is malformed,
339
- typically when the `Content-Length` header was calculated based on characters
340
- instead of bytes. The `status` property is set to `400` and the `type` property
341
- is set to `'request.size.invalid'`.
342
-
343
- ### stream encoding should not be set
344
-
345
- This error will occur when something called the `req.setEncoding` method prior
346
- to this middleware. This module operates directly on bytes only and you cannot
347
- call `req.setEncoding` when using this module. The `status` property is set to
348
- `500` and the `type` property is set to `'stream.encoding.set'`.
349
-
350
- ### stream is not readable
351
-
352
- This error will occur when the request is no longer readable when this middleware
353
- attempts to read it. This typically means something other than a middleware from
354
- this module read the request body already and the middleware was also configured to
355
- read the same request. The `status` property is set to `500` and the `type`
356
- property is set to `'stream.not.readable'`.
357
-
358
- ### too many parameters
359
-
360
- This error will occur when the content of the request exceeds the configured
361
- `parameterLimit` for the `urlencoded` parser. The `status` property is set to
362
- `413` and the `type` property is set to `'parameters.too.many'`.
363
-
364
- ### unsupported charset "BOGUS"
365
-
366
- This error will occur when the request had a charset parameter in the
367
- `Content-Type` header, but the `iconv-lite` module does not support it OR the
368
- parser does not support it. The charset is contained in the message as well
369
- as in the `charset` property. The `status` property is set to `415`, the
370
- `type` property is set to `'charset.unsupported'`, and the `charset` property
371
- is set to the charset that is unsupported.
372
-
373
- ### unsupported content encoding "bogus"
374
-
375
- This error will occur when the request had a `Content-Encoding` header that
376
- contained an unsupported encoding. The encoding is contained in the message
377
- as well as in the `encoding` property. The `status` property is set to `415`,
378
- the `type` property is set to `'encoding.unsupported'`, and the `encoding`
379
- property is set to the encoding that is unsupported.
380
-
381
- ### The input exceeded the depth
382
-
383
- This error occurs when using `bodyParser.urlencoded` with the `extended` property set to `true` and the input exceeds the configured `depth` option. The `status` property is set to `400`. It is recommended to review the `depth` option and evaluate if it requires a higher value. When the `depth` option is set to `32` (default value), the error will not be thrown.
384
-
385
- ## Examples
386
-
387
- ### Express/Connect top-level generic
388
-
389
- This example demonstrates adding a generic JSON and URL-encoded parser as a
390
- top-level middleware, which will parse the bodies of all incoming requests.
391
- This is the simplest setup.
392
-
393
- ```js
394
- var express = require('express')
395
- var bodyParser = require('body-parser')
396
-
397
- var app = express()
398
-
399
- // parse application/x-www-form-urlencoded
400
- app.use(bodyParser.urlencoded({ extended: false }))
401
-
402
- // parse application/json
403
- app.use(bodyParser.json())
404
-
405
- app.use(function (req, res) {
406
- res.setHeader('Content-Type', 'text/plain')
407
- res.write('you posted:\n')
408
- res.end(JSON.stringify(req.body, null, 2))
409
- })
410
- ```
411
-
412
- ### Express route-specific
413
-
414
- This example demonstrates adding body parsers specifically to the routes that
415
- need them. In general, this is the most recommended way to use body-parser with
416
- Express.
417
-
418
- ```js
419
- var express = require('express')
420
- var bodyParser = require('body-parser')
421
-
422
- var app = express()
423
-
424
- // create application/json parser
425
- var jsonParser = bodyParser.json()
426
-
427
- // create application/x-www-form-urlencoded parser
428
- var urlencodedParser = bodyParser.urlencoded({ extended: false })
429
-
430
- // POST /login gets urlencoded bodies
431
- app.post('/login', urlencodedParser, function (req, res) {
432
- res.send('welcome, ' + req.body.username)
433
- })
434
-
435
- // POST /api/users gets JSON bodies
436
- app.post('/api/users', jsonParser, function (req, res) {
437
- // create user in req.body
438
- })
439
- ```
440
-
441
- ### Change accepted type for parsers
442
-
443
- All the parsers accept a `type` option which allows you to change the
444
- `Content-Type` that the middleware will parse.
445
-
446
- ```js
447
- var express = require('express')
448
- var bodyParser = require('body-parser')
449
-
450
- var app = express()
451
-
452
- // parse various different custom JSON types as JSON
453
- app.use(bodyParser.json({ type: 'application/*+json' }))
454
-
455
- // parse some custom thing into a Buffer
456
- app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }))
457
-
458
- // parse an HTML body into a string
459
- app.use(bodyParser.text({ type: 'text/html' }))
460
- ```
461
-
462
- ## License
463
-
464
- [MIT](LICENSE)
465
-
466
- [ci-image]: https://badgen.net/github/checks/expressjs/body-parser/master?label=ci
467
- [ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml
468
- [coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/body-parser/master
469
- [coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master
470
- [node-version-image]: https://badgen.net/npm/node/body-parser
471
- [node-version-url]: https://nodejs.org/en/download
472
- [npm-downloads-image]: https://badgen.net/npm/dm/body-parser
473
- [npm-url]: https://npmjs.org/package/body-parser
474
- [npm-version-image]: https://badgen.net/npm/v/body-parser
475
- [ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/body-parser/badge
476
- [ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/body-parser
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/index.js DELETED
@@ -1,156 +0,0 @@
1
- /*!
2
- * body-parser
3
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
4
- * MIT Licensed
5
- */
6
-
7
- 'use strict'
8
-
9
- /**
10
- * Module dependencies.
11
- * @private
12
- */
13
-
14
- var deprecate = require('depd')('body-parser')
15
-
16
- /**
17
- * Cache of loaded parsers.
18
- * @private
19
- */
20
-
21
- var parsers = Object.create(null)
22
-
23
- /**
24
- * @typedef Parsers
25
- * @type {function}
26
- * @property {function} json
27
- * @property {function} raw
28
- * @property {function} text
29
- * @property {function} urlencoded
30
- */
31
-
32
- /**
33
- * Module exports.
34
- * @type {Parsers}
35
- */
36
-
37
- exports = module.exports = deprecate.function(bodyParser,
38
- 'bodyParser: use individual json/urlencoded middlewares')
39
-
40
- /**
41
- * JSON parser.
42
- * @public
43
- */
44
-
45
- Object.defineProperty(exports, 'json', {
46
- configurable: true,
47
- enumerable: true,
48
- get: createParserGetter('json')
49
- })
50
-
51
- /**
52
- * Raw parser.
53
- * @public
54
- */
55
-
56
- Object.defineProperty(exports, 'raw', {
57
- configurable: true,
58
- enumerable: true,
59
- get: createParserGetter('raw')
60
- })
61
-
62
- /**
63
- * Text parser.
64
- * @public
65
- */
66
-
67
- Object.defineProperty(exports, 'text', {
68
- configurable: true,
69
- enumerable: true,
70
- get: createParserGetter('text')
71
- })
72
-
73
- /**
74
- * URL-encoded parser.
75
- * @public
76
- */
77
-
78
- Object.defineProperty(exports, 'urlencoded', {
79
- configurable: true,
80
- enumerable: true,
81
- get: createParserGetter('urlencoded')
82
- })
83
-
84
- /**
85
- * Create a middleware to parse json and urlencoded bodies.
86
- *
87
- * @param {object} [options]
88
- * @return {function}
89
- * @deprecated
90
- * @public
91
- */
92
-
93
- function bodyParser (options) {
94
- // use default type for parsers
95
- var opts = Object.create(options || null, {
96
- type: {
97
- configurable: true,
98
- enumerable: true,
99
- value: undefined,
100
- writable: true
101
- }
102
- })
103
-
104
- var _urlencoded = exports.urlencoded(opts)
105
- var _json = exports.json(opts)
106
-
107
- return function bodyParser (req, res, next) {
108
- _json(req, res, function (err) {
109
- if (err) return next(err)
110
- _urlencoded(req, res, next)
111
- })
112
- }
113
- }
114
-
115
- /**
116
- * Create a getter for loading a parser.
117
- * @private
118
- */
119
-
120
- function createParserGetter (name) {
121
- return function get () {
122
- return loadParser(name)
123
- }
124
- }
125
-
126
- /**
127
- * Load a parser module.
128
- * @private
129
- */
130
-
131
- function loadParser (parserName) {
132
- var parser = parsers[parserName]
133
-
134
- if (parser !== undefined) {
135
- return parser
136
- }
137
-
138
- // this uses a switch for static require analysis
139
- switch (parserName) {
140
- case 'json':
141
- parser = require('./lib/types/json')
142
- break
143
- case 'raw':
144
- parser = require('./lib/types/raw')
145
- break
146
- case 'text':
147
- parser = require('./lib/types/text')
148
- break
149
- case 'urlencoded':
150
- parser = require('./lib/types/urlencoded')
151
- break
152
- }
153
-
154
- // store to prevent invoking require()
155
- return (parsers[parserName] = parser)
156
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/lib/read.js DELETED
@@ -1,205 +0,0 @@
1
- /*!
2
- * body-parser
3
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
4
- * MIT Licensed
5
- */
6
-
7
- 'use strict'
8
-
9
- /**
10
- * Module dependencies.
11
- * @private
12
- */
13
-
14
- var createError = require('http-errors')
15
- var destroy = require('destroy')
16
- var getBody = require('raw-body')
17
- var iconv = require('iconv-lite')
18
- var onFinished = require('on-finished')
19
- var unpipe = require('unpipe')
20
- var zlib = require('zlib')
21
-
22
- /**
23
- * Module exports.
24
- */
25
-
26
- module.exports = read
27
-
28
- /**
29
- * Read a request into a buffer and parse.
30
- *
31
- * @param {object} req
32
- * @param {object} res
33
- * @param {function} next
34
- * @param {function} parse
35
- * @param {function} debug
36
- * @param {object} options
37
- * @private
38
- */
39
-
40
- function read (req, res, next, parse, debug, options) {
41
- var length
42
- var opts = options
43
- var stream
44
-
45
- // flag as parsed
46
- req._body = true
47
-
48
- // read options
49
- var encoding = opts.encoding !== null
50
- ? opts.encoding
51
- : null
52
- var verify = opts.verify
53
-
54
- try {
55
- // get the content stream
56
- stream = contentstream(req, debug, opts.inflate)
57
- length = stream.length
58
- stream.length = undefined
59
- } catch (err) {
60
- return next(err)
61
- }
62
-
63
- // set raw-body options
64
- opts.length = length
65
- opts.encoding = verify
66
- ? null
67
- : encoding
68
-
69
- // assert charset is supported
70
- if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {
71
- return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
72
- charset: encoding.toLowerCase(),
73
- type: 'charset.unsupported'
74
- }))
75
- }
76
-
77
- // read body
78
- debug('read body')
79
- getBody(stream, opts, function (error, body) {
80
- if (error) {
81
- var _error
82
-
83
- if (error.type === 'encoding.unsupported') {
84
- // echo back charset
85
- _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
86
- charset: encoding.toLowerCase(),
87
- type: 'charset.unsupported'
88
- })
89
- } else {
90
- // set status code on error
91
- _error = createError(400, error)
92
- }
93
-
94
- // unpipe from stream and destroy
95
- if (stream !== req) {
96
- unpipe(req)
97
- destroy(stream, true)
98
- }
99
-
100
- // read off entire request
101
- dump(req, function onfinished () {
102
- next(createError(400, _error))
103
- })
104
- return
105
- }
106
-
107
- // verify
108
- if (verify) {
109
- try {
110
- debug('verify body')
111
- verify(req, res, body, encoding)
112
- } catch (err) {
113
- next(createError(403, err, {
114
- body: body,
115
- type: err.type || 'entity.verify.failed'
116
- }))
117
- return
118
- }
119
- }
120
-
121
- // parse
122
- var str = body
123
- try {
124
- debug('parse body')
125
- str = typeof body !== 'string' && encoding !== null
126
- ? iconv.decode(body, encoding)
127
- : body
128
- req.body = parse(str)
129
- } catch (err) {
130
- next(createError(400, err, {
131
- body: str,
132
- type: err.type || 'entity.parse.failed'
133
- }))
134
- return
135
- }
136
-
137
- next()
138
- })
139
- }
140
-
141
- /**
142
- * Get the content stream of the request.
143
- *
144
- * @param {object} req
145
- * @param {function} debug
146
- * @param {boolean} [inflate=true]
147
- * @return {object}
148
- * @api private
149
- */
150
-
151
- function contentstream (req, debug, inflate) {
152
- var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()
153
- var length = req.headers['content-length']
154
- var stream
155
-
156
- debug('content-encoding "%s"', encoding)
157
-
158
- if (inflate === false && encoding !== 'identity') {
159
- throw createError(415, 'content encoding unsupported', {
160
- encoding: encoding,
161
- type: 'encoding.unsupported'
162
- })
163
- }
164
-
165
- switch (encoding) {
166
- case 'deflate':
167
- stream = zlib.createInflate()
168
- debug('inflate body')
169
- req.pipe(stream)
170
- break
171
- case 'gzip':
172
- stream = zlib.createGunzip()
173
- debug('gunzip body')
174
- req.pipe(stream)
175
- break
176
- case 'identity':
177
- stream = req
178
- stream.length = length
179
- break
180
- default:
181
- throw createError(415, 'unsupported content encoding "' + encoding + '"', {
182
- encoding: encoding,
183
- type: 'encoding.unsupported'
184
- })
185
- }
186
-
187
- return stream
188
- }
189
-
190
- /**
191
- * Dump the contents of a request.
192
- *
193
- * @param {object} req
194
- * @param {function} callback
195
- * @api private
196
- */
197
-
198
- function dump (req, callback) {
199
- if (onFinished.isFinished(req)) {
200
- callback(null)
201
- } else {
202
- onFinished(req, callback)
203
- req.resume()
204
- }
205
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/lib/types/json.js DELETED
@@ -1,243 +0,0 @@
1
- /*!
2
- * body-parser
3
- * Copyright(c) 2014 Jonathan Ong
4
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
5
- * MIT Licensed
6
- */
7
-
8
- 'use strict'
9
-
10
- /**
11
- * Module dependencies.
12
- * @private
13
- */
14
-
15
- var bytes = require('bytes')
16
- var contentType = require('content-type')
17
- var createError = require('http-errors')
18
- var debug = require('debug')('body-parser:json')
19
- var read = require('../read')
20
- var typeis = require('type-is')
21
-
22
- /**
23
- * Module exports.
24
- */
25
-
26
- module.exports = json
27
-
28
- /**
29
- * RegExp to match the first non-space in a string.
30
- *
31
- * Allowed whitespace is defined in RFC 7159:
32
- *
33
- * ws = *(
34
- * %x20 / ; Space
35
- * %x09 / ; Horizontal tab
36
- * %x0A / ; Line feed or New line
37
- * %x0D ) ; Carriage return
38
- */
39
-
40
- var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex
41
-
42
- var JSON_SYNTAX_CHAR = '#'
43
- var JSON_SYNTAX_REGEXP = /#+/g
44
-
45
- /**
46
- * Create a middleware to parse JSON bodies.
47
- *
48
- * @param {object} [options]
49
- * @return {function}
50
- * @public
51
- */
52
-
53
- function json (options) {
54
- var opts = options || {}
55
-
56
- var limit = typeof opts.limit !== 'number'
57
- ? bytes.parse(opts.limit || '100kb')
58
- : opts.limit
59
- var inflate = opts.inflate !== false
60
- var reviver = opts.reviver
61
- var strict = opts.strict !== false
62
- var type = opts.type || 'application/json'
63
- var verify = opts.verify || false
64
-
65
- if (verify !== false && typeof verify !== 'function') {
66
- throw new TypeError('option verify must be function')
67
- }
68
-
69
- // create the appropriate type checking function
70
- var shouldParse = typeof type !== 'function'
71
- ? typeChecker(type)
72
- : type
73
-
74
- function parse (body) {
75
- if (body.length === 0) {
76
- // special-case empty json body, as it's a common client-side mistake
77
- // TODO: maybe make this configurable or part of "strict" option
78
- return {}
79
- }
80
-
81
- if (strict) {
82
- var first = firstchar(body)
83
-
84
- if (first !== '{' && first !== '[') {
85
- debug('strict violation')
86
- throw createStrictSyntaxError(body, first)
87
- }
88
- }
89
-
90
- try {
91
- debug('parse json')
92
- return JSON.parse(body, reviver)
93
- } catch (e) {
94
- throw normalizeJsonSyntaxError(e, {
95
- message: e.message,
96
- stack: e.stack
97
- })
98
- }
99
- }
100
-
101
- return function jsonParser (req, res, next) {
102
- if (req._body) {
103
- debug('body already parsed')
104
- next()
105
- return
106
- }
107
-
108
- req.body = req.body || {}
109
-
110
- // skip requests without bodies
111
- if (!typeis.hasBody(req)) {
112
- debug('skip empty body')
113
- next()
114
- return
115
- }
116
-
117
- debug('content-type %j', req.headers['content-type'])
118
-
119
- // determine if request should be parsed
120
- if (!shouldParse(req)) {
121
- debug('skip parsing')
122
- next()
123
- return
124
- }
125
-
126
- // assert charset per RFC 7159 sec 8.1
127
- var charset = getCharset(req) || 'utf-8'
128
- if (charset.slice(0, 4) !== 'utf-') {
129
- debug('invalid charset')
130
- next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
131
- charset: charset,
132
- type: 'charset.unsupported'
133
- }))
134
- return
135
- }
136
-
137
- // read
138
- read(req, res, next, parse, debug, {
139
- encoding: charset,
140
- inflate: inflate,
141
- limit: limit,
142
- verify: verify
143
- })
144
- }
145
- }
146
-
147
- /**
148
- * Create strict violation syntax error matching native error.
149
- *
150
- * @param {string} str
151
- * @param {string} char
152
- * @return {Error}
153
- * @private
154
- */
155
-
156
- function createStrictSyntaxError (str, char) {
157
- var index = str.indexOf(char)
158
- var partial = ''
159
-
160
- if (index !== -1) {
161
- partial = str.substring(0, index) + new Array(str.length - index + 1).join(JSON_SYNTAX_CHAR)
162
- }
163
-
164
- try {
165
- JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')
166
- } catch (e) {
167
- return normalizeJsonSyntaxError(e, {
168
- message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) {
169
- return str.substring(index, index + placeholder.length)
170
- }),
171
- stack: e.stack
172
- })
173
- }
174
- }
175
-
176
- /**
177
- * Get the first non-whitespace character in a string.
178
- *
179
- * @param {string} str
180
- * @return {function}
181
- * @private
182
- */
183
-
184
- function firstchar (str) {
185
- var match = FIRST_CHAR_REGEXP.exec(str)
186
-
187
- return match
188
- ? match[1]
189
- : undefined
190
- }
191
-
192
- /**
193
- * Get the charset of a request.
194
- *
195
- * @param {object} req
196
- * @api private
197
- */
198
-
199
- function getCharset (req) {
200
- try {
201
- return (contentType.parse(req).parameters.charset || '').toLowerCase()
202
- } catch (e) {
203
- return undefined
204
- }
205
- }
206
-
207
- /**
208
- * Normalize a SyntaxError for JSON.parse.
209
- *
210
- * @param {SyntaxError} error
211
- * @param {object} obj
212
- * @return {SyntaxError}
213
- */
214
-
215
- function normalizeJsonSyntaxError (error, obj) {
216
- var keys = Object.getOwnPropertyNames(error)
217
-
218
- for (var i = 0; i < keys.length; i++) {
219
- var key = keys[i]
220
- if (key !== 'stack' && key !== 'message') {
221
- delete error[key]
222
- }
223
- }
224
-
225
- // replace stack before message for Node.js 0.10 and below
226
- error.stack = obj.stack.replace(error.message, obj.message)
227
- error.message = obj.message
228
-
229
- return error
230
- }
231
-
232
- /**
233
- * Get the simple type checker.
234
- *
235
- * @param {string} type
236
- * @return {function}
237
- */
238
-
239
- function typeChecker (type) {
240
- return function checkType (req) {
241
- return Boolean(typeis(req, type))
242
- }
243
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/lib/types/raw.js DELETED
@@ -1,101 +0,0 @@
1
- /*!
2
- * body-parser
3
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
4
- * MIT Licensed
5
- */
6
-
7
- 'use strict'
8
-
9
- /**
10
- * Module dependencies.
11
- */
12
-
13
- var bytes = require('bytes')
14
- var debug = require('debug')('body-parser:raw')
15
- var read = require('../read')
16
- var typeis = require('type-is')
17
-
18
- /**
19
- * Module exports.
20
- */
21
-
22
- module.exports = raw
23
-
24
- /**
25
- * Create a middleware to parse raw bodies.
26
- *
27
- * @param {object} [options]
28
- * @return {function}
29
- * @api public
30
- */
31
-
32
- function raw (options) {
33
- var opts = options || {}
34
-
35
- var inflate = opts.inflate !== false
36
- var limit = typeof opts.limit !== 'number'
37
- ? bytes.parse(opts.limit || '100kb')
38
- : opts.limit
39
- var type = opts.type || 'application/octet-stream'
40
- var verify = opts.verify || false
41
-
42
- if (verify !== false && typeof verify !== 'function') {
43
- throw new TypeError('option verify must be function')
44
- }
45
-
46
- // create the appropriate type checking function
47
- var shouldParse = typeof type !== 'function'
48
- ? typeChecker(type)
49
- : type
50
-
51
- function parse (buf) {
52
- return buf
53
- }
54
-
55
- return function rawParser (req, res, next) {
56
- if (req._body) {
57
- debug('body already parsed')
58
- next()
59
- return
60
- }
61
-
62
- req.body = req.body || {}
63
-
64
- // skip requests without bodies
65
- if (!typeis.hasBody(req)) {
66
- debug('skip empty body')
67
- next()
68
- return
69
- }
70
-
71
- debug('content-type %j', req.headers['content-type'])
72
-
73
- // determine if request should be parsed
74
- if (!shouldParse(req)) {
75
- debug('skip parsing')
76
- next()
77
- return
78
- }
79
-
80
- // read
81
- read(req, res, next, parse, debug, {
82
- encoding: null,
83
- inflate: inflate,
84
- limit: limit,
85
- verify: verify
86
- })
87
- }
88
- }
89
-
90
- /**
91
- * Get the simple type checker.
92
- *
93
- * @param {string} type
94
- * @return {function}
95
- */
96
-
97
- function typeChecker (type) {
98
- return function checkType (req) {
99
- return Boolean(typeis(req, type))
100
- }
101
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
node_modules/body-parser/lib/types/text.js DELETED
@@ -1,121 +0,0 @@
1
- /*!
2
- * body-parser
3
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
4
- * MIT Licensed
5
- */
6
-
7
- 'use strict'
8
-
9
- /**
10
- * Module dependencies.
11
- */
12
-
13
- var bytes = require('bytes')
14
- var contentType = require('content-type')
15
- var debug = require('debug')('body-parser:text')
16
- var read = require('../read')
17
- var typeis = require('type-is')
18
-
19
- /**
20
- * Module exports.
21
- */
22
-
23
- module.exports = text
24
-
25
- /**
26
- * Create a middleware to parse text bodies.
27
- *
28
- * @param {object} [options]
29
- * @return {function}
30
- * @api public
31
- */
32
-
33
- function text (options) {
34
- var opts = options || {}
35
-
36
- var defaultCharset = opts.defaultCharset || 'utf-8'
37
- var inflate = opts.inflate !== false
38
- var limit = typeof opts.limit !== 'number'
39
- ? bytes.parse(opts.limit || '100kb')
40
- : opts.limit
41
- var type = opts.type || 'text/plain'
42
- var verify = opts.verify || false
43
-
44
- if (verify !== false && typeof verify !== 'function') {
45
- throw new TypeError('option verify must be function')
46
- }
47
-
48
- // create the appropriate type checking function
49
- var shouldParse = typeof type !== 'function'
50
- ? typeChecker(type)
51
- : type
52
-
53
- function parse (buf) {
54
- return buf
55
- }
56
-
57
- return function textParser (req, res, next) {
58
- if (req._body) {
59
- debug('body already parsed')
60
- next()
61
- return
62
- }
63
-
64
- req.body = req.body || {}
65
-
66
- // skip requests without bodies
67
- if (!typeis.hasBody(req)) {
68
- debug('skip empty body')
69
- next()
70
- return
71
- }
72
-
73
- debug('content-type %j', req.headers['content-type'])
74
-
75
- // determine if request should be parsed
76
- if (!shouldParse(req)) {
77
- debug('skip parsing')
78
- next()
79
- return
80
- }
81
-
82
- // get charset
83
- var charset = getCharset(req) || defaultCharset
84
-
85
- // read
86
- read(req, res, next, parse, debug, {
87
- encoding: charset,
88
- inflate: inflate,
89
- limit: limit,
90
- verify: verify
91
- })
92
- }
93
- }
94
-
95
- /**
96
- * Get the charset of a request.
97
- *
98
- * @param {object} req
99
- * @api private
100
- */
101
-
102
- function getCharset (req) {
103
- try {
104
- return (contentType.parse(req).parameters.charset || '').toLowerCase()
105
- } catch (e) {
106
- return undefined
107
- }
108
- }
109
-
110
- /**
111
- * Get the simple type checker.
112
- *
113
- * @param {string} type
114
- * @return {function}
115
- */
116
-
117
- function typeChecker (type) {
118
- return function checkType (req) {
119
- return Boolean(typeis(req, type))
120
- }
121
- }