decoders 2.0.0-beta8 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/CHANGELOG.md +67 -20
  2. package/Decoder.d.ts +94 -0
  3. package/Decoder.js +115 -0
  4. package/Decoder.js.flow +286 -0
  5. package/Decoder.mjs +108 -0
  6. package/README.md +122 -1345
  7. package/_utils.d.ts +0 -1
  8. package/_utils.js +51 -68
  9. package/_utils.js.flow +30 -20
  10. package/_utils.mjs +39 -54
  11. package/annotate.js +79 -72
  12. package/annotate.mjs +62 -58
  13. package/format.d.ts +4 -2
  14. package/format.js +64 -74
  15. package/format.js.flow +14 -12
  16. package/format.mjs +58 -68
  17. package/index.d.ts +38 -41
  18. package/index.js +66 -98
  19. package/index.js.flow +39 -58
  20. package/index.mjs +11 -37
  21. package/{core → lib}/_helpers.d.ts +0 -0
  22. package/lib/arrays.d.ts +59 -0
  23. package/lib/arrays.js +97 -0
  24. package/lib/arrays.js.flow +138 -0
  25. package/lib/arrays.mjs +84 -0
  26. package/lib/basics.d.ts +93 -0
  27. package/lib/basics.js +94 -0
  28. package/lib/basics.js.flow +124 -0
  29. package/lib/basics.mjs +75 -0
  30. package/lib/booleans.d.ts +16 -0
  31. package/lib/booleans.js +25 -0
  32. package/lib/booleans.js.flow +22 -0
  33. package/lib/booleans.mjs +15 -0
  34. package/lib/dates.d.ts +15 -0
  35. package/lib/dates.js +28 -0
  36. package/lib/dates.js.flow +40 -0
  37. package/lib/dates.mjs +19 -0
  38. package/lib/json.d.ts +35 -0
  39. package/lib/json.js +33 -0
  40. package/lib/json.js.flow +50 -0
  41. package/lib/json.mjs +18 -0
  42. package/lib/numbers.d.ts +31 -0
  43. package/lib/numbers.js +31 -0
  44. package/lib/numbers.js.flow +48 -0
  45. package/lib/numbers.mjs +21 -0
  46. package/lib/objects.d.ts +76 -0
  47. package/lib/objects.js +161 -0
  48. package/lib/objects.js.flow +238 -0
  49. package/lib/objects.mjs +147 -0
  50. package/lib/strings.d.ts +56 -0
  51. package/lib/strings.js +58 -0
  52. package/lib/strings.js.flow +90 -0
  53. package/lib/strings.mjs +40 -0
  54. package/lib/unions.d.ts +55 -0
  55. package/lib/unions.js +96 -0
  56. package/lib/unions.js.flow +155 -0
  57. package/lib/unions.mjs +83 -0
  58. package/lib/utilities.d.ts +40 -0
  59. package/lib/utilities.js +48 -0
  60. package/lib/utilities.js.flow +65 -0
  61. package/lib/utilities.mjs +37 -0
  62. package/package.json +64 -17
  63. package/result.d.ts +2 -25
  64. package/result.js +9 -90
  65. package/result.js.flow +4 -76
  66. package/result.mjs +5 -71
  67. package/_guard.d.ts +0 -7
  68. package/_guard.js +0 -22
  69. package/_guard.js.flow +0 -20
  70. package/_guard.mjs +0 -15
  71. package/_types.d.ts +0 -13
  72. package/_types.js +0 -1
  73. package/_types.js.flow +0 -20
  74. package/_types.mjs +0 -0
  75. package/core/array.d.ts +0 -5
  76. package/core/array.js +0 -104
  77. package/core/array.js.flow +0 -100
  78. package/core/array.mjs +0 -91
  79. package/core/boolean.d.ts +0 -5
  80. package/core/boolean.js +0 -40
  81. package/core/boolean.js.flow +0 -27
  82. package/core/boolean.mjs +0 -28
  83. package/core/composition.d.ts +0 -14
  84. package/core/composition.js +0 -54
  85. package/core/composition.js.flow +0 -48
  86. package/core/composition.mjs +0 -44
  87. package/core/constants.d.ts +0 -11
  88. package/core/constants.js +0 -65
  89. package/core/constants.js.flow +0 -44
  90. package/core/constants.mjs +0 -46
  91. package/core/date.d.ts +0 -4
  92. package/core/date.js +0 -42
  93. package/core/date.js.flow +0 -38
  94. package/core/date.mjs +0 -28
  95. package/core/describe.d.ts +0 -3
  96. package/core/describe.js +0 -22
  97. package/core/describe.js.flow +0 -17
  98. package/core/describe.mjs +0 -16
  99. package/core/dispatch.d.ts +0 -8
  100. package/core/dispatch.js +0 -58
  101. package/core/dispatch.js.flow +0 -58
  102. package/core/dispatch.mjs +0 -51
  103. package/core/either.d.ts +0 -61
  104. package/core/either.js +0 -113
  105. package/core/either.js.flow +0 -151
  106. package/core/either.mjs +0 -90
  107. package/core/fail.d.ts +0 -3
  108. package/core/fail.js +0 -17
  109. package/core/fail.js.flow +0 -12
  110. package/core/fail.mjs +0 -11
  111. package/core/instanceOf.d.ts +0 -3
  112. package/core/instanceOf.js +0 -15
  113. package/core/instanceOf.js.flow +0 -20
  114. package/core/instanceOf.mjs +0 -8
  115. package/core/json.d.ts +0 -11
  116. package/core/json.js +0 -31
  117. package/core/json.js.flow +0 -28
  118. package/core/json.mjs +0 -15
  119. package/core/lazy.d.ts +0 -3
  120. package/core/lazy.js +0 -16
  121. package/core/lazy.js.flow +0 -15
  122. package/core/lazy.mjs +0 -11
  123. package/core/mapping.d.ts +0 -6
  124. package/core/mapping.js +0 -67
  125. package/core/mapping.js.flow +0 -62
  126. package/core/mapping.mjs +0 -58
  127. package/core/number.d.ts +0 -6
  128. package/core/number.js +0 -36
  129. package/core/number.js.flow +0 -40
  130. package/core/number.mjs +0 -25
  131. package/core/object.d.ts +0 -33
  132. package/core/object.js +0 -190
  133. package/core/object.js.flow +0 -203
  134. package/core/object.mjs +0 -175
  135. package/core/optional.d.ts +0 -5
  136. package/core/optional.js +0 -50
  137. package/core/optional.js.flow +0 -41
  138. package/core/optional.mjs +0 -38
  139. package/core/string.d.ts +0 -10
  140. package/core/string.js +0 -68
  141. package/core/string.js.flow +0 -59
  142. package/core/string.mjs +0 -49
  143. package/core/tuple.d.ts +0 -30
  144. package/core/tuple.js +0 -177
  145. package/core/tuple.js.flow +0 -211
  146. package/core/tuple.mjs +0 -159
package/format.mjs CHANGED
@@ -1,140 +1,130 @@
1
- import { summarize as _summarize, asDate, INDENT, indent, isMultiline } from './_utils.mjs';
1
+ import { summarize as _summarize, asDate, INDENT, indent, isMultiline } from './_utils.mjs'
2
2
 
3
3
  function serializeString(s, width) {
4
4
  if (width === void 0) {
5
- width = 80;
5
+ width = 80
6
6
  }
7
-
8
- // Full string
9
- // Abbreviated to $maxlen i.e. "Vincent Driess..." [truncated]
10
- var ser = JSON.stringify(s);
7
+ var ser = JSON.stringify(s)
11
8
 
12
9
  if (ser.length <= width) {
13
- return ser;
14
- } // Cut off a bit
15
-
10
+ return ser
11
+ }
16
12
 
17
- var truncated = s.substring(0, width - 15) + '...';
18
- ser = JSON.stringify(truncated) + ' [truncated]';
19
- return ser;
13
+ var truncated = s.substring(0, width - 15) + '...'
14
+ ser = JSON.stringify(truncated) + ' [truncated]'
15
+ return ser
20
16
  }
21
17
 
22
18
  function serializeArray(annotation, prefix) {
23
- var items = annotation.items;
19
+ var items = annotation.items
24
20
 
25
21
  if (items.length === 0) {
26
- return '[]';
22
+ return '[]'
27
23
  }
28
24
 
29
- var result = [];
25
+ var result = []
30
26
  items.forEach(function (item) {
31
- var _serializeAnnotation = serializeAnnotation(item, prefix + INDENT),
32
- ser = _serializeAnnotation[0],
33
- ann = _serializeAnnotation[1];
27
+ var _serializeAnnotation = serializeAnnotation(item, '' + prefix + INDENT),
28
+ ser = _serializeAnnotation[0],
29
+ ann = _serializeAnnotation[1]
34
30
 
35
- result.push(prefix + INDENT + ser + ',');
31
+ result.push('' + prefix + INDENT + ser + ',')
36
32
 
37
33
  if (ann !== undefined) {
38
- result.push(indent(ann, prefix + INDENT));
34
+ result.push(indent(ann, '' + prefix + INDENT))
39
35
  }
40
- });
41
- return ['['].concat(result, [prefix + ']']).join('\n');
36
+ })
37
+ return ['['].concat(result, [prefix + ']']).join('\n')
42
38
  }
43
39
 
44
40
  function serializeObject(annotation, prefix) {
45
- var fields = annotation.fields;
46
- var fieldNames = Object.keys(fields);
41
+ var fields = annotation.fields
42
+ var fieldNames = Object.keys(fields)
47
43
 
48
44
  if (fieldNames.length === 0) {
49
- return '{}';
45
+ return '{}'
50
46
  }
51
47
 
52
- var result = [];
48
+ var result = []
53
49
  fieldNames.forEach(function (key) {
54
- var valueAnnotation = fields[key];
55
- var kser = serializeValue(key);
56
- var valPrefix = prefix + INDENT + ' '.repeat(kser.length + 2);
50
+ var valueAnnotation = fields[key]
51
+ var kser = serializeValue(key)
52
+ var valPrefix = '' + prefix + INDENT + ' '.repeat(kser.length + 2)
57
53
 
58
- var _serializeAnnotation2 = serializeAnnotation(valueAnnotation, prefix + INDENT),
59
- vser = _serializeAnnotation2[0],
60
- vann = _serializeAnnotation2[1];
54
+ var _serializeAnnotation2 = serializeAnnotation(valueAnnotation, '' + prefix + INDENT),
55
+ vser = _serializeAnnotation2[0],
56
+ vann = _serializeAnnotation2[1]
61
57
 
62
- result.push(prefix + INDENT + kser + ': ' + vser + ',');
58
+ result.push('' + prefix + INDENT + kser + ': ' + vser + ',')
63
59
 
64
60
  if (vann !== undefined) {
65
- result.push(indent(vann, valPrefix));
61
+ result.push(indent(vann, valPrefix))
66
62
  }
67
- });
68
- return ['{'].concat(result, [prefix + '}']).join('\n');
63
+ })
64
+ return ['{'].concat(result, [prefix + '}']).join('\n')
69
65
  }
70
66
 
71
67
  export function serializeValue(value) {
72
- // istanbul ignore else
73
68
  if (typeof value === 'string') {
74
- return serializeString(value);
69
+ return serializeString(value)
75
70
  } else if (typeof value === 'number' || typeof value === 'boolean') {
76
- return value.toString();
71
+ return value.toString()
77
72
  } else if (value === null) {
78
- return 'null';
73
+ return 'null'
79
74
  } else if (value === undefined) {
80
- return 'undefined';
75
+ return 'undefined'
81
76
  } else {
82
- var valueAsDate = asDate(value);
77
+ var valueAsDate = asDate(value)
83
78
 
84
79
  if (valueAsDate !== null) {
85
- return "new Date(" + JSON.stringify(valueAsDate.toISOString()) + ")";
80
+ return 'new Date(' + JSON.stringify(valueAsDate.toISOString()) + ')'
86
81
  } else if (value instanceof Date) {
87
- // NOTE: Using `instanceof Date` is unreliable way of checking dates.
88
- // If this case occurs (and it didn't pass the prior isDate())
89
- // check, then this must be the case where it's an invalid date.
90
- return '(Invalid Date)';
82
+ return '(Invalid Date)'
91
83
  } else {
92
- return '(unserializable)';
84
+ return '(unserializable)'
93
85
  }
94
86
  }
95
87
  }
96
88
  export function serializeAnnotation(ann, prefix) {
97
89
  if (prefix === void 0) {
98
- prefix = '';
90
+ prefix = ''
99
91
  }
100
-
101
- // The serialized data (the input object echoed back)
102
- var serialized;
92
+ var serialized
103
93
 
104
94
  if (ann.type === 'array') {
105
- serialized = serializeArray(ann, prefix);
95
+ serialized = serializeArray(ann, prefix)
106
96
  } else if (ann.type === 'object') {
107
- serialized = serializeObject(ann, prefix);
97
+ serialized = serializeObject(ann, prefix)
108
98
  } else if (ann.type === 'function') {
109
- serialized = '<function>';
99
+ serialized = '<function>'
110
100
  } else if (ann.type === 'circular-ref') {
111
- serialized = '<circular ref>';
101
+ serialized = '<circular ref>'
112
102
  } else if (ann.type === 'unknown') {
113
- serialized = '???';
103
+ serialized = '???'
114
104
  } else {
115
- serialized = serializeValue(ann.value);
105
+ serialized = serializeValue(ann.value)
116
106
  }
117
107
 
118
- var text = ann.text;
108
+ var text = ann.text
119
109
 
120
110
  if (text !== undefined) {
121
- var sep = '^'.repeat(isMultiline(serialized) ? 1 : serialized.length);
122
- return [serialized, [sep, text].join(isMultiline(text) ? '\n' : ' ')];
111
+ var sep = '^'.repeat(isMultiline(serialized) ? 1 : serialized.length)
112
+ return [serialized, [sep, text].join(isMultiline(text) ? '\n' : ' ')]
123
113
  } else {
124
- return [serialized, undefined];
114
+ return [serialized, undefined]
125
115
  }
126
116
  }
127
117
  export function formatInline(ann) {
128
118
  var _serializeAnnotation3 = serializeAnnotation(ann),
129
- serialized = _serializeAnnotation3[0],
130
- annotation = _serializeAnnotation3[1];
119
+ serialized = _serializeAnnotation3[0],
120
+ annotation = _serializeAnnotation3[1]
131
121
 
132
122
  if (annotation !== undefined) {
133
- return serialized + '\n' + annotation;
123
+ return serialized + '\n' + annotation
134
124
  } else {
135
- return serialized;
125
+ return serialized
136
126
  }
137
127
  }
138
128
  export function formatShort(ann) {
139
- return _summarize(ann, []).join('\n');
140
- }
129
+ return _summarize(ann, []).join('\n')
130
+ }
package/index.d.ts CHANGED
@@ -1,43 +1,40 @@
1
- export {
2
- Decoder,
3
- DecodeResult,
4
- DecoderType,
5
- Guard,
6
- GuardType,
7
- Predicate,
8
- Scalar,
9
- } from './_types';
10
- export { Result } from './result';
11
- export { JSONValue, JSONObject, JSONArray } from './core/json';
12
-
13
- export { guard } from './_guard';
14
-
15
- export { compose, map, predicate } from './core/composition';
1
+ export { DecodeResult, Decoder, DecoderType, Scalar, define } from './Decoder';
2
+ export { JSONValue, JSONObject, JSONArray } from './lib/json';
16
3
 
17
- export { array, nonEmptyArray, poja } from './core/array';
18
- export { boolean, numericBoolean, truthy } from './core/boolean';
19
- export { constant, hardcoded, mixed, null_, undefined_, unknown } from './core/constants';
20
- export { date, iso8601 } from './core/date';
21
- export { describe } from './core/describe';
22
- export { disjointUnion } from './core/dispatch';
23
4
  export {
24
- either,
25
- either3,
26
- either4,
27
- either5,
28
- either6,
29
- either7,
30
- either8,
31
- either9,
32
- oneOf,
33
- } from './core/either';
34
- export { fail } from './core/fail';
35
- export { instanceOf } from './core/instanceOf';
36
- export { json, jsonObject, jsonArray } from './core/json';
37
- export { lazy } from './core/lazy';
38
- export { mapping, dict } from './core/mapping';
39
- export { integer, number, positiveInteger, positiveNumber } from './core/number';
40
- export { exact, inexact, object, pojo } from './core/object';
41
- export { maybe, nullable, optional } from './core/optional';
42
- export { email, httpsUrl, nonEmptyString, regex, string, url } from './core/string';
43
- export { tuple1, tuple2, tuple3, tuple4, tuple5, tuple6 } from './core/tuple';
5
+ always,
6
+ constant,
7
+ hardcoded,
8
+ maybe,
9
+ mixed,
10
+ nullable,
11
+ null_,
12
+ optional,
13
+ undefined_,
14
+ unknown,
15
+ } from './lib/basics';
16
+ export { array, nonEmptyArray, poja, set, tuple } from './lib/arrays';
17
+ export { boolean, numericBoolean, truthy } from './lib/booleans';
18
+ export { date, iso8601 } from './lib/dates';
19
+ export { dict, exact, inexact, mapping, object, pojo } from './lib/objects';
20
+ export { either, oneOf, taggedUnion } from './lib/unions';
21
+ export {
22
+ email,
23
+ httpsUrl,
24
+ nonEmptyString,
25
+ regex,
26
+ string,
27
+ url,
28
+ uuid,
29
+ uuidv1,
30
+ uuidv4,
31
+ } from './lib/strings';
32
+ export { fail, instanceOf, lazy, never, prep } from './lib/utilities';
33
+ export {
34
+ anyNumber,
35
+ integer,
36
+ number,
37
+ positiveInteger,
38
+ positiveNumber,
39
+ } from './lib/numbers';
40
+ export { json, jsonObject, jsonArray } from './lib/json';
package/index.js CHANGED
@@ -1,121 +1,89 @@
1
- "use strict";
1
+ 'use strict'
2
2
 
3
- exports.__esModule = true;
4
- exports.url = exports.unknown = exports.undefined_ = exports.tuple6 = exports.tuple5 = exports.tuple4 = exports.tuple3 = exports.tuple2 = exports.tuple1 = exports.truthy = exports.string = exports.regex = exports.predicate = exports.positiveNumber = exports.positiveInteger = exports.pojo = exports.poja = exports.optional = exports.oneOf = exports.object = exports.numericBoolean = exports.number = exports.nullable = exports.null_ = exports.nonEmptyString = exports.nonEmptyArray = exports.mixed = exports.maybe = exports.mapping = exports.map = exports.lazy = exports.jsonObject = exports.jsonArray = exports.json = exports.iso8601 = exports.integer = exports.instanceOf = exports.inexact = exports.httpsUrl = exports.hardcoded = exports.guard = exports.fail = exports.exact = exports.email = exports.either9 = exports.either8 = exports.either7 = exports.either6 = exports.either5 = exports.either4 = exports.either3 = exports.either = exports.disjointUnion = exports.dict = exports.describe = exports.date = exports.constant = exports.compose = exports["boolean"] = exports.array = void 0;
3
+ exports.__esModule = true
4
+ exports.uuidv4 = exports.uuidv1 = exports.uuid = exports.url = exports.unknown = exports.undefined_ = exports.tuple = exports.truthy = exports.taggedUnion = exports.string = exports.set = exports.regex = exports.prep = exports.positiveNumber = exports.positiveInteger = exports.pojo = exports.poja = exports.optional = exports.oneOf = exports.object = exports.numericBoolean = exports.number = exports.nullable = exports.null_ = exports.nonEmptyString = exports.nonEmptyArray = exports.never = exports.mixed = exports.maybe = exports.mapping = exports.lazy = exports.jsonObject = exports.jsonArray = exports.json = exports.iso8601 = exports.integer = exports.instanceOf = exports.inexact = exports.httpsUrl = exports.hardcoded = exports.fail = exports.exact = exports.email = exports.either = exports.dict = exports.define = exports.date = exports.constant = exports['boolean'] = exports.array = exports.anyNumber = exports.always = void 0
5
5
 
6
- var _guard = require("./_guard");
6
+ var _Decoder = require('./Decoder')
7
7
 
8
- exports.guard = _guard.guard;
8
+ exports.define = _Decoder.define
9
9
 
10
- var _composition = require("./core/composition");
10
+ var _basics = require('./lib/basics')
11
11
 
12
- exports.compose = _composition.compose;
13
- exports.map = _composition.map;
14
- exports.predicate = _composition.predicate;
12
+ exports.always = _basics.always
13
+ exports.constant = _basics.constant
14
+ exports.hardcoded = _basics.hardcoded
15
+ exports.maybe = _basics.maybe
16
+ exports.mixed = _basics.mixed
17
+ exports.nullable = _basics.nullable
18
+ exports.null_ = _basics.null_
19
+ exports.optional = _basics.optional
20
+ exports.undefined_ = _basics.undefined_
21
+ exports.unknown = _basics.unknown
15
22
 
16
- var _array = require("./core/array");
23
+ var _arrays = require('./lib/arrays')
17
24
 
18
- exports.array = _array.array;
19
- exports.nonEmptyArray = _array.nonEmptyArray;
20
- exports.poja = _array.poja;
25
+ exports.array = _arrays.array
26
+ exports.nonEmptyArray = _arrays.nonEmptyArray
27
+ exports.poja = _arrays.poja
28
+ exports.set = _arrays.set
29
+ exports.tuple = _arrays.tuple
21
30
 
22
- var _boolean = require("./core/boolean");
31
+ var _booleans = require('./lib/booleans')
23
32
 
24
- exports["boolean"] = _boolean["boolean"];
25
- exports.numericBoolean = _boolean.numericBoolean;
26
- exports.truthy = _boolean.truthy;
33
+ exports['boolean'] = _booleans['boolean']
34
+ exports.numericBoolean = _booleans.numericBoolean
35
+ exports.truthy = _booleans.truthy
27
36
 
28
- var _constants = require("./core/constants");
37
+ var _dates = require('./lib/dates')
29
38
 
30
- exports.constant = _constants.constant;
31
- exports.hardcoded = _constants.hardcoded;
32
- exports.mixed = _constants.mixed;
33
- exports.null_ = _constants.null_;
34
- exports.undefined_ = _constants.undefined_;
35
- exports.unknown = _constants.unknown;
39
+ exports.date = _dates.date
40
+ exports.iso8601 = _dates.iso8601
36
41
 
37
- var _date = require("./core/date");
42
+ var _objects = require('./lib/objects')
38
43
 
39
- exports.date = _date.date;
40
- exports.iso8601 = _date.iso8601;
44
+ exports.dict = _objects.dict
45
+ exports.exact = _objects.exact
46
+ exports.inexact = _objects.inexact
47
+ exports.mapping = _objects.mapping
48
+ exports.object = _objects.object
49
+ exports.pojo = _objects.pojo
41
50
 
42
- var _describe = require("./core/describe");
51
+ var _unions = require('./lib/unions')
43
52
 
44
- exports.describe = _describe.describe;
53
+ exports.either = _unions.either
54
+ exports.oneOf = _unions.oneOf
55
+ exports.taggedUnion = _unions.taggedUnion
45
56
 
46
- var _dispatch = require("./core/dispatch");
57
+ var _strings = require('./lib/strings')
47
58
 
48
- exports.disjointUnion = _dispatch.disjointUnion;
59
+ exports.email = _strings.email
60
+ exports.httpsUrl = _strings.httpsUrl
61
+ exports.nonEmptyString = _strings.nonEmptyString
62
+ exports.regex = _strings.regex
63
+ exports.string = _strings.string
64
+ exports.url = _strings.url
65
+ exports.uuid = _strings.uuid
66
+ exports.uuidv1 = _strings.uuidv1
67
+ exports.uuidv4 = _strings.uuidv4
49
68
 
50
- var _either = require("./core/either");
69
+ var _utilities = require('./lib/utilities')
51
70
 
52
- exports.either = _either.either;
53
- exports.either3 = _either.either3;
54
- exports.either4 = _either.either4;
55
- exports.either5 = _either.either5;
56
- exports.either6 = _either.either6;
57
- exports.either7 = _either.either7;
58
- exports.either8 = _either.either8;
59
- exports.either9 = _either.either9;
60
- exports.oneOf = _either.oneOf;
71
+ exports.fail = _utilities.fail
72
+ exports.instanceOf = _utilities.instanceOf
73
+ exports.lazy = _utilities.lazy
74
+ exports.never = _utilities.never
75
+ exports.prep = _utilities.prep
61
76
 
62
- var _fail = require("./core/fail");
77
+ var _numbers = require('./lib/numbers')
63
78
 
64
- exports.fail = _fail.fail;
79
+ exports.anyNumber = _numbers.anyNumber
80
+ exports.integer = _numbers.integer
81
+ exports.number = _numbers.number
82
+ exports.positiveInteger = _numbers.positiveInteger
83
+ exports.positiveNumber = _numbers.positiveNumber
65
84
 
66
- var _instanceOf = require("./core/instanceOf");
85
+ var _json = require('./lib/json')
67
86
 
68
- exports.instanceOf = _instanceOf.instanceOf;
69
-
70
- var _json = require("./core/json");
71
-
72
- exports.json = _json.json;
73
- exports.jsonObject = _json.jsonObject;
74
- exports.jsonArray = _json.jsonArray;
75
-
76
- var _lazy = require("./core/lazy");
77
-
78
- exports.lazy = _lazy.lazy;
79
-
80
- var _mapping = require("./core/mapping");
81
-
82
- exports.mapping = _mapping.mapping;
83
- exports.dict = _mapping.dict;
84
-
85
- var _number = require("./core/number");
86
-
87
- exports.integer = _number.integer;
88
- exports.number = _number.number;
89
- exports.positiveInteger = _number.positiveInteger;
90
- exports.positiveNumber = _number.positiveNumber;
91
-
92
- var _object = require("./core/object");
93
-
94
- exports.exact = _object.exact;
95
- exports.inexact = _object.inexact;
96
- exports.object = _object.object;
97
- exports.pojo = _object.pojo;
98
-
99
- var _optional = require("./core/optional");
100
-
101
- exports.maybe = _optional.maybe;
102
- exports.nullable = _optional.nullable;
103
- exports.optional = _optional.optional;
104
-
105
- var _string = require("./core/string");
106
-
107
- exports.email = _string.email;
108
- exports.httpsUrl = _string.httpsUrl;
109
- exports.nonEmptyString = _string.nonEmptyString;
110
- exports.regex = _string.regex;
111
- exports.string = _string.string;
112
- exports.url = _string.url;
113
-
114
- var _tuple = require("./core/tuple");
115
-
116
- exports.tuple1 = _tuple.tuple1;
117
- exports.tuple2 = _tuple.tuple2;
118
- exports.tuple3 = _tuple.tuple3;
119
- exports.tuple4 = _tuple.tuple4;
120
- exports.tuple5 = _tuple.tuple5;
121
- exports.tuple6 = _tuple.tuple6;
87
+ exports.json = _json.json
88
+ exports.jsonObject = _json.jsonObject
89
+ exports.jsonArray = _json.jsonArray
package/index.js.flow CHANGED
@@ -1,63 +1,44 @@
1
1
  // @flow strict
2
2
 
3
- /**
4
- * Elm-like JSON decoders, for use with Flow.
5
- * See http://elmplayground.com/decoding-json-in-elm-1 for an introduction.
6
- *
7
- * Why? All JSON responses coming from our API endpoints are just that: free-form
8
- * JSON data. To Flow, the only type classification possilbe is "any" -- effectively
9
- * turning off all type checks for anything related to JSON. To the receiving end
10
- * (our frontend), the structure of that data is completely opaque to any type
11
- * checkers since JSON values can be anything: an object, an array, null, a string,
12
- * a bool, etc. Our type system is not a runtime type system, so we need a way of
13
- * "converting" an any-type JSON value into a type that we want to work with in our
14
- * frontend code base.
15
- *
16
- * Elm's solution to this problem is to define composable decoders: functions that
17
- * take anything and either fail with an error, or guarantee to return the expected
18
- * type. In our case, it's fine to fail with a runtime error.
19
- *
20
- */
21
- export type {
22
- Decoder,
23
- DecodeResult,
24
- DecoderType,
25
- Guard,
26
- GuardType,
27
- Predicate,
28
- Scalar,
29
- } from './_types';
30
- export type { Result } from './result';
31
- export type { JSONValue, JSONObject, JSONArray } from './core/json';
3
+ export type { Decoder, DecodeResult, DecoderType, Scalar } from './Decoder';
4
+ export type { JSONValue, JSONObject, JSONArray } from './lib/json';
32
5
 
33
- export { guard } from './_guard';
6
+ export { define } from './Decoder';
34
7
 
35
- export { compose, map, predicate } from './core/composition';
36
-
37
- export { array, nonEmptyArray, poja } from './core/array';
38
- export { boolean, numericBoolean, truthy } from './core/boolean';
39
- export { constant, hardcoded, mixed, null_, undefined_, unknown } from './core/constants';
40
- export { date, iso8601 } from './core/date';
41
- export { describe } from './core/describe';
42
- export { disjointUnion } from './core/dispatch';
43
8
  export {
44
- either,
45
- either3,
46
- either4,
47
- either5,
48
- either6,
49
- either7,
50
- either8,
51
- either9,
52
- oneOf,
53
- } from './core/either';
54
- export { fail } from './core/fail';
55
- export { instanceOf } from './core/instanceOf';
56
- export { json, jsonObject, jsonArray } from './core/json';
57
- export { lazy } from './core/lazy';
58
- export { mapping, dict } from './core/mapping';
59
- export { integer, number, positiveInteger, positiveNumber } from './core/number';
60
- export { exact, inexact, object, pojo } from './core/object';
61
- export { maybe, nullable, optional } from './core/optional';
62
- export { email, httpsUrl, nonEmptyString, regex, string, url } from './core/string';
63
- export { tuple1, tuple2, tuple3, tuple4, tuple5, tuple6 } from './core/tuple';
9
+ always,
10
+ constant,
11
+ hardcoded,
12
+ maybe,
13
+ mixed,
14
+ nullable,
15
+ null_,
16
+ optional,
17
+ undefined_,
18
+ unknown,
19
+ } from './lib/basics';
20
+ export { array, nonEmptyArray, poja, set, tuple } from './lib/arrays';
21
+ export { boolean, numericBoolean, truthy } from './lib/booleans';
22
+ export { date, iso8601 } from './lib/dates';
23
+ export { dict, exact, inexact, mapping, object, pojo } from './lib/objects';
24
+ export { either, oneOf, taggedUnion } from './lib/unions';
25
+ export {
26
+ email,
27
+ httpsUrl,
28
+ nonEmptyString,
29
+ regex,
30
+ string,
31
+ url,
32
+ uuid,
33
+ uuidv1,
34
+ uuidv4,
35
+ } from './lib/strings';
36
+ export { fail, instanceOf, lazy, never, prep } from './lib/utilities';
37
+ export {
38
+ anyNumber,
39
+ integer,
40
+ number,
41
+ positiveInteger,
42
+ positiveNumber,
43
+ } from './lib/numbers';
44
+ export { json, jsonObject, jsonArray } from './lib/json';
package/index.mjs CHANGED
@@ -1,37 +1,11 @@
1
- /**
2
- * Elm-like JSON decoders, for use with Flow.
3
- * See http://elmplayground.com/decoding-json-in-elm-1 for an introduction.
4
- *
5
- * Why? All JSON responses coming from our API endpoints are just that: free-form
6
- * JSON data. To Flow, the only type classification possilbe is "any" -- effectively
7
- * turning off all type checks for anything related to JSON. To the receiving end
8
- * (our frontend), the structure of that data is completely opaque to any type
9
- * checkers since JSON values can be anything: an object, an array, null, a string,
10
- * a bool, etc. Our type system is not a runtime type system, so we need a way of
11
- * "converting" an any-type JSON value into a type that we want to work with in our
12
- * frontend code base.
13
- *
14
- * Elm's solution to this problem is to define composable decoders: functions that
15
- * take anything and either fail with an error, or guarantee to return the expected
16
- * type. In our case, it's fine to fail with a runtime error.
17
- *
18
- */
19
- export { guard } from './_guard.mjs';
20
- export { compose, map, predicate } from './core/composition.mjs';
21
- export { array, nonEmptyArray, poja } from './core/array.mjs';
22
- export { boolean, numericBoolean, truthy } from './core/boolean.mjs';
23
- export { constant, hardcoded, mixed, null_, undefined_, unknown } from './core/constants.mjs';
24
- export { date, iso8601 } from './core/date.mjs';
25
- export { describe } from './core/describe.mjs';
26
- export { disjointUnion } from './core/dispatch.mjs';
27
- export { either, either3, either4, either5, either6, either7, either8, either9, oneOf } from './core/either.mjs';
28
- export { fail } from './core/fail.mjs';
29
- export { instanceOf } from './core/instanceOf.mjs';
30
- export { json, jsonObject, jsonArray } from './core/json.mjs';
31
- export { lazy } from './core/lazy.mjs';
32
- export { mapping, dict } from './core/mapping.mjs';
33
- export { integer, number, positiveInteger, positiveNumber } from './core/number.mjs';
34
- export { exact, inexact, object, pojo } from './core/object.mjs';
35
- export { maybe, nullable, optional } from './core/optional.mjs';
36
- export { email, httpsUrl, nonEmptyString, regex, string, url } from './core/string.mjs';
37
- export { tuple1, tuple2, tuple3, tuple4, tuple5, tuple6 } from './core/tuple.mjs';
1
+ export { define } from './Decoder.mjs'
2
+ export { always, constant, hardcoded, maybe, mixed, nullable, null_, optional, undefined_, unknown } from './lib/basics.mjs'
3
+ export { array, nonEmptyArray, poja, set, tuple } from './lib/arrays.mjs'
4
+ export { boolean, numericBoolean, truthy } from './lib/booleans.mjs'
5
+ export { date, iso8601 } from './lib/dates.mjs'
6
+ export { dict, exact, inexact, mapping, object, pojo } from './lib/objects.mjs'
7
+ export { either, oneOf, taggedUnion } from './lib/unions.mjs'
8
+ export { email, httpsUrl, nonEmptyString, regex, string, url, uuid, uuidv1, uuidv4 } from './lib/strings.mjs'
9
+ export { fail, instanceOf, lazy, never, prep } from './lib/utilities.mjs'
10
+ export { anyNumber, integer, number, positiveInteger, positiveNumber } from './lib/numbers.mjs'
11
+ export { json, jsonObject, jsonArray } from './lib/json.mjs'
File without changes