presidium 1.4.9 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -66,11 +66,11 @@ const OptionalValidator = function (parsers) {
66
66
 
67
67
  return function optionalValidator(object) {
68
68
  const result = {}
69
- for (const key in parsers) {
70
- const parser = parsers[key],
71
- value = object[key]
72
- if (value != null) {
73
- result[key] = parser(value)
69
+ for (const field in parsers) {
70
+ if (field in object) {
71
+ const parser = parsers[field]
72
+ const value = object[field]
73
+ result[field] = parser(value)
74
74
  }
75
75
  }
76
76
  return result
package/Readable.js CHANGED
@@ -35,8 +35,12 @@ const Readable = {}
35
35
  Readable.Buffer = function Readable(readable) {
36
36
  return new Promise((resolve, reject) => {
37
37
  const chunks = []
38
- readable.on('data', chunk => {
39
- chunks.push(chunk)
38
+ readable.on('data', (chunk, encoding) => {
39
+ if (typeof chunk == 'string') {
40
+ chunks.push(Buffer.from(chunk, encoding))
41
+ } else {
42
+ chunks.push(chunk)
43
+ }
40
44
  })
41
45
  readable.on('end', () => {
42
46
  resolve(Buffer.concat(chunks))
package/S3Bucket.js CHANGED
@@ -870,6 +870,9 @@ class S3Bucket {
870
870
  headers['Content-Length'] = options.ContentLength
871
871
  }
872
872
 
873
+ if (body.readable) {
874
+ body = await Readable.Buffer(body)
875
+ }
873
876
  if (options.ContentMD5) {
874
877
  headers['Content-MD5'] = options.ContentMD5
875
878
  } else {
@@ -62,30 +62,28 @@
62
62
  */
63
63
  const StrictValidator = function (parsers, options = {}) {
64
64
  const {
65
- onMissing = function throwOnMissing(field) {
66
- const error = new Error(`missing field ${field}`)
67
- error.code = 400
68
- throw error
69
- },
65
+ onMissing
70
66
  } = options
71
67
 
72
68
  const requiredFields = Object.keys(parsers)
73
69
 
74
70
  return function strictValidator(object) {
75
- for (const field of requiredFields) {
76
- if (!(field in object)) {
71
+ const result = {}
72
+ for (const field in parsers) {
73
+ if (field in object) {
74
+ const parser = parsers[field]
75
+ const value = object[field]
76
+ result[field] = parser(value)
77
+
78
+ } else if (typeof onMissing == 'function') {
77
79
  onMissing(field)
80
+ } else {
81
+ const error = new Error(`Missing field ${field}`)
82
+ error.code = 400
83
+ throw error
78
84
  }
79
85
  }
80
86
 
81
- const result = {}
82
- for (const key in parsers) {
83
- const parser = parsers[key],
84
- value = object[key]
85
- if (value != null) {
86
- result[key] = parser(value)
87
- }
88
- }
89
87
  return result
90
88
  }
91
89
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "presidium",
3
- "version": "1.4.9",
3
+ "version": "2.0.0",
4
4
  "description": "A library for creating web services",
5
5
  "author": "Richard Tong",
6
6
  "license": "MIT",