govuk_publishing_components 16.29.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/cookie-banner.js +46 -23
  3. data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +8 -2
  4. data/app/assets/javascripts/govuk_publishing_components/lib/cookie-functions.js +101 -21
  5. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js +9 -2
  6. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +0 -1
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_button.scss +4 -6
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_cookie-banner.scss +36 -5
  9. data/app/assets/stylesheets/govuk_publishing_components/components/_heading.scss +14 -14
  10. data/app/assets/stylesheets/govuk_publishing_components/components/_highlight-boxes.scss +23 -23
  11. data/app/assets/stylesheets/govuk_publishing_components/components/_inverse-header.scss +8 -8
  12. data/app/assets/stylesheets/govuk_publishing_components/components/_lead-paragraph.scss +2 -2
  13. data/app/assets/stylesheets/govuk_publishing_components/components/_metadata.scss +8 -8
  14. data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +10 -10
  15. data/app/assets/stylesheets/govuk_publishing_components/components/_previous-and-next-navigation.scss +11 -14
  16. data/app/assets/stylesheets/govuk_publishing_components/components/_related-navigation.scss +14 -14
  17. data/app/assets/stylesheets/govuk_publishing_components/components/_share-links.scss +8 -8
  18. data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav-header.scss +7 -7
  19. data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav-related.scss +20 -16
  20. data/app/assets/stylesheets/govuk_publishing_components/components/_subscription-links.scss +4 -4
  21. data/app/assets/stylesheets/govuk_publishing_components/components/_success-alert.scss +5 -5
  22. data/app/assets/stylesheets/govuk_publishing_components/components/_taxonomy-list.scss +5 -5
  23. data/app/assets/stylesheets/govuk_publishing_components/components/_title.scss +8 -8
  24. data/app/assets/stylesheets/govuk_publishing_components/components/print/_step-by-step-nav-header.scss +1 -1
  25. data/app/views/govuk_publishing_components/components/_cookie_banner.html.erb +33 -25
  26. data/app/views/govuk_publishing_components/components/_error_summary.html.erb +4 -2
  27. data/app/views/govuk_publishing_components/components/_notice.html.erb +4 -1
  28. data/app/views/govuk_publishing_components/components/docs/cookie_banner.yml +2 -0
  29. data/app/views/govuk_publishing_components/components/docs/error_summary.yml +6 -0
  30. data/app/views/govuk_publishing_components/components/docs/notice.yml +6 -0
  31. data/app/views/govuk_publishing_components/components/docs/success_alert.yml +1 -1
  32. data/lib/govuk_publishing_components/presenters/cookie_banner_helper.rb +0 -4
  33. data/lib/govuk_publishing_components/version.rb +1 -1
  34. data/node_modules/accessible-autocomplete/dist/accessible-autocomplete.min.js +1 -1
  35. data/node_modules/accessible-autocomplete/dist/accessible-autocomplete.min.js.map +1 -1
  36. data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.preact.min.js +1 -1
  37. data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.preact.min.js.map +1 -1
  38. data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.react.min.js +1 -1
  39. data/node_modules/accessible-autocomplete/dist/lib/accessible-autocomplete.react.min.js.map +1 -1
  40. data/node_modules/accessible-autocomplete/package.json +3 -3
  41. data/node_modules/accessible-autocomplete/src/autocomplete.js +4 -2
  42. data/node_modules/accessible-autocomplete/src/wrapper.js +5 -1
  43. data/node_modules/d/CHANGELOG.md +9 -0
  44. data/node_modules/d/CHANGES +4 -0
  45. data/node_modules/d/LICENSE +12 -16
  46. data/node_modules/d/README.md +49 -19
  47. data/node_modules/d/auto-bind.js +11 -10
  48. data/node_modules/d/index.js +23 -24
  49. data/node_modules/d/lazy.js +21 -23
  50. data/node_modules/d/package.json +63 -16
  51. data/node_modules/d/test/auto-bind.js +6 -7
  52. data/node_modules/d/test/index.js +78 -51
  53. data/node_modules/d/test/lazy.js +65 -50
  54. data/node_modules/es6-weak-map/CHANGELOG.md +5 -0
  55. data/node_modules/es6-weak-map/LICENSE +12 -16
  56. data/node_modules/es6-weak-map/README.md +34 -19
  57. data/node_modules/es6-weak-map/implement.js +9 -5
  58. data/node_modules/es6-weak-map/index.js +2 -2
  59. data/node_modules/es6-weak-map/is-implemented.js +10 -9
  60. data/node_modules/es6-weak-map/is-native-implemented.js +3 -3
  61. data/node_modules/es6-weak-map/is-weak-map.js +8 -8
  62. data/node_modules/es6-weak-map/package.json +30 -19
  63. data/node_modules/es6-weak-map/polyfill.js +31 -32
  64. data/node_modules/es6-weak-map/test/implement.js +4 -2
  65. data/node_modules/es6-weak-map/test/index.js +4 -3
  66. data/node_modules/es6-weak-map/test/is-implemented.js +9 -8
  67. data/node_modules/es6-weak-map/test/is-native-implemented.js +4 -2
  68. data/node_modules/es6-weak-map/test/is-weak-map.js +4 -4
  69. data/node_modules/es6-weak-map/test/polyfill.js +13 -13
  70. data/node_modules/es6-weak-map/test/valid-weak-map.js +22 -9
  71. data/node_modules/es6-weak-map/valid-weak-map.js +5 -5
  72. data/node_modules/resolve/lib/async.js +1 -1
  73. data/node_modules/resolve/lib/node-modules-paths.js +1 -1
  74. data/node_modules/resolve/lib/sync.js +0 -2
  75. data/node_modules/resolve/package.json +13 -13
  76. data/node_modules/resolve/test/node-modules-paths.js +0 -22
  77. data/node_modules/resolve/test/resolver.js +11 -0
  78. data/node_modules/resolve/test/resolver_sync.js +11 -0
  79. data/node_modules/standard/node_modules/ms/index.js +2 -2
  80. data/node_modules/standard/node_modules/ms/package.json +205 -16
  81. data/node_modules/standard/node_modules/ms/readme.md +1 -1
  82. data/node_modules/type/CHANGELOG.md +62 -0
  83. data/node_modules/type/README.md +743 -0
  84. data/node_modules/type/array-length/coerce.js +10 -0
  85. data/node_modules/type/array-length/ensure.js +10 -0
  86. data/node_modules/type/array-like/ensure.js +9 -0
  87. data/node_modules/type/array-like/is.js +21 -0
  88. data/node_modules/type/array/ensure.js +9 -0
  89. data/node_modules/type/array/is.js +27 -0
  90. data/node_modules/type/date/ensure.js +9 -0
  91. data/node_modules/type/date/is.js +26 -0
  92. data/node_modules/type/error/ensure.js +9 -0
  93. data/node_modules/type/error/is.js +24 -0
  94. data/node_modules/type/finite/coerce.js +8 -0
  95. data/node_modules/type/finite/ensure.js +10 -0
  96. data/node_modules/type/function/ensure.js +9 -0
  97. data/node_modules/type/function/is.js +19 -0
  98. data/node_modules/type/integer/coerce.js +11 -0
  99. data/node_modules/type/integer/ensure.js +10 -0
  100. data/node_modules/type/iterable/ensure.js +9 -0
  101. data/node_modules/type/iterable/is.js +20 -0
  102. data/node_modules/type/lib/is-to-string-tag-supported.js +3 -0
  103. data/node_modules/type/lib/resolve-exception.js +21 -0
  104. data/node_modules/type/lib/safe-to-string.js +10 -0
  105. data/node_modules/type/lib/to-short-string.js +29 -0
  106. data/node_modules/type/natural-number/coerce.js +10 -0
  107. data/node_modules/type/natural-number/ensure.js +10 -0
  108. data/node_modules/type/number/coerce.js +14 -0
  109. data/node_modules/type/number/ensure.js +10 -0
  110. data/node_modules/type/object/ensure.js +9 -0
  111. data/node_modules/type/object/is.js +11 -0
  112. data/node_modules/type/package.json +159 -0
  113. data/node_modules/type/plain-function/ensure.js +9 -0
  114. data/node_modules/type/plain-function/is.js +11 -0
  115. data/node_modules/type/plain-object/ensure.js +9 -0
  116. data/node_modules/type/plain-object/is.js +28 -0
  117. data/node_modules/type/promise/ensure.js +9 -0
  118. data/node_modules/type/promise/is.js +27 -0
  119. data/node_modules/type/prototype/is.js +13 -0
  120. data/node_modules/type/reg-exp/ensure.js +9 -0
  121. data/node_modules/type/reg-exp/is.js +37 -0
  122. data/node_modules/type/safe-integer/coerce.js +13 -0
  123. data/node_modules/type/safe-integer/ensure.js +10 -0
  124. data/node_modules/type/string/coerce.js +23 -0
  125. data/node_modules/type/string/ensure.js +10 -0
  126. data/node_modules/type/test/_lib/arrow-function-if-supported.js +4 -0
  127. data/node_modules/type/test/_lib/class-if-supported.js +4 -0
  128. data/node_modules/type/test/array-length/coerce.js +47 -0
  129. data/node_modules/type/test/array-length/ensure.js +19 -0
  130. data/node_modules/type/test/array-like/ensure.js +24 -0
  131. data/node_modules/type/test/array-like/is.js +47 -0
  132. data/node_modules/type/test/array/ensure.js +20 -0
  133. data/node_modules/type/test/array/is.js +41 -0
  134. data/node_modules/type/test/date/ensure.js +20 -0
  135. data/node_modules/type/test/date/is.js +46 -0
  136. data/node_modules/type/test/error/ensure.js +20 -0
  137. data/node_modules/type/test/error/is.js +42 -0
  138. data/node_modules/type/test/finite/coerce.js +40 -0
  139. data/node_modules/type/test/finite/ensure.js +17 -0
  140. data/node_modules/type/test/function/ensure.js +20 -0
  141. data/node_modules/type/test/function/is.js +46 -0
  142. data/node_modules/type/test/integer/coerce.js +49 -0
  143. data/node_modules/type/test/integer/ensure.js +17 -0
  144. data/node_modules/type/test/iterable/ensure.js +24 -0
  145. data/node_modules/type/test/iterable/is.js +50 -0
  146. data/node_modules/type/test/lib/is-to-string-tag-supported.js +10 -0
  147. data/node_modules/type/test/lib/resolve-exception.js +39 -0
  148. data/node_modules/type/test/lib/safe-to-string.js +32 -0
  149. data/node_modules/type/test/lib/to-short-string.js +41 -0
  150. data/node_modules/type/test/natural-number/coerce.js +47 -0
  151. data/node_modules/type/test/natural-number/ensure.js +19 -0
  152. data/node_modules/type/test/number/coerce.js +40 -0
  153. data/node_modules/type/test/number/ensure.js +17 -0
  154. data/node_modules/type/test/object/ensure.js +20 -0
  155. data/node_modules/type/test/object/is.js +30 -0
  156. data/node_modules/type/test/plain-function/ensure.js +20 -0
  157. data/node_modules/type/test/plain-function/is.js +56 -0
  158. data/node_modules/type/test/plain-object/ensure.js +20 -0
  159. data/node_modules/type/test/plain-object/is.js +47 -0
  160. data/node_modules/type/test/promise/ensure.js +20 -0
  161. data/node_modules/type/test/promise/is.js +39 -0
  162. data/node_modules/type/test/prototype/is.js +39 -0
  163. data/node_modules/type/test/reg-exp/ensure.js +20 -0
  164. data/node_modules/type/test/reg-exp/is.js +47 -0
  165. data/node_modules/type/test/safe-integer/coerce.js +49 -0
  166. data/node_modules/type/test/safe-integer/ensure.js +19 -0
  167. data/node_modules/type/test/string/coerce.js +36 -0
  168. data/node_modules/type/test/string/ensure.js +17 -0
  169. data/node_modules/type/test/thenable/ensure.js +20 -0
  170. data/node_modules/type/test/thenable/is.js +44 -0
  171. data/node_modules/type/test/time-value/coerce.js +47 -0
  172. data/node_modules/type/test/time-value/ensure.js +17 -0
  173. data/node_modules/type/test/value/ensure.js +20 -0
  174. data/node_modules/type/test/value/is.js +29 -0
  175. data/node_modules/type/thenable/ensure.js +9 -0
  176. data/node_modules/type/thenable/is.js +9 -0
  177. data/node_modules/type/time-value/coerce.js +12 -0
  178. data/node_modules/type/time-value/ensure.js +10 -0
  179. data/node_modules/type/value/ensure.js +9 -0
  180. data/node_modules/type/value/is.js +6 -0
  181. metadata +118 -21
  182. data/app/assets/stylesheets/govuk_publishing_components/components/_taxonomy-navigation.scss +0 -94
  183. data/node_modules/resolve/reaf +0 -0
  184. data/node_modules/resolve/test/shadowed_core.js +0 -38
  185. data/node_modules/resolve/test/shadowed_core/node_modules/util/index.js +0 -0
@@ -1,7 +1,7 @@
1
1
  # ms
2
2
 
3
3
  [![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms)
4
- [![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/)
4
+ [![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/zeit)
5
5
 
6
6
  Use this package to easily convert various time formats to milliseconds.
7
7
 
@@ -0,0 +1,62 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
+
5
+ ## [1.0.1](https://github.com/medikoo/type/compare/v1.0.0...v1.0.1) (2019-04-08)
6
+
7
+ # 1.0.0 (2019-04-05)
8
+
9
+ ### Bug Fixes
10
+
11
+ - ensure 'is' functions can't crash ([59ceb78](https://github.com/medikoo/type/commit/59ceb78))
12
+
13
+ ### Features
14
+
15
+ - array-length/coerce ([af8ddec](https://github.com/medikoo/type/commit/af8ddec))
16
+ - array-length/ensure ([d313eb6](https://github.com/medikoo/type/commit/d313eb6))
17
+ - array-like/ensure ([45f1ddd](https://github.com/medikoo/type/commit/45f1ddd))
18
+ - array-like/is ([9a026a5](https://github.com/medikoo/type/commit/9a026a5))
19
+ - array/ensure ([9db1515](https://github.com/medikoo/type/commit/9db1515))
20
+ - array/is ([9672839](https://github.com/medikoo/type/commit/9672839))
21
+ - date/ensure ([44e25a0](https://github.com/medikoo/type/commit/44e25a0))
22
+ - date/is ([0316558](https://github.com/medikoo/type/commit/0316558))
23
+ - ensure to not crash ([3998348](https://github.com/medikoo/type/commit/3998348))
24
+ - ensure/number ([134b5cb](https://github.com/medikoo/type/commit/134b5cb))
25
+ - error/ensure ([d5c8a30](https://github.com/medikoo/type/commit/d5c8a30))
26
+ - error/is-error ([4d6b899](https://github.com/medikoo/type/commit/4d6b899))
27
+ - finite/coerce ([accaad1](https://github.com/medikoo/type/commit/accaad1))
28
+ - finite/ensure ([51e4174](https://github.com/medikoo/type/commit/51e4174))
29
+ - function/ensure ([b624c9a](https://github.com/medikoo/type/commit/b624c9a))
30
+ - function/is ([dab8026](https://github.com/medikoo/type/commit/dab8026))
31
+ - integer/coerce ([89dea2e](https://github.com/medikoo/type/commit/89dea2e))
32
+ - integer/ensure ([44a7071](https://github.com/medikoo/type/commit/44a7071))
33
+ - iterable/ensure ([3d48841](https://github.com/medikoo/type/commit/3d48841))
34
+ - iterable/is ([cf09513](https://github.com/medikoo/type/commit/cf09513))
35
+ - lib/is-to-string-tag-supported ([c8c001d](https://github.com/medikoo/type/commit/c8c001d))
36
+ - natural-number/coerce ([d08fdd9](https://github.com/medikoo/type/commit/d08fdd9))
37
+ - natural-number/ensure ([6c24d12](https://github.com/medikoo/type/commit/6c24d12))
38
+ - number/coerce ([86ccf08](https://github.com/medikoo/type/commit/86ccf08))
39
+ - object/ensure ([a9e8eed](https://github.com/medikoo/type/commit/a9e8eed))
40
+ - object/is ([d2d7251](https://github.com/medikoo/type/commit/d2d7251))
41
+ - plain-function/ensure ([5186518](https://github.com/medikoo/type/commit/5186518))
42
+ - plain-function/is ([51bc791](https://github.com/medikoo/type/commit/51bc791))
43
+ - plain-object/ensure ([91cf5e5](https://github.com/medikoo/type/commit/91cf5e5))
44
+ - plain-object/is ([4dcf393](https://github.com/medikoo/type/commit/4dcf393))
45
+ - promise/ensure ([8d096a4](https://github.com/medikoo/type/commit/8d096a4))
46
+ - promise/is ([a00de02](https://github.com/medikoo/type/commit/a00de02))
47
+ - prototype/is ([b23bdcc](https://github.com/medikoo/type/commit/b23bdcc))
48
+ - reg-exp/ensure ([6f7bbcb](https://github.com/medikoo/type/commit/6f7bbcb))
49
+ - reg-exp/is ([9728519](https://github.com/medikoo/type/commit/9728519))
50
+ - safe-integer/coerce ([b8549c4](https://github.com/medikoo/type/commit/b8549c4))
51
+ - safe-integer/ensure ([a70ef3f](https://github.com/medikoo/type/commit/a70ef3f))
52
+ - string/coerce ([b25c71f](https://github.com/medikoo/type/commit/b25c71f))
53
+ - string/ensure ([b62577d](https://github.com/medikoo/type/commit/b62577d))
54
+ - support 'default' in resolveException ([e08332a](https://github.com/medikoo/type/commit/e08332a))
55
+ - switch config to ES3 based ([37606d9](https://github.com/medikoo/type/commit/37606d9))
56
+ - thenable/ensure ([6762c0d](https://github.com/medikoo/type/commit/6762c0d))
57
+ - thenable/is ([2711d70](https://github.com/medikoo/type/commit/2711d70))
58
+ - time-value/coerce ([27fd109](https://github.com/medikoo/type/commit/27fd109))
59
+ - time-value/ensure ([1f6a8ea](https://github.com/medikoo/type/commit/1f6a8ea))
60
+ - **string/coerce:** restrict toString acceptance ([2a87100](https://github.com/medikoo/type/commit/2a87100))
61
+ - value/ensure ([dd6d8cb](https://github.com/medikoo/type/commit/dd6d8cb))
62
+ - value/is ([fdf4763](https://github.com/medikoo/type/commit/fdf4763))
@@ -0,0 +1,743 @@
1
+ [![*nix build status][nix-build-image]][nix-build-url]
2
+ [![Windows build status][win-build-image]][win-build-url]
3
+ [![Tests coverage][cov-image]][cov-url]
4
+ [![npm version][npm-image]][npm-url]
5
+
6
+ # type
7
+
8
+ ## Runtime validation and processing of JavaScript types
9
+
10
+ - Respects language nature and acknowledges its quirks
11
+ - Allows coercion in restricted forms (rejects clearly invalid input, normalizes permissible type deviations)
12
+ - No transpilation implied, written to work in all ECMAScript 3+ engines
13
+
14
+ ### Example usage
15
+
16
+ Bulletproof input arguments normalization and validation:
17
+
18
+ ```javascript
19
+ const ensureString = require('type/string/ensure')
20
+ , ensureDate = require('type/date/ensure')
21
+ , ensureNaturalNumber = require('type/natural-number/ensure')
22
+ , isObject = require('type/object/is');
23
+
24
+ module.exports = (path, options = { min: 0 }) {
25
+ path = ensureString(path, { errorMessage: "%v is not a path" });
26
+ if (!isObject(options)) options = {};
27
+ const min = ensureNaturalNumber(options.min, { default: 0 })
28
+ , max = ensureNaturalNumber(options.max, { isOptional: true })
29
+ , startTime = ensureDate(options.startTime, { isOptional: true });
30
+
31
+ // ...logic
32
+ };
33
+ ```
34
+
35
+ ### Installation
36
+
37
+ ```bash
38
+ npm install type
39
+ ```
40
+
41
+ ## Utilities
42
+
43
+ Serves following kind of utilities:
44
+
45
+ ##### `*/coerce`
46
+
47
+ Restricted coercion into primitive type. Returns coerced value or `null` if value is not coercible per rules.
48
+
49
+ ##### `*/is`
50
+
51
+ Object type/kind confirmation, returns either `true` or `false`.
52
+
53
+ ##### `*/ensure`
54
+
55
+ Value validation. Returns input value (in primitive cases possibly coerced) or if value doesn't meet the constraints throws `TypeError` .
56
+
57
+ Each `*/ensure` utility, accepts following options (eventually passed with second argument):
58
+
59
+ - `isOptional` - Makes `null` or `undefined` accepted as valid value. In such case instead of `TypeError` being thrown, `null` is returned.
60
+ - `default` - A value to be returned if `null` or `undefined` is passed as an input value.
61
+ - `errorMessage` - Custom error message (`%v` can be used as a placeholder for input value)
62
+
63
+ ---
64
+
65
+ ### Value
66
+
67
+ _Value_, any value that's neither `null` nor `undefined` .
68
+
69
+ #### `value/is`
70
+
71
+ Confirms whether passed argument is a _value_
72
+
73
+ ```javascript
74
+ const isValue = require("type/value/is");
75
+
76
+ isValue({}); // true
77
+ isValue(null); // false
78
+ ```
79
+
80
+ #### `value/ensure`
81
+
82
+ Ensures if given argument is a _value_. If it's a value it is returned back, if not `TypeError` is thrown
83
+
84
+ ```javascript
85
+ const ensureValue = require("type/value/ensure");
86
+
87
+ const obj = {};
88
+
89
+ ensureValue(obj); // obj
90
+ ensureValue(null); // Thrown TypeError: Cannot use null
91
+ ```
92
+
93
+ ---
94
+
95
+ ### Object
96
+
97
+ _Object_, any non-primitive value
98
+
99
+ #### `object/is`
100
+
101
+ Confirms if passed value is an object
102
+
103
+ ```javascript
104
+ const isObject = require("type/object/is");
105
+
106
+ isObject({}); // true
107
+ isObject(true); // false
108
+ isObject(null); // false
109
+ ```
110
+
111
+ #### `object/ensure`
112
+
113
+ If given argument is an object, it is returned back. Otherwise `TypeError` is thrown.
114
+
115
+ ```javascript
116
+ const ensureObject = require("type/object/ensure");
117
+
118
+ const obj = {};
119
+
120
+ ensureObject(obj); // obj
121
+ ensureString(null); // Thrown TypeError: null is not an object
122
+ ```
123
+
124
+ ---
125
+
126
+ ### String
127
+
128
+ _string_ primitive
129
+
130
+ #### `string/coerce`
131
+
132
+ Restricted string coercion. Returns string presentation for every value that follows below constraints
133
+
134
+ - is implicitly coercible to string
135
+ - is neither`null` nor `undefined`
136
+ - its `toString` method is not `Object.prototype.toString`
137
+
138
+ For all other values `null` is returned
139
+
140
+ ```javascript
141
+ const coerceToString = require("type/string/coerce");
142
+
143
+ coerceToString(12); // "12"
144
+ coerceToString(undefined); // null
145
+ ```
146
+
147
+ #### `string/ensure`
148
+
149
+ If given argument is a string coercible value (via [`string/coerce`](#stringcoerce)) returns result string.
150
+ Otherwise `TypeError` is thrown.
151
+
152
+ ```javascript
153
+ const ensureString = require("type/string/ensure");
154
+
155
+ ensureString(12); // "12"
156
+ ensureString(null); // Thrown TypeError: null is not a string
157
+ ```
158
+
159
+ ---
160
+
161
+ ### Number
162
+
163
+ _number_ primitive
164
+
165
+ #### `number/coerce`
166
+
167
+ Restricted number coercion. Returns number presentation for every value that follows below constraints
168
+
169
+ - is implicitly coercible to number
170
+ - is neither `null` nor `undefined`
171
+ - is not `NaN` and doesn't coerce to `NaN`
172
+
173
+ For all other values `null` is returned
174
+
175
+ ```javascript
176
+ const coerceToNumber = require("type/number/coerce");
177
+
178
+ coerceToNumber("12"); // 12
179
+ coerceToNumber({}); // null
180
+ coerceToNumber(null); // null
181
+ ```
182
+
183
+ #### `number/ensure`
184
+
185
+ If given argument is a number coercible value (via [`number/coerce`](#numbercoerce)) returns result number.
186
+ Otherwise `TypeError` is thrown.
187
+
188
+ ```javascript
189
+ const ensureNumber = require("type/number/ensure");
190
+
191
+ ensureNumber(12); // "12"
192
+ ensureNumber(null); // Thrown TypeError: null is not a number
193
+ ```
194
+
195
+ ---
196
+
197
+ #### Finite Number
198
+
199
+ Finite _number_ primitive
200
+
201
+ ##### `finite/coerce`
202
+
203
+ Follows [`number/coerce`](#numbercoerce) additionally rejecting `Infinity` and `-Infinity` values (`null` is returned if given values coerces to them)
204
+
205
+ ```javascript
206
+ const coerceToFinite = require("type/finite/coerce");
207
+
208
+ coerceToFinite("12"); // 12
209
+ coerceToFinite(Infinity); // null
210
+ coerceToFinite(null); // null
211
+ ```
212
+
213
+ ##### `finite/ensure`
214
+
215
+ If given argument is a finite number coercible value (via [`finite/coerce`](#finitecoerce)) returns result number.
216
+ Otherwise `TypeError` is thrown.
217
+
218
+ ```javascript
219
+ const ensureFinite = require("type/finite/ensure");
220
+
221
+ ensureFinite(12); // "12"
222
+ ensureFinite(null); // Thrown TypeError: null is not a finite number
223
+ ```
224
+
225
+ ---
226
+
227
+ #### Integer Number
228
+
229
+ Integer _number_ primitive
230
+
231
+ ##### `integer/coerce`
232
+
233
+ Follows [`finite/coerce`](#finitecoerce) additionally stripping decimal part from the number
234
+
235
+ ```javascript
236
+ const coerceToInteger = require("type/integer/coerce");
237
+
238
+ coerceToInteger("12.95"); // 12
239
+ coerceToInteger(Infinity); // null
240
+ coerceToInteger(null); // null
241
+ ```
242
+
243
+ ##### `integer/ensure`
244
+
245
+ If given argument is an integer coercible value (via [`integer/coerce`](#integercoerce)) returns result number.
246
+ Otherwise `TypeError` is thrown.
247
+
248
+ ```javascript
249
+ const ensureInteger = require("type/integer/ensure");
250
+
251
+ ensureInteger(12.93); // "12"
252
+ ensureInteger(null); // Thrown TypeError: null is not an integer
253
+ ```
254
+
255
+ ---
256
+
257
+ #### Safe Integer Number
258
+
259
+ Safe integer _number_ primitive
260
+
261
+ ##### `safe-integer/coerce`
262
+
263
+ Follows [`integer/coerce`](#integercoerce) but returns `null` in place of values which are beyond `Number.MIN_SAFE_INTEGER` and `Number.MAX_SAFE_INTEGER` range.
264
+
265
+ ```javascript
266
+ const coerceToSafeInteger = require("type/safe-integer/coerce");
267
+
268
+ coerceToInteger("12.95"); // 12
269
+ coerceToInteger(9007199254740992); // null
270
+ coerceToInteger(null); // null
271
+ ```
272
+
273
+ ##### `safe-integer/ensure`
274
+
275
+ If given argument is a safe integer coercible value (via [`safe-integer/coerce`](#safe-integercoerce)) returns result number.
276
+ Otherwise `TypeError` is thrown.
277
+
278
+ ```javascript
279
+ const ensureSafeInteger = require("type/safe-integer/ensure");
280
+
281
+ ensureSafeInteger(12.93); // "12"
282
+ ensureSafeInteger(9007199254740992); // Thrown TypeError: null is not a safe integer
283
+ ```
284
+
285
+ ---
286
+
287
+ #### Natural Number
288
+
289
+ Natural _number_ primitive
290
+
291
+ ##### `natural-number/coerce`
292
+
293
+ Follows [`integer/coerce`](#integercoerce) but returns `null` for values below `0`
294
+
295
+ ```javascript
296
+ const coerceToNaturalNumber = require("type/natural-number/coerce");
297
+
298
+ coerceToNaturalNumber("12.95"); // 12
299
+ coerceToNaturalNumber(-120); // null
300
+ coerceToNaturalNumber(null); // null
301
+ ```
302
+
303
+ ##### `natural-number/ensure`
304
+
305
+ If given argument is a natural number coercible value (via [`natural-number/coerce`](#natural-numbercoerce)) returns result number.
306
+ Otherwise `TypeError` is thrown.
307
+
308
+ ```javascript
309
+ const ensureNaturalNumber = require("type/natural-number/ensure");
310
+
311
+ ensureNaturalNumber(12.93); // "12"
312
+ ensureNaturalNumber(-230); // Thrown TypeError: null is not a natural number
313
+ ```
314
+
315
+ ---
316
+
317
+ ### Plain Object
318
+
319
+ A _plain object_
320
+
321
+ - Inherits directly from `Object.prototype` or `null`
322
+ - Is not a constructor's `prototype` property
323
+
324
+ #### `plain-object/is`
325
+
326
+ Confirms if given object is a _plain object_
327
+
328
+ ```javascript
329
+ const isPlainObject = require("type/plain-object/is");
330
+
331
+ isPlainObject({}); // true
332
+ isPlainObject(Object.create(null)); // true
333
+ isPlainObject([]); // false
334
+ ```
335
+
336
+ #### `plain-object/ensure`
337
+
338
+ If given argument is a plain object it is returned back. Otherwise `TypeError` is thrown.
339
+
340
+ ```javascript
341
+ const ensurePlainObject = require("type/plain-object/ensure");
342
+
343
+ ensurePlainObject({}); // {}
344
+ ensureArray("foo"); // Thrown TypeError: foo is not a plain object
345
+ ```
346
+
347
+ ---
348
+
349
+ ### Array
350
+
351
+ _Array_ instance
352
+
353
+ #### `array/is`
354
+
355
+ Confirms if given object is a native array
356
+
357
+ ```javascript
358
+ const isArray = require("type/array/is");
359
+
360
+ isArray([]); // true
361
+ isArray({}); // false
362
+ isArray("foo"); // false
363
+ ```
364
+
365
+ #### `array/ensure`
366
+
367
+ If given argument is an array, it is returned back. Otherwise `TypeError` is thrown.
368
+
369
+ ```javascript
370
+ const ensureArray = require("type/array/ensure");
371
+
372
+ ensureArray(["foo"]); // ["foo"]
373
+ ensureArray("foo"); // Thrown TypeError: foo is not an array
374
+ ```
375
+
376
+ ---
377
+
378
+ #### Array Like
379
+
380
+ _Array-like_ value (any value with `length` property)
381
+
382
+ #### `array-like/is`
383
+
384
+ Restricted _array-like_ confirmation. Returns true for every value that meets following contraints
385
+
386
+ - is an _object_ (or with `allowString` option, a _string_)
387
+ - is not a _function_
388
+ - Exposes `length` that meets [`array-length`](#array-lengthcoerce) constraints
389
+
390
+ ```javascript
391
+ const isArrayLike = require("type/array-like/is");
392
+
393
+ isArrayLike([]); // true
394
+ isArrayLike({}); // false
395
+ isArrayLike({ length: 0 }); // true
396
+ isArrayLike("foo"); // false
397
+ isArrayLike("foo", { allowString: true }); // true
398
+ ```
399
+
400
+ #### `array-like/ensure`
401
+
402
+ If given argument is an _array-like_, it is returned back. Otherwise `TypeError` is thrown.
403
+
404
+ ```javascript
405
+ const ensureArrayLike = require("type/array-like/ensure");
406
+
407
+ ensureArrayLike({ length: 0 }); // { length: 0 }
408
+ ensureArrayLike("foo", { allowString: true }); // "foo"
409
+ ensureArrayLike({}); // Thrown TypeError: null is not an iterable
410
+ ```
411
+
412
+ ---
413
+
414
+ #### Array length
415
+
416
+ _number_ primitive that conforms as valid _array length_
417
+
418
+ ##### `array-length/coerce`
419
+
420
+ Follows [`safe-integer/coerce`](#safe-integercoerce) but returns `null` in place of values which are below `0`
421
+
422
+ ```javascript
423
+ const coerceToArrayLength = require("type/safe-integer/coerce");
424
+
425
+ coerceToArrayLength("12.95"); // 12
426
+ coerceToArrayLength(9007199254740992); // null
427
+ coerceToArrayLength(null); // null
428
+ ```
429
+
430
+ ##### `array-length/ensure`
431
+
432
+ If given argument is an _array length_ coercible value (via [`array-length/coerce`](#array-lengthcoerce)) returns result number.
433
+ Otherwise `TypeError` is thrown.
434
+
435
+ ```javascript
436
+ const ensureArrayLength = require("type/array-length/ensure");
437
+
438
+ ensureArrayLength(12.93); // "12"
439
+ ensureArrayLength(9007199254740992); // Thrown TypeError: null is not a valid array length
440
+ ```
441
+
442
+ ---
443
+
444
+ ### Iterable
445
+
446
+ Value which implements _iterable_ protocol
447
+
448
+ #### `iterable/is`
449
+
450
+ Confirms if given object is an _iterable_ and is not a _string_ (unless `allowString` option is passed)
451
+
452
+ ```javascript
453
+ const isIterable = require("type/iterable/is");
454
+
455
+ isIterable([]); // true
456
+ isIterable({}); // false
457
+ isIterable("foo"); // false
458
+ isIterable("foo", { allowString: true }); // true
459
+ ```
460
+
461
+ #### `iterable/ensure`
462
+
463
+ If given argument is an _iterable_, it is returned back. Otherwise `TypeError` is thrown.
464
+
465
+ ```javascript
466
+ const ensureIterable = require("type/iterable/ensure");
467
+
468
+ ensureIterable([]); // []
469
+ ensureIterable("foo", { allowString: true }); // "foo"
470
+ ensureIterable({}); // Thrown TypeError: null is not a iterable
471
+ ```
472
+
473
+ ---
474
+
475
+ ### Date
476
+
477
+ _Date_ instance
478
+
479
+ #### `date/is`
480
+
481
+ Confirms if given object is a native date, and is not an _Invalid Date_
482
+
483
+ ```javascript
484
+ const isDate = require("type/date/is");
485
+
486
+ isDate(new Date()); // true
487
+ isDate(new Date("Invalid date")); // false
488
+ isDate(Date.now()); // false
489
+ isDate("foo"); // false
490
+ ```
491
+
492
+ #### `date/ensure`
493
+
494
+ If given argument is a date object, it is returned back. Otherwise `TypeError` is thrown.
495
+
496
+ ```javascript
497
+ const ensureDate = require("type/date/ensure");
498
+
499
+ const date = new Date();
500
+ ensureDate(date); // date
501
+ ensureDate(123123); // Thrown TypeError: 123123 is not a date object
502
+ ```
503
+
504
+ ---
505
+
506
+ ### Time value
507
+
508
+ _number_ primitive which is a valid _time value_ (as used internally in _Date_ instances)
509
+
510
+ #### `time-value/coerce`
511
+
512
+ Follows [`integer/coerce`](#integercoerce) but returns `null` in place of values which go beyond 100 000 0000 days from unix epoch
513
+
514
+ ```javascript
515
+ const coerceToTimeValue = require("type/time-value/coerce");
516
+
517
+ coerceToTimeValue(12312312); // true
518
+ coerceToTimeValue(Number.MAX_SAFE_INTEGER); // false
519
+ coerceToTimeValue("foo"); // false
520
+ ```
521
+
522
+ ##### `time-value/ensure`
523
+
524
+ If given argument is a _time value_ coercible value (via [`time-value/coerce`](#time-valuecoerce)) returns result number.
525
+ Otherwise `TypeError` is thrown.
526
+
527
+ ```javascript
528
+ const ensureTimeValue = require("type/time-value/ensure");
529
+
530
+ ensureTimeValue(12.93); // "12"
531
+ ensureTimeValue(Number.MAX_SAFE_INTEGER); // Thrown TypeError: null is not a natural number
532
+ ```
533
+
534
+ ---
535
+
536
+ ### Function
537
+
538
+ _Function_ instance
539
+
540
+ #### `function/is`
541
+
542
+ Confirms if given object is a native function
543
+
544
+ ```javascript
545
+ const isFunction = require("type/function/is");
546
+
547
+ isFunction(function () {}); // true
548
+ isFunction(() => {}); // true
549
+ isFunction(class {}); // true
550
+ isFunction("foo"); // false
551
+ ```
552
+
553
+ #### `function/ensure`
554
+
555
+ If given argument is a function object, it is returned back. Otherwise `TypeError` is thrown.
556
+
557
+ ```javascript
558
+ const ensureFunction = require("type/function/ensure");
559
+
560
+ const fn = function () {};
561
+ ensureFunction(fn); // fn
562
+ ensureFunction(/foo/); // Thrown TypeError: /foo/ is not a function
563
+ ```
564
+
565
+ ---
566
+
567
+ #### Plain Function
568
+
569
+ A _Function_ instance that is not a _Class_
570
+
571
+ ##### `plain-function/is`
572
+
573
+ Confirms if given object is a _plain function_
574
+
575
+ ```javascript
576
+ const isPlainFunction = require("type/plain-function/is");
577
+
578
+ isPlainFunction(function () {}); // true
579
+ isPlainFunction(() => {}); // true
580
+ isPlainFunction(class {}); // false
581
+ isPlainFunction("foo"); // false
582
+ ```
583
+
584
+ ##### `plain-function/ensure`
585
+
586
+ If given argument is a _plain function_ object, it is returned back. Otherwise `TypeError` is thrown.
587
+
588
+ ```javascript
589
+ const ensurePlainFunction = require("type/function/ensure");
590
+
591
+ const fn = function () {};
592
+ ensurePlainFunction(fn); // fn
593
+ ensurePlainFunction(class {}); // Thrown TypeError: class is not a plain function
594
+ ```
595
+
596
+ ---
597
+
598
+ ### RegExp
599
+
600
+ _RegExp_ instance
601
+
602
+ #### `reg-exp/is`
603
+
604
+ Confirms if given object is a native regular expression object
605
+
606
+ ```javascript
607
+ const isRegExp = require("type/reg-exp/is");
608
+
609
+ isRegExp(/foo/);
610
+ isRegExp({}); // false
611
+ isRegExp("foo"); // false
612
+ ```
613
+
614
+ #### `reg-exp/ensure`
615
+
616
+ If given argument is a regular expression object, it is returned back. Otherwise `TypeError` is thrown.
617
+
618
+ ```javascript
619
+ const ensureRegExp = require("type/reg-exp/ensure");
620
+
621
+ ensureRegExp(/foo/); // /foo/
622
+ ensureRegExp("foo"); // Thrown TypeError: null is not a regular expression object
623
+ ```
624
+
625
+ ---
626
+
627
+ ### Promise
628
+
629
+ _Promise_ instance
630
+
631
+ #### `promise/is`
632
+
633
+ Confirms if given object is a native _promise_
634
+
635
+ ```javascript
636
+ const isPromise = require("type/promise/is");
637
+
638
+ isPromise(Promise.resolve()); // true
639
+ isPromise({ then: () => {} }); // false
640
+ isPromise({}); // false
641
+ ```
642
+
643
+ ##### `promise/ensure`
644
+
645
+ If given argument is a promise, it is returned back. Otherwise `TypeError` is thrown.
646
+
647
+ ```javascript
648
+ const ensurePromise = require("type/promise/ensure");
649
+
650
+ const promise = Promise.resolve();
651
+ ensurePromise(promise); // promise
652
+ eensurePromise({}); // Thrown TypeError: [object Object] is not a promise
653
+ ```
654
+
655
+ ---
656
+
657
+ #### Thenable
658
+
659
+ _Thenable_ object (an object with `then` method)
660
+
661
+ ##### `thenable/is`
662
+
663
+ Confirms if given object is a _thenable_
664
+
665
+ ```javascript
666
+ const isThenable = require("type/thenable/is");
667
+
668
+ isThenable(Promise.resolve()); // true
669
+ isThenable({ then: () => {} }); // true
670
+ isThenable({}); // false
671
+ ```
672
+
673
+ ##### `thenable/ensure`
674
+
675
+ If given argument is a _thenable_ object, it is returned back. Otherwise `TypeError` is thrown.
676
+
677
+ ```javascript
678
+ const ensureThenable = require("type/thenable/ensure");
679
+
680
+ const promise = Promise.resolve();
681
+ ensureThenable(promise); // promise
682
+ ensureThenable({}); // Thrown TypeError: [object Object] is not a thenable object
683
+ ```
684
+
685
+ ---
686
+
687
+ ### Error
688
+
689
+ _Error_ instance
690
+
691
+ #### `error/is`
692
+
693
+ Confirms if given object is a native error object
694
+
695
+ ```javascript
696
+ const isError = require("type/error/is");
697
+
698
+ isError(new Error()); // true
699
+ isError({ mesage: "Fake error" }); // false
700
+ ```
701
+
702
+ #### `error/ensure`
703
+
704
+ If given argument is an error object, it is returned back. Otherwise `TypeError` is thrown.
705
+
706
+ ```javascript
707
+ const ensureError = require("type/error/ensure");
708
+
709
+ const someError = new Error("Some error");
710
+ ensureError(someError); // someError
711
+ ensureError({ mesage: "Fake error" }); // Thrown TypeError: [object Object] is not an error object
712
+ ```
713
+
714
+ ---
715
+
716
+ ### Prototype
717
+
718
+ Some constructor's `prototype` property
719
+
720
+ #### `prototype/is`
721
+
722
+ Confirms if given object serves as a _prototype_ property
723
+
724
+ ```javascript
725
+ const isPrototype = require("type/prototype/is");
726
+
727
+ isPrototype({}); // false
728
+ isPrototype(Object.prototype); // true
729
+ isPrototype(Array.prototype); // true
730
+ ```
731
+
732
+ ### Tests
733
+
734
+ $ npm test
735
+
736
+ [nix-build-image]: https://semaphoreci.com/api/v1/medikoo-org/type/branches/master/shields_badge.svg
737
+ [nix-build-url]: https://semaphoreci.com/medikoo-org/type
738
+ [win-build-image]: https://ci.appveyor.com/api/projects/status/8nrtluuwsb5k9l8d?svg=true
739
+ [win-build-url]: https://ci.appveyor.com/api/project/medikoo/type
740
+ [cov-image]: https://img.shields.io/codecov/c/github/medikoo/type.svg
741
+ [cov-url]: https://codecov.io/gh/medikoo/type
742
+ [npm-image]: https://img.shields.io/npm/v/type.svg
743
+ [npm-url]: https://www.npmjs.com/package/type