@elliemae/ds-props-helpers 2.3.1-rc.2 → 3.0.0-alpha.2

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 (202) hide show
  1. package/dist/cjs/defaultProps/index.js +28 -0
  2. package/dist/cjs/defaultProps/index.js.map +7 -0
  3. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js +62 -0
  4. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js.map +7 -0
  5. package/dist/cjs/getProps/index.js +37 -0
  6. package/dist/cjs/getProps/index.js.map +7 -0
  7. package/dist/cjs/globalProps/constants.js +397 -0
  8. package/dist/cjs/globalProps/constants.js.map +7 -0
  9. package/dist/cjs/globalProps/globalAttributesPropTypes.js +398 -0
  10. package/dist/cjs/globalProps/globalAttributesPropTypes.js.map +7 -0
  11. package/dist/cjs/globalProps/index.js +29 -0
  12. package/dist/cjs/globalProps/index.js.map +7 -0
  13. package/dist/cjs/globalProps/useGetGlobalAttributes.js +56 -0
  14. package/dist/cjs/globalProps/useGetGlobalAttributes.js.map +7 -0
  15. package/dist/cjs/index.js +33 -0
  16. package/dist/cjs/index.js.map +7 -0
  17. package/dist/cjs/propTypes/PropTypes.js +149 -0
  18. package/dist/cjs/propTypes/PropTypes.js.map +7 -0
  19. package/dist/cjs/propTypes/customPropTypes.js +38 -0
  20. package/dist/cjs/propTypes/customPropTypes.js.map +7 -0
  21. package/dist/cjs/propTypes/describe.js +81 -0
  22. package/dist/cjs/propTypes/describe.js.map +7 -0
  23. package/dist/cjs/propTypes/describeConversions.js +96 -0
  24. package/dist/cjs/propTypes/describeConversions.js.map +7 -0
  25. package/dist/cjs/propTypes/describeGuards.js +49 -0
  26. package/dist/cjs/propTypes/describeGuards.js.map +7 -0
  27. package/dist/cjs/propTypes/index.js +37 -0
  28. package/dist/cjs/propTypes/index.js.map +7 -0
  29. package/dist/cjs/propTypes/toTypescript.js +154 -0
  30. package/dist/cjs/propTypes/toTypescript.js.map +7 -0
  31. package/dist/cjs/propTypes/types.js +27 -0
  32. package/dist/cjs/propTypes/types.js.map +7 -0
  33. package/dist/cjs/tests/globalProps/TestComponent.js +54 -0
  34. package/dist/cjs/tests/globalProps/TestComponent.js.map +7 -0
  35. package/dist/cjs/tests/validation/test.schema.js +67 -0
  36. package/dist/cjs/tests/validation/test.schema.js.map +7 -0
  37. package/dist/cjs/validation/errorTemplates.js +48 -0
  38. package/dist/cjs/validation/errorTemplates.js.map +7 -0
  39. package/dist/cjs/validation/index.js +30 -0
  40. package/dist/cjs/validation/index.js.map +7 -0
  41. package/dist/cjs/validation/typescriptGuards.js +65 -0
  42. package/dist/cjs/validation/typescriptGuards.js.map +7 -0
  43. package/dist/cjs/validation/typescriptParsers.js +76 -0
  44. package/dist/cjs/validation/typescriptParsers.js.map +7 -0
  45. package/dist/cjs/validation/typescriptValidator.js +171 -0
  46. package/dist/cjs/validation/typescriptValidator.js.map +7 -0
  47. package/dist/cjs/validation/validator.js +55 -0
  48. package/dist/cjs/validation/validator.js.map +7 -0
  49. package/dist/cjs/xstyledProps/constants.js +88 -0
  50. package/dist/cjs/xstyledProps/constants.js.map +7 -0
  51. package/dist/cjs/xstyledProps/index.js +29 -0
  52. package/dist/cjs/xstyledProps/index.js.map +7 -0
  53. package/dist/cjs/xstyledProps/useGetXstyledProps.js +48 -0
  54. package/dist/cjs/xstyledProps/useGetXstyledProps.js.map +7 -0
  55. package/dist/cjs/xstyledProps/xstyledPropTypes.js +92 -0
  56. package/dist/cjs/xstyledProps/xstyledPropTypes.js.map +7 -0
  57. package/dist/esm/defaultProps/index.js +3 -0
  58. package/dist/esm/defaultProps/index.js.map +7 -0
  59. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js +35 -0
  60. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js.map +7 -0
  61. package/dist/esm/getProps/index.js +8 -0
  62. package/dist/esm/getProps/index.js.map +7 -0
  63. package/dist/esm/globalProps/constants.js +368 -0
  64. package/dist/esm/globalProps/constants.js.map +7 -0
  65. package/{esm → dist/esm}/globalProps/globalAttributesPropTypes.js +58 -67
  66. package/dist/esm/globalProps/globalAttributesPropTypes.js.map +7 -0
  67. package/dist/esm/globalProps/index.js +4 -0
  68. package/dist/esm/globalProps/index.js.map +7 -0
  69. package/dist/esm/globalProps/useGetGlobalAttributes.js +27 -0
  70. package/dist/esm/globalProps/useGetGlobalAttributes.js.map +7 -0
  71. package/dist/esm/index.js +8 -0
  72. package/dist/esm/index.js.map +7 -0
  73. package/dist/esm/propTypes/PropTypes.js +122 -0
  74. package/dist/esm/propTypes/PropTypes.js.map +7 -0
  75. package/dist/esm/propTypes/customPropTypes.js +9 -0
  76. package/dist/esm/propTypes/customPropTypes.js.map +7 -0
  77. package/dist/esm/propTypes/describe.js +52 -0
  78. package/dist/esm/propTypes/describe.js.map +7 -0
  79. package/dist/esm/propTypes/describeConversions.js +76 -0
  80. package/dist/esm/propTypes/describeConversions.js.map +7 -0
  81. package/dist/esm/propTypes/describeGuards.js +20 -0
  82. package/dist/esm/propTypes/describeGuards.js.map +7 -0
  83. package/dist/esm/propTypes/index.js +8 -0
  84. package/dist/esm/propTypes/index.js.map +7 -0
  85. package/dist/esm/propTypes/toTypescript.js +127 -0
  86. package/dist/esm/propTypes/toTypescript.js.map +7 -0
  87. package/dist/esm/propTypes/types.js +2 -0
  88. package/dist/esm/propTypes/types.js.map +7 -0
  89. package/dist/esm/tests/globalProps/TestComponent.js +27 -0
  90. package/dist/esm/tests/globalProps/TestComponent.js.map +7 -0
  91. package/dist/esm/tests/validation/test.schema.js +38 -0
  92. package/dist/esm/tests/validation/test.schema.js.map +7 -0
  93. package/dist/esm/validation/errorTemplates.js +19 -0
  94. package/dist/esm/validation/errorTemplates.js.map +7 -0
  95. package/dist/esm/validation/index.js +5 -0
  96. package/dist/esm/validation/index.js.map +7 -0
  97. package/dist/esm/validation/typescriptGuards.js +36 -0
  98. package/dist/esm/validation/typescriptGuards.js.map +7 -0
  99. package/dist/esm/validation/typescriptParsers.js +47 -0
  100. package/dist/esm/validation/typescriptParsers.js.map +7 -0
  101. package/dist/esm/validation/typescriptValidator.js +153 -0
  102. package/dist/esm/validation/typescriptValidator.js.map +7 -0
  103. package/dist/esm/validation/validator.js +26 -0
  104. package/dist/esm/validation/validator.js.map +7 -0
  105. package/dist/esm/xstyledProps/constants.js +59 -0
  106. package/dist/esm/xstyledProps/constants.js.map +7 -0
  107. package/dist/esm/xstyledProps/index.js +4 -0
  108. package/dist/esm/xstyledProps/index.js.map +7 -0
  109. package/dist/esm/xstyledProps/useGetXstyledProps.js +19 -0
  110. package/dist/esm/xstyledProps/useGetXstyledProps.js.map +7 -0
  111. package/dist/esm/xstyledProps/xstyledPropTypes.js +63 -0
  112. package/dist/esm/xstyledProps/xstyledPropTypes.js.map +7 -0
  113. package/package.json +72 -81
  114. package/cjs/defaultProps/index.js +0 -9
  115. package/cjs/defaultProps/useMemoMergePropsWithDefault.js +0 -48
  116. package/cjs/getProps/index.js +0 -20
  117. package/cjs/globalProps/constants.js +0 -16
  118. package/cjs/globalProps/globalAttributesPropTypes.js +0 -382
  119. package/cjs/globalProps/index.js +0 -11
  120. package/cjs/globalProps/useGetGlobalAttributes.js +0 -37
  121. package/cjs/index.js +0 -32
  122. package/cjs/propTypes/PropTypes.js +0 -131
  123. package/cjs/propTypes/customPropTypes.js +0 -21
  124. package/cjs/propTypes/describe.js +0 -64
  125. package/cjs/propTypes/describeConversions.js +0 -104
  126. package/cjs/propTypes/describeGuards.js +0 -21
  127. package/cjs/propTypes/index.js +0 -11
  128. package/cjs/propTypes/toTypescript.js +0 -160
  129. package/cjs/propTypes/types.js +0 -2
  130. package/cjs/validation/errorTemplates.js +0 -16
  131. package/cjs/validation/index.js +0 -15
  132. package/cjs/validation/typescriptGuards.js +0 -36
  133. package/cjs/validation/typescriptParsers.js +0 -45
  134. package/cjs/validation/typescriptValidator.js +0 -208
  135. package/cjs/validation/validator.js +0 -36
  136. package/cjs/xstyledProps/constants.js +0 -21
  137. package/cjs/xstyledProps/index.js +0 -11
  138. package/cjs/xstyledProps/useGetXstyledProps.js +0 -27
  139. package/cjs/xstyledProps/xstyledPropTypes.js +0 -75
  140. package/esm/defaultProps/index.js +0 -1
  141. package/esm/defaultProps/useMemoMergePropsWithDefault.js +0 -39
  142. package/esm/getProps/index.js +0 -15
  143. package/esm/globalProps/constants.js +0 -12
  144. package/esm/globalProps/index.js +0 -2
  145. package/esm/globalProps/useGetGlobalAttributes.js +0 -33
  146. package/esm/index.js +0 -11
  147. package/esm/propTypes/PropTypes.js +0 -125
  148. package/esm/propTypes/customPropTypes.js +0 -17
  149. package/esm/propTypes/describe.js +0 -62
  150. package/esm/propTypes/describeConversions.js +0 -96
  151. package/esm/propTypes/describeGuards.js +0 -10
  152. package/esm/propTypes/index.js +0 -2
  153. package/esm/propTypes/toTypescript.js +0 -154
  154. package/esm/propTypes/types.js +0 -1
  155. package/esm/validation/errorTemplates.js +0 -11
  156. package/esm/validation/index.js +0 -3
  157. package/esm/validation/typescriptGuards.js +0 -23
  158. package/esm/validation/typescriptParsers.js +0 -41
  159. package/esm/validation/typescriptValidator.js +0 -203
  160. package/esm/validation/validator.js +0 -32
  161. package/esm/xstyledProps/constants.js +0 -16
  162. package/esm/xstyledProps/index.js +0 -2
  163. package/esm/xstyledProps/useGetXstyledProps.js +0 -23
  164. package/esm/xstyledProps/xstyledPropTypes.js +0 -71
  165. package/types/defaultProps/index.d.ts +0 -1
  166. package/types/defaultProps/useMemoMergePropsWithDefault.d.ts +0 -1
  167. package/types/getProps/index.d.ts +0 -2
  168. package/types/globalProps/constants.d.ts +0 -3
  169. package/types/globalProps/globalAttributesPropTypes.d.ts +0 -363
  170. package/types/globalProps/index.d.ts +0 -2
  171. package/types/globalProps/useGetGlobalAttributes.d.ts +0 -4
  172. package/types/index.d.ts +0 -6
  173. package/types/propTypes/PropTypes.d.ts +0 -3
  174. package/types/propTypes/customPropTypes.d.ts +0 -2
  175. package/types/propTypes/describe.d.ts +0 -3
  176. package/types/propTypes/describeConversions.d.ts +0 -3
  177. package/types/propTypes/describeGuards.d.ts +0 -9
  178. package/types/propTypes/index.d.ts +0 -3
  179. package/types/propTypes/toTypescript.d.ts +0 -3
  180. package/types/propTypes/types.d.ts +0 -99
  181. package/types/tests/globalProps/TestComponent.d.ts +0 -1
  182. package/types/tests/globalProps/globalAttributes.test.d.ts +0 -1
  183. package/types/tests/validation/any.validation.test.d.ts +0 -1
  184. package/types/tests/validation/array.validation.test.d.ts +0 -1
  185. package/types/tests/validation/boolean.validation.test.d.ts +0 -1
  186. package/types/tests/validation/function.validation.test.d.ts +0 -1
  187. package/types/tests/validation/number.validation.test.d.ts +0 -1
  188. package/types/tests/validation/object.validation.test.d.ts +0 -1
  189. package/types/tests/validation/schema.validation.test.d.ts +0 -1
  190. package/types/tests/validation/string.validation.test.d.ts +0 -1
  191. package/types/tests/validation/test.schema.d.ts +0 -1
  192. package/types/tests/validation/union.validation.test.d.ts +0 -1
  193. package/types/validation/errorTemplates.d.ts +0 -2
  194. package/types/validation/index.d.ts +0 -3
  195. package/types/validation/typescriptGuards.d.ts +0 -12
  196. package/types/validation/typescriptParsers.d.ts +0 -1
  197. package/types/validation/typescriptValidator.d.ts +0 -15
  198. package/types/validation/validator.d.ts +0 -1
  199. package/types/xstyledProps/constants.d.ts +0 -2
  200. package/types/xstyledProps/index.d.ts +0 -2
  201. package/types/xstyledProps/useGetXstyledProps.d.ts +0 -5
  202. package/types/xstyledProps/xstyledPropTypes.d.ts +0 -57
@@ -1,154 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.filter.js';
3
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
4
- import 'core-js/modules/esnext.async-iterator.map.js';
5
- import 'core-js/modules/esnext.iterator.map.js';
6
- import 'core-js/modules/esnext.async-iterator.for-each.js';
7
- import 'core-js/modules/esnext.iterator.constructor.js';
8
- import 'core-js/modules/esnext.iterator.for-each.js';
9
-
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
- /* eslint-disable @typescript-eslint/restrict-template-expressions */
15
-
16
- /* eslint-disable @typescript-eslint/no-use-before-define */
17
-
18
- /* eslint-disable complexity */
19
-
20
- /* eslint-disable react/forbid-foreign-prop-types */
21
- const arrayFormat = array => array.map(propType => propTypeFormat(propType));
22
-
23
- const shapeFormat = shape => {
24
- const props = Object.keys(shape).map(key => {
25
- const value = shape[key];
26
- let valueFormat;
27
-
28
- if (value.type && (value.type === 'arrayOf' || value.type === 'oneOfType' || value.type === 'oneOf') && Array.isArray(value.args)) {
29
- valueFormat = "".concat(propTypeFormat(value));
30
- } else if (value.type === 'shape') {
31
- valueFormat = "".concat(propTypeFormat(value));
32
- } else {
33
- valueFormat = propTypeFormat(value);
34
- }
35
-
36
- return "".concat(key).concat(value.reactDesc && value.reactDesc.required ? '' : '?', ": ").concat(valueFormat);
37
- });
38
- return "{".concat(props.join(','), "}");
39
- };
40
-
41
- const propTypeFormat = function (propType) {
42
- let joinWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
43
- let result;
44
-
45
- if (Array.isArray(propType)) {
46
- result = arrayFormat(propType).join(joinWith);
47
- } else if (typeof propType !== 'function' && propType.type) {
48
- switch (propType.type) {
49
- case 'array':
50
- result = 'any[]';
51
- break;
52
-
53
- case 'arrayOf':
54
- if (propType.args.type === 'oneOfType') {
55
- result = "(".concat(propTypeFormat(propType.args, ' | '), ")[]");
56
- } else {
57
- result = "".concat(propTypeFormat(propType.args, '\n'), "[]");
58
- }
59
-
60
- break;
61
-
62
- case 'tuple':
63
- result = "[".concat(propTypeFormat(propType.args, ', '), "]");
64
- break;
65
-
66
- case 'bool':
67
- result = 'boolean';
68
- break;
69
-
70
- case 'func':
71
- result = '((...args: any[]) => any)';
72
- break;
73
-
74
- case 'node':
75
- result = 'React.ReactNode';
76
- break;
77
-
78
- case 'element':
79
- result = 'JSX.Element';
80
- break;
81
-
82
- case 'instanceOf':
83
- result = 'any';
84
- break;
85
-
86
- case 'symbol':
87
- result = 'any';
88
- break;
89
-
90
- case 'objectOf':
91
- result = "{ [key: string]: ".concat(propTypeFormat(propType.args), " }");
92
- break;
93
-
94
- case 'oneOf':
95
- result = propType.args.map(a => "\"".concat(a, "\"")).join(' | ');
96
- break;
97
-
98
- case 'oneOfType':
99
- result = "".concat(propTypeFormat(propType.args, ' | '));
100
- break;
101
-
102
- case 'shape':
103
- result = "".concat(shapeFormat(propType.args));
104
- break;
105
-
106
- default:
107
- result = "".concat(propType.type);
108
- break;
109
- }
110
- } else {
111
- result = 'any';
112
- }
113
-
114
- return result;
115
- };
116
-
117
- const propTypeAsTypescript = (propType, propName) => {
118
- const documentation = _objectSpread(_objectSpread({}, propType.reactDesc), {}, {
119
- name: propName
120
- });
121
-
122
- documentation.format = propTypeFormat(propType);
123
- return documentation;
124
- };
125
-
126
- function descToTypescript(component, reactDesc) {
127
- if (!component) {
128
- throw new Error('react-desc: component is required');
129
- }
130
-
131
- const documentation = _objectSpread({
132
- name: component.displayName || component.name
133
- }, reactDesc);
134
-
135
- if (reactDesc) {
136
- delete documentation.propTypes;
137
-
138
- if (reactDesc.propTypes) {
139
- const propTypes = [];
140
- Object.keys(reactDesc.propTypes).forEach(propName => {
141
- const propType = reactDesc.propTypes[propName];
142
- propTypes.push(propTypeAsTypescript(propType, propName));
143
- });
144
-
145
- if (propTypes.length > 0) {
146
- documentation.properties = propTypes;
147
- }
148
- }
149
- }
150
-
151
- return documentation;
152
- }
153
-
154
- export { descToTypescript as default };
@@ -1 +0,0 @@
1
-
@@ -1,11 +0,0 @@
1
- import 'core-js/modules/es.string.replace.js';
2
-
3
- /* eslint-disable max-params */
4
- const throwTypeError = (componentName, validPropKey, invalidProp, validFormat) => {
5
- throw new Error("".concat(componentName, ":: You are trying to pass a not valid \"").concat(validPropKey, "\" property, \n please provide a valid type.\n\n Received: ").concat(invalidProp, " (").concat(typeof invalidProp, ")\n Expected: (").concat(validFormat.replace('\n', ' or '), ")\n "));
6
- };
7
- const throwRequiredError = (componentName, validPropKey) => {
8
- throw new Error("".concat(componentName, ":: Please provide a/an \"").concat(validPropKey, "\" property to use this component. \n This property is required.\n "));
9
- };
10
-
11
- export { throwRequiredError, throwTypeError };
@@ -1,3 +0,0 @@
1
- export { useValidatePropTypes } from './validator.js';
2
- export { throwRequiredError, throwTypeError } from './errorTemplates.js';
3
- export { useValidateTypescriptPropTypes, validateTypescriptPropTypesImplementation } from './typescriptValidator.js';
@@ -1,23 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.for-each.js';
4
-
5
- const isPrimitiveType = format => ['string', 'number', 'boolean'].includes(format);
6
- const isUndefined = format => format === '"undefined"';
7
- const isNull = format => format === '"null"';
8
- const isUnion = format => {
9
- let depth = 0;
10
- let satisfies = false;
11
- format.split('').forEach(char => {
12
- if (['{', '('].includes(char)) depth += 1;else if (['}', ')'].includes(char)) depth -= 1;else if (char === '|' && depth === 0) satisfies = true;
13
- });
14
- return satisfies;
15
- };
16
- const isString = format => !isUnion(format) && format[0] === '"' && format.slice(-1) === '"';
17
- const isArray = format => !isUnion(format) && format.slice(-2) === '[]';
18
- const isObject = format => format === 'object' || !isUnion(format) && format[0] === '{' && format.slice(-1) === '}';
19
- const isFunction = format => !isUnion(format) && format === '((...args: any[]) => any)';
20
- const isJSXorNode = format => !isUnion(format) && ['React.ReactNode', 'JSX.Element'].includes(format);
21
- const isSomethingWithParenthesis = format => !isUnion(format) && format[0] === '(' && format.slice(-1) === ')';
22
-
23
- export { isArray, isFunction, isJSXorNode, isNull, isObject, isPrimitiveType, isSomethingWithParenthesis, isString, isUndefined, isUnion };
@@ -1,41 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.for-each.js';
4
-
5
- /* eslint-disable complexity */
6
- const typescriptObjectParser = format => {
7
- const keyValuePairs = []; // State of the algorithm
8
-
9
- let lastKey = '';
10
- let lastValue = '';
11
- let shouldAppendToKey = true;
12
-
13
- const pushPair = () => {
14
- if (lastKey) keyValuePairs.push([lastKey, lastValue]);
15
- lastKey = '';
16
- lastValue = '';
17
- shouldAppendToKey = true;
18
- }; // Complex -- but working -- logic
19
-
20
-
21
- let depth = 0;
22
- format.split('').forEach(char => {
23
- if (char === '{') {
24
- depth += 1;
25
- if (depth > 1) lastValue += char;
26
- } else if (char === '}') {
27
- if (depth > 1) lastValue += char;
28
- depth -= 1;
29
- if (depth === 1) pushPair();
30
- } else if (char === ':') {
31
- shouldAppendToKey = false;
32
- if (depth > 1) lastValue += char;
33
- } else if (char === ',') {
34
- if (depth === 1) pushPair();else lastValue += char;
35
- } else if (char === ' ') ; else if (shouldAppendToKey) lastKey += char;else lastValue += char;
36
- });
37
- pushPair();
38
- return keyValuePairs;
39
- };
40
-
41
- export { typescriptObjectParser };
@@ -1,203 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.for-each.js';
4
- import 'core-js/modules/web.dom-collections.iterator.js';
5
- import { useState, useMemo } from 'react';
6
- import '../propTypes/PropTypes.js';
7
- import describe from '../propTypes/describe.js';
8
- import { throwRequiredError, throwTypeError } from './errorTemplates.js';
9
- import { isUndefined, isNull, isPrimitiveType, isUnion, isString, isArray, isObject, isFunction, isJSXorNode, isSomethingWithParenthesis } from './typescriptGuards.js';
10
- import { typescriptObjectParser } from './typescriptParsers.js';
11
-
12
- // =============================================================================
13
- // Atom Validators
14
- // =============================================================================
15
- // This functions will validate something from the data
16
- // and optionally recursively apply `validateValueWithFormat`
17
- // in smaller parts
18
- const validateUndefined = (schemaName, key, value, format) => {
19
- if (value !== undefined || value === 'undefined') {
20
- throwTypeError(schemaName, key, value, format);
21
- }
22
- };
23
-
24
- const validateNull = (schemaName, key, value, format) => {
25
- if (value !== null || value === 'null') {
26
- throwTypeError(schemaName, key, value, format);
27
- }
28
- };
29
-
30
- const validatePrimitiveType = (schemaName, key, value, format) => {
31
- if (typeof value !== format) {
32
- throwTypeError(schemaName, key, value, format);
33
- }
34
- };
35
-
36
- const validateString = (schemaName, key, value, format) => {
37
- if (value !== format.slice(1, -1)) {
38
- throwTypeError(schemaName, key, value, format);
39
- }
40
- };
41
-
42
- const validateArray = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
43
- // Check that we have an array
44
- if (!Array.isArray(value)) {
45
- throwTypeError(schemaName, key, value, format);
46
- } // Check that each element inside satisfies the format
47
-
48
-
49
- value.forEach((val, index) => {
50
- // this is a recursive func, we need to invoke it before it's defined.
51
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
52
- validateValueWithFormat(schemaName, "".concat(key, "[").concat(index, "]"), val, format.slice(0, -2), validationsMemo, nextValidationsMemo);
53
- });
54
- };
55
-
56
- function isObjectType(value) {
57
- return !(typeof value !== 'object' || Array.isArray(value));
58
- }
59
-
60
- const validateObject = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
61
- const valuesIsObject = isObjectType(value); // Check that we have an object
62
-
63
- if (!valuesIsObject) {
64
- throwTypeError(schemaName, key, value, format);
65
- return;
66
- }
67
-
68
- if (format === 'object') return;
69
- const keyValuePairs = typescriptObjectParser(format); // Now we have the key - value pairs
70
- // Each key could either be required or not
71
- // Just recursively check the object
72
-
73
- keyValuePairs.forEach(_ref => {
74
- let [objectKey, objectValue] = _ref;
75
- const trueKey = objectKey.slice(-1) === '?' ? objectKey.slice(0, -1) : objectKey;
76
-
77
- if (trueKey === objectKey && !(trueKey in value)) {
78
- throwRequiredError(schemaName, key);
79
- }
80
-
81
- if (trueKey in value) {
82
- // this is a recursive func, we need to invoke it before it's defined.
83
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
84
- validateValueWithFormat(schemaName, "".concat(key, "[").concat(trueKey, "]"), value[trueKey], objectValue, validationsMemo, nextValidationsMemo);
85
- }
86
- });
87
- };
88
-
89
- const validateUnion = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
90
- const possibilities = format.split(/\s?\|\s?/);
91
- const errors = [];
92
- possibilities.forEach(possibility => {
93
- try {
94
- // this is a recursive func, we need to invoke it before it's defined.
95
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
96
- validateValueWithFormat(schemaName, key, value, possibility, validationsMemo, nextValidationsMemo);
97
- } catch (e) {
98
- errors.push(e);
99
- }
100
- });
101
-
102
- if (errors.length === possibilities.length) {
103
- throwTypeError(schemaName, key, value, format);
104
- }
105
- };
106
-
107
- const validateFunction = (schemaName, key, value, format) => {
108
- // Check that we have a function
109
- if (typeof value !== 'function') {
110
- throwTypeError(schemaName, key, value, format);
111
- }
112
- };
113
-
114
- function isJSXElement(value) {
115
- return value === null || typeof value === 'object' && value !== null && '$$typeof' in value;
116
- }
117
-
118
- const validateJSXorNode = (schemaName, key, value, format) => {
119
- const valueIsJSX = isJSXElement(value);
120
-
121
- if (format === 'JSX.Element' && !valueIsJSX) {
122
- throwTypeError(schemaName, key, value, format);
123
- }
124
- }; // =============================================================================
125
- // Schema validator
126
- // =============================================================================
127
-
128
-
129
- const validateValueWithFormat = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
130
- nextValidationsMemo[value] = format;
131
-
132
- if (value in validationsMemo) {
133
- // We already validated this value on this format
134
- return;
135
- }
136
-
137
- if (isUndefined(format)) {
138
- validateUndefined(schemaName, key, value, format);
139
- } else if (isNull(format)) {
140
- validateNull(schemaName, key, value, format);
141
- } else if (isPrimitiveType(format)) {
142
- validatePrimitiveType(schemaName, key, value, format);
143
- } else if (isUnion(format)) {
144
- validateUnion(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
145
- } else if (isString(format)) {
146
- validateString(schemaName, key, value, format);
147
- } else if (isArray(format)) {
148
- validateArray(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
149
- } else if (isObject(format)) {
150
- validateObject(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
151
- } else if (isFunction(format)) {
152
- validateFunction(schemaName, key, value, format);
153
- } else if (isJSXorNode(format)) {
154
- validateJSXorNode(schemaName, key, value, format);
155
- } else if (isSomethingWithParenthesis(format)) {
156
- validateValueWithFormat(schemaName, key, value, format.slice(1, -1), validationsMemo, nextValidationsMemo);
157
- }
158
- };
159
-
160
- const validateTypescriptPropTypesImplementation = function (props, schema) {
161
- let validationsMemo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
162
- let nextValidationsMemo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
163
- const {
164
- properties,
165
- name: schemaName
166
- } = schema;
167
- properties.forEach(property => {
168
- const {
169
- name,
170
- format,
171
- required
172
- } = property;
173
-
174
- if (required && !(name in props)) {
175
- throwRequiredError(schema.name, name);
176
- }
177
-
178
- if (name in props && (props[name] !== undefined || required)) {
179
- validateValueWithFormat(schemaName, name, props[name], format, validationsMemo, nextValidationsMemo);
180
- }
181
- });
182
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
183
-
184
- const useValidateTypescriptPropTypes = (props, propTypes) => {
185
- const [validationsMemo, setValidationsMemo] = useState({}); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
186
-
187
- const ComponentWithSchema = useMemo(() => {
188
- const Component = () => {}; // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
189
-
190
-
191
- return describe(Component);
192
- }, []); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
193
-
194
- ComponentWithSchema.propTypes = propTypes;
195
- useMemo(() => {
196
- const nextValidationsMemo = {};
197
- validateTypescriptPropTypesImplementation(props, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
198
- ComponentWithSchema.toTypescript(), validationsMemo, nextValidationsMemo);
199
- setValidationsMemo(nextValidationsMemo); // eslint-disable-next-line react-hooks/exhaustive-deps
200
- }, [props]);
201
- };
202
-
203
- export { useValidateTypescriptPropTypes, validateTypescriptPropTypesImplementation };
@@ -1,32 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.for-each.js';
4
- import { throwRequiredError, throwTypeError } from './errorTemplates.js';
5
-
6
- const useValidatePropTypes = (props, schema) => {
7
- schema.properties.forEach(property => {
8
- const propertyName = property.name;
9
- const currentProp = props[propertyName];
10
- const currentPropTypeOf = typeof currentProp; // eslint-disable-next-line max-len
11
-
12
- const currentFormat = property.format; // this is csv representing types e.g.: "string"/"string,number"/"[object],string"
13
-
14
- let isValidReactElement = false; // this depends on react desc definition
15
-
16
- if (property.required && !Object.prototype.hasOwnProperty.call(props, property.name)) {
17
- throwRequiredError(schema.name, property.name);
18
- }
19
-
20
- if (currentPropTypeOf !== 'undefined' && currentProp !== null) {
21
- if (currentPropTypeOf === 'object' && Object.prototype.hasOwnProperty.call(currentProp, '$$typeof') && (currentFormat.includes('node') || currentFormat.includes('element'))) {
22
- isValidReactElement = true;
23
- }
24
-
25
- if (!currentFormat.includes(currentPropTypeOf) && !currentFormat.includes(currentProp) && !isValidReactElement) {
26
- throwTypeError(schema.name, propertyName, currentProp, currentFormat);
27
- }
28
- }
29
- });
30
- };
31
-
32
- export { useValidatePropTypes };
@@ -1,16 +0,0 @@
1
- import 'core-js/modules/web.dom-collections.iterator.js';
2
- import 'core-js/modules/esnext.async-iterator.map.js';
3
- import 'core-js/modules/esnext.iterator.map.js';
4
-
5
- const marginKeys = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'm', 'mt', 'mr', 'mb', 'ml', 'mx', 'my'];
6
- const paddingKeys = ['padding', 'p', 'paddingTop', 'pt', 'paddingRight', 'pr', 'paddingBottom', 'pb', 'paddingLeft', 'pl', 'px', 'py'];
7
- const spaceKeys = ['spaceY', 'spaceX', 'spaceXReverse', 'spaceYReverse'];
8
- const widthKeys = ['w', 'maxWidth', 'maxW', 'minWidth', 'minW'];
9
- const heightKeys = ['h', 'maxHeight', 'maxH', 'minHeight', 'minH'];
10
- const maskSizeKeys = ['maskSize'];
11
- const spacingKeys = [...marginKeys, ...paddingKeys, ...spaceKeys];
12
- const sizingKeys = [...widthKeys, ...heightKeys, ...maskSizeKeys];
13
- const layoutKeys = ['display', 'float', 'boxSizing', 'container', 'overflow', 'overflowX', 'overflowY', 'zIndex', 'position', 'top', 'right', 'bottom', 'left', 'visibility', 'overscrollBehavior', 'objectFit'];
14
- const xstyledKeys = Object.fromEntries([...spacingKeys, ...sizingKeys, ...layoutKeys].map(item => [item, true]));
15
-
16
- export { layoutKeys, xstyledKeys };
@@ -1,2 +0,0 @@
1
- export { useGetXstyledProps } from './useGetXstyledProps.js';
2
- export { xstyledPropTypes } from './xstyledPropTypes.js';
@@ -1,23 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.for-each.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.for-each.js';
4
- import 'core-js/modules/web.dom-collections.iterator.js';
5
- import { useMemo } from 'react';
6
- import { xstyledKeys } from './constants.js';
7
-
8
- const useGetXstyledProps = props => {
9
- const componentXstyledProps = useMemo(() => {
10
- const xstyledPropsObject = {};
11
- Object.entries(props).forEach(_ref => {
12
- let [key, value] = _ref;
13
-
14
- if (key in xstyledKeys) {
15
- xstyledPropsObject[key] = value;
16
- }
17
- });
18
- return xstyledPropsObject;
19
- }, [props]);
20
- return componentXstyledProps;
21
- };
22
-
23
- export { useGetXstyledProps };
@@ -1,71 +0,0 @@
1
- import PropTypes from '../propTypes/PropTypes.js';
2
- import 'core-js/modules/esnext.async-iterator.for-each.js';
3
- import 'core-js/modules/esnext.iterator.constructor.js';
4
- import 'core-js/modules/esnext.iterator.for-each.js';
5
- import 'core-js/modules/web.dom-collections.iterator.js';
6
- import 'core-js/modules/esnext.async-iterator.map.js';
7
- import 'core-js/modules/esnext.iterator.map.js';
8
- import 'prop-types';
9
- import 'core-js/modules/esnext.async-iterator.filter.js';
10
- import 'core-js/modules/esnext.iterator.filter.js';
11
- import '@babel/runtime/helpers/esm/defineProperty';
12
-
13
- const xstyledPropTypes = {
14
- margin: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
15
- m: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
16
- marginTop: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
17
- mt: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
18
- marginRight: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
19
- mr: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
20
- marginBottom: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
21
- mb: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
22
- marginLeft: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
23
- ml: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
24
- mx: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
25
- my: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
26
- padding: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
27
- p: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
28
- paddingTop: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
29
- pt: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
30
- paddingRight: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
31
- pr: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
32
- paddingBottom: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
33
- pb: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
34
- paddingLeft: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
35
- pl: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
36
- px: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
37
- py: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
38
- spaceY: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
39
- spaceX: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
40
- spaceXReverse: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
41
- spaceYReverse: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
42
- w: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
43
- maxWidth: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
44
- maxW: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
45
- minWidth: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
46
- minW: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
47
- h: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
48
- maxHeight: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
49
- maxH: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
50
- minHeight: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
51
- minH: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
52
- maskSize: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
53
- display: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
54
- float: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
55
- boxSizing: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
56
- container: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
57
- overflow: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
58
- overflowX: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
59
- overflowY: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
60
- zIndex: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
61
- position: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
62
- top: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
63
- right: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
64
- bottom: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
65
- left: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
66
- visibility: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
67
- overscrollBehavior: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled(),
68
- objectFit: PropTypes.any.description('Applies to the root container. For more info read xstyled docs').xstyled()
69
- };
70
-
71
- export { xstyledPropTypes };
@@ -1 +0,0 @@
1
- export * from './useMemoMergePropsWithDefault';
@@ -1 +0,0 @@
1
- export declare const useMemoMergePropsWithDefault: <T = Record<string, any>>(props: Partial<T>, defaultProps: Partial<T>, compare?: (a: any, b: any) => boolean) => T;
@@ -1,2 +0,0 @@
1
- export declare const getAriaProps: (props: Record<string, unknown>) => Record<string, unknown>;
2
- export declare const getDataProps: (props: Record<string, unknown>) => Record<string, unknown>;
@@ -1,3 +0,0 @@
1
- import { AriaAttributes, DOMAttributes, HTMLAttributes } from 'react';
2
- export declare type GlobalAttributes<T = true> = Record<keyof (AriaAttributes & DOMAttributes<Element> & HTMLAttributes<Element>), T>;
3
- export declare const globalAttributes: GlobalAttributes<true>;