@elliemae/ds-props-helpers 2.3.0-alpha.8 → 2.3.0-next.10

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 (186) hide show
  1. package/cjs/defaultProps/index.js +9 -0
  2. package/cjs/defaultProps/useMemoMergePropsWithDefault.js +48 -0
  3. package/cjs/getProps/index.js +20 -0
  4. package/cjs/globalProps/constants.js +16 -0
  5. package/cjs/globalProps/globalAttributesPropTypes.js +382 -0
  6. package/cjs/globalProps/index.js +11 -0
  7. package/cjs/globalProps/useGetGlobalAttributes.js +37 -0
  8. package/cjs/index.js +32 -0
  9. package/cjs/propTypes/PropTypes.js +131 -0
  10. package/cjs/propTypes/customPropTypes.js +21 -0
  11. package/cjs/propTypes/describe.js +64 -0
  12. package/cjs/propTypes/describeConversions.js +104 -0
  13. package/cjs/propTypes/describeGuards.js +21 -0
  14. package/cjs/propTypes/index.js +11 -0
  15. package/cjs/propTypes/toTypescript.js +160 -0
  16. package/cjs/propTypes/types.js +2 -0
  17. package/cjs/validation/errorTemplates.js +16 -0
  18. package/cjs/validation/index.js +15 -0
  19. package/cjs/validation/typescriptGuards.js +36 -0
  20. package/cjs/validation/typescriptParsers.js +45 -0
  21. package/cjs/validation/typescriptValidator.js +208 -0
  22. package/cjs/validation/validator.js +36 -0
  23. package/cjs/xstyledProps/constants.js +21 -0
  24. package/cjs/xstyledProps/index.js +11 -0
  25. package/cjs/xstyledProps/useGetXstyledProps.js +27 -0
  26. package/cjs/xstyledProps/xstyledPropTypes.js +75 -0
  27. package/esm/defaultProps/index.js +1 -0
  28. package/esm/defaultProps/useMemoMergePropsWithDefault.js +39 -0
  29. package/esm/getProps/index.js +15 -0
  30. package/esm/globalProps/constants.js +12 -0
  31. package/{dist/esm → esm}/globalProps/globalAttributesPropTypes.js +67 -58
  32. package/esm/globalProps/index.js +2 -0
  33. package/esm/globalProps/useGetGlobalAttributes.js +33 -0
  34. package/esm/index.js +11 -0
  35. package/esm/propTypes/PropTypes.js +125 -0
  36. package/esm/propTypes/customPropTypes.js +17 -0
  37. package/esm/propTypes/describe.js +62 -0
  38. package/esm/propTypes/describeConversions.js +96 -0
  39. package/esm/propTypes/describeGuards.js +10 -0
  40. package/esm/propTypes/index.js +2 -0
  41. package/esm/propTypes/toTypescript.js +154 -0
  42. package/esm/propTypes/types.js +1 -0
  43. package/esm/validation/errorTemplates.js +11 -0
  44. package/esm/validation/index.js +3 -0
  45. package/esm/validation/typescriptGuards.js +23 -0
  46. package/esm/validation/typescriptParsers.js +41 -0
  47. package/esm/validation/typescriptValidator.js +203 -0
  48. package/esm/validation/validator.js +32 -0
  49. package/esm/xstyledProps/constants.js +16 -0
  50. package/esm/xstyledProps/index.js +2 -0
  51. package/esm/xstyledProps/useGetXstyledProps.js +23 -0
  52. package/esm/xstyledProps/xstyledPropTypes.js +71 -0
  53. package/package.json +80 -65
  54. package/types/defaultProps/index.d.ts +1 -0
  55. package/types/defaultProps/useMemoMergePropsWithDefault.d.ts +1 -0
  56. package/types/getProps/index.d.ts +2 -0
  57. package/types/globalProps/constants.d.ts +3 -0
  58. package/types/globalProps/globalAttributesPropTypes.d.ts +363 -0
  59. package/types/globalProps/index.d.ts +2 -0
  60. package/types/globalProps/useGetGlobalAttributes.d.ts +4 -0
  61. package/types/index.d.ts +6 -0
  62. package/types/propTypes/PropTypes.d.ts +3 -0
  63. package/types/propTypes/customPropTypes.d.ts +2 -0
  64. package/types/propTypes/describe.d.ts +3 -0
  65. package/types/propTypes/describeConversions.d.ts +3 -0
  66. package/types/propTypes/describeGuards.d.ts +9 -0
  67. package/types/propTypes/index.d.ts +3 -0
  68. package/types/propTypes/toTypescript.d.ts +3 -0
  69. package/types/propTypes/types.d.ts +99 -0
  70. package/types/tests/globalProps/TestComponent.d.ts +1 -0
  71. package/types/tests/globalProps/globalAttributes.test.d.ts +1 -0
  72. package/types/tests/validation/any.validation.test.d.ts +1 -0
  73. package/types/tests/validation/array.validation.test.d.ts +1 -0
  74. package/types/tests/validation/boolean.validation.test.d.ts +1 -0
  75. package/types/tests/validation/function.validation.test.d.ts +1 -0
  76. package/types/tests/validation/number.validation.test.d.ts +1 -0
  77. package/types/tests/validation/object.validation.test.d.ts +1 -0
  78. package/types/tests/validation/schema.validation.test.d.ts +1 -0
  79. package/types/tests/validation/string.validation.test.d.ts +1 -0
  80. package/types/tests/validation/test.schema.d.ts +1 -0
  81. package/types/tests/validation/union.validation.test.d.ts +1 -0
  82. package/types/validation/errorTemplates.d.ts +2 -0
  83. package/types/validation/index.d.ts +3 -0
  84. package/types/validation/typescriptGuards.d.ts +12 -0
  85. package/types/validation/typescriptParsers.d.ts +1 -0
  86. package/types/validation/typescriptValidator.d.ts +15 -0
  87. package/types/validation/validator.d.ts +1 -0
  88. package/types/xstyledProps/constants.d.ts +2 -0
  89. package/types/xstyledProps/index.d.ts +2 -0
  90. package/types/xstyledProps/useGetXstyledProps.d.ts +5 -0
  91. package/types/xstyledProps/xstyledPropTypes.d.ts +57 -0
  92. package/dist/cjs/defaultProps/index.js +0 -28
  93. package/dist/cjs/defaultProps/index.js.map +0 -7
  94. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js +0 -48
  95. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js.map +0 -7
  96. package/dist/cjs/getProps/index.js +0 -37
  97. package/dist/cjs/getProps/index.js.map +0 -7
  98. package/dist/cjs/globalProps/constants.js +0 -398
  99. package/dist/cjs/globalProps/constants.js.map +0 -7
  100. package/dist/cjs/globalProps/globalAttributesPropTypes.js +0 -398
  101. package/dist/cjs/globalProps/globalAttributesPropTypes.js.map +0 -7
  102. package/dist/cjs/globalProps/index.js +0 -29
  103. package/dist/cjs/globalProps/index.js.map +0 -7
  104. package/dist/cjs/globalProps/useGetGlobalAttributes.js +0 -56
  105. package/dist/cjs/globalProps/useGetGlobalAttributes.js.map +0 -7
  106. package/dist/cjs/index.js +0 -32
  107. package/dist/cjs/index.js.map +0 -7
  108. package/dist/cjs/propTypes/PropTypes.js +0 -136
  109. package/dist/cjs/propTypes/PropTypes.js.map +0 -7
  110. package/dist/cjs/propTypes/customPropTypes.js +0 -38
  111. package/dist/cjs/propTypes/customPropTypes.js.map +0 -7
  112. package/dist/cjs/propTypes/describe.js +0 -81
  113. package/dist/cjs/propTypes/describe.js.map +0 -7
  114. package/dist/cjs/propTypes/describeConversions.js +0 -96
  115. package/dist/cjs/propTypes/describeConversions.js.map +0 -7
  116. package/dist/cjs/propTypes/describeGuards.js +0 -49
  117. package/dist/cjs/propTypes/describeGuards.js.map +0 -7
  118. package/dist/cjs/propTypes/index.js +0 -37
  119. package/dist/cjs/propTypes/index.js.map +0 -7
  120. package/dist/cjs/propTypes/toTypescript.js +0 -139
  121. package/dist/cjs/propTypes/toTypescript.js.map +0 -7
  122. package/dist/cjs/propTypes/types.js +0 -27
  123. package/dist/cjs/propTypes/types.js.map +0 -7
  124. package/dist/cjs/tests/globalProps/TestComponent.js +0 -42
  125. package/dist/cjs/tests/globalProps/TestComponent.js.map +0 -7
  126. package/dist/cjs/tests/validation/test.schema.js +0 -67
  127. package/dist/cjs/tests/validation/test.schema.js.map +0 -7
  128. package/dist/cjs/validation/errorTemplates.js +0 -48
  129. package/dist/cjs/validation/errorTemplates.js.map +0 -7
  130. package/dist/cjs/validation/index.js +0 -30
  131. package/dist/cjs/validation/index.js.map +0 -7
  132. package/dist/cjs/validation/typescriptGuards.js +0 -65
  133. package/dist/cjs/validation/typescriptGuards.js.map +0 -7
  134. package/dist/cjs/validation/typescriptParsers.js +0 -76
  135. package/dist/cjs/validation/typescriptParsers.js.map +0 -7
  136. package/dist/cjs/validation/typescriptValidator.js +0 -171
  137. package/dist/cjs/validation/typescriptValidator.js.map +0 -7
  138. package/dist/cjs/validation/validator.js +0 -55
  139. package/dist/cjs/validation/validator.js.map +0 -7
  140. package/dist/esm/defaultProps/index.js +0 -3
  141. package/dist/esm/defaultProps/index.js.map +0 -7
  142. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js +0 -19
  143. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js.map +0 -7
  144. package/dist/esm/getProps/index.js +0 -8
  145. package/dist/esm/getProps/index.js.map +0 -7
  146. package/dist/esm/globalProps/constants.js +0 -369
  147. package/dist/esm/globalProps/constants.js.map +0 -7
  148. package/dist/esm/globalProps/globalAttributesPropTypes.js.map +0 -7
  149. package/dist/esm/globalProps/index.js +0 -4
  150. package/dist/esm/globalProps/index.js.map +0 -7
  151. package/dist/esm/globalProps/useGetGlobalAttributes.js +0 -27
  152. package/dist/esm/globalProps/useGetGlobalAttributes.js.map +0 -7
  153. package/dist/esm/index.js +0 -7
  154. package/dist/esm/index.js.map +0 -7
  155. package/dist/esm/propTypes/PropTypes.js +0 -107
  156. package/dist/esm/propTypes/PropTypes.js.map +0 -7
  157. package/dist/esm/propTypes/customPropTypes.js +0 -9
  158. package/dist/esm/propTypes/customPropTypes.js.map +0 -7
  159. package/dist/esm/propTypes/describe.js +0 -52
  160. package/dist/esm/propTypes/describe.js.map +0 -7
  161. package/dist/esm/propTypes/describeConversions.js +0 -76
  162. package/dist/esm/propTypes/describeConversions.js.map +0 -7
  163. package/dist/esm/propTypes/describeGuards.js +0 -20
  164. package/dist/esm/propTypes/describeGuards.js.map +0 -7
  165. package/dist/esm/propTypes/index.js +0 -8
  166. package/dist/esm/propTypes/index.js.map +0 -7
  167. package/dist/esm/propTypes/toTypescript.js +0 -110
  168. package/dist/esm/propTypes/toTypescript.js.map +0 -7
  169. package/dist/esm/propTypes/types.js +0 -2
  170. package/dist/esm/propTypes/types.js.map +0 -7
  171. package/dist/esm/tests/globalProps/TestComponent.js +0 -13
  172. package/dist/esm/tests/globalProps/TestComponent.js.map +0 -7
  173. package/dist/esm/tests/validation/test.schema.js +0 -38
  174. package/dist/esm/tests/validation/test.schema.js.map +0 -7
  175. package/dist/esm/validation/errorTemplates.js +0 -19
  176. package/dist/esm/validation/errorTemplates.js.map +0 -7
  177. package/dist/esm/validation/index.js +0 -5
  178. package/dist/esm/validation/index.js.map +0 -7
  179. package/dist/esm/validation/typescriptGuards.js +0 -36
  180. package/dist/esm/validation/typescriptGuards.js.map +0 -7
  181. package/dist/esm/validation/typescriptParsers.js +0 -47
  182. package/dist/esm/validation/typescriptParsers.js.map +0 -7
  183. package/dist/esm/validation/typescriptValidator.js +0 -153
  184. package/dist/esm/validation/typescriptValidator.js.map +0 -7
  185. package/dist/esm/validation/validator.js +0 -26
  186. package/dist/esm/validation/validator.js.map +0 -7
@@ -0,0 +1,33 @@
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 { globalAttributes } from './constants.js';
7
+
8
+ const useGetGlobalAttributes = (props, overrides) => {
9
+ const componentGlobalAttributes = useMemo(() => {
10
+ const globalAttributesObject = {};
11
+ Object.entries(props).forEach(_ref => {
12
+ let [key, value] = _ref;
13
+
14
+ if (key in globalAttributes || key.startsWith('data-')) {
15
+ if (overrides && key in overrides && typeof value === 'function' && typeof overrides[key] === 'function') {
16
+ const newFunc = function () {
17
+ value(...arguments);
18
+ overrides[key](...arguments);
19
+ };
20
+
21
+ globalAttributesObject[key] = newFunc;
22
+ } else {
23
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
24
+ globalAttributesObject[key] = value;
25
+ }
26
+ }
27
+ });
28
+ return globalAttributesObject;
29
+ }, [props, overrides]);
30
+ return componentGlobalAttributes;
31
+ };
32
+
33
+ export { useGetGlobalAttributes };
package/esm/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { useMemoMergePropsWithDefault } from './defaultProps/useMemoMergePropsWithDefault.js';
2
+ export { getAriaProps, getDataProps } from './getProps/index.js';
3
+ export { useGetGlobalAttributes } from './globalProps/useGetGlobalAttributes.js';
4
+ export { globalAttributesPropTypes } from './globalProps/globalAttributesPropTypes.js';
5
+ export { default as PropTypes } from './propTypes/PropTypes.js';
6
+ export { default as describe } from './propTypes/describe.js';
7
+ export { useValidatePropTypes } from './validation/validator.js';
8
+ export { throwRequiredError, throwTypeError } from './validation/errorTemplates.js';
9
+ export { useValidateTypescriptPropTypes, validateTypescriptPropTypesImplementation } from './validation/typescriptValidator.js';
10
+ export { useGetXstyledProps } from './xstyledProps/useGetXstyledProps.js';
11
+ export { xstyledPropTypes } from './xstyledProps/xstyledPropTypes.js';
@@ -0,0 +1,125 @@
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.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.constructor.js';
6
+ import 'core-js/modules/esnext.iterator.for-each.js';
7
+
8
+ 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; }
9
+
10
+ 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; }
11
+
12
+ const addPropTypeDocumentationField = fieldName => function addFieldToReactDesc(value) {
13
+ if (!this.reactDesc) {
14
+ this.reactDesc = {};
15
+ }
16
+
17
+ let realValue = value;
18
+ if (fieldName === 'global' || fieldName === 'hidden' || fieldName === 'xstyled') realValue = true;
19
+ this.reactDesc[fieldName] = realValue;
20
+ return this;
21
+ };
22
+
23
+ const documentedPropType = {
24
+ defaultValue: addPropTypeDocumentationField('defaultValue'),
25
+ description: addPropTypeDocumentationField('description'),
26
+ deprecated: addPropTypeDocumentationField('deprecated'),
27
+ format: addPropTypeDocumentationField('format'),
28
+ global: addPropTypeDocumentationField('global'),
29
+ hidden: addPropTypeDocumentationField('hidden'),
30
+ xstyled: addPropTypeDocumentationField('hidden')
31
+ };
32
+
33
+ const createPropType = type => {
34
+ const propTypeObj = _objectSpread({
35
+ type
36
+ }, documentedPropType);
37
+
38
+ Object.defineProperty(propTypeObj, 'isRequired', {
39
+ get: function getRequired() {
40
+ if (!this.reactDesc) {
41
+ this.reactDesc = {};
42
+ }
43
+
44
+ this.reactDesc.required = true;
45
+ return this;
46
+ },
47
+ enumerable: true,
48
+ configurable: true
49
+ });
50
+ return propTypeObj;
51
+ };
52
+
53
+ const createPropTypeWithArgs = type => args => {
54
+ const propTypeObj = _objectSpread({
55
+ args,
56
+ type
57
+ }, documentedPropType);
58
+
59
+ Object.defineProperty(propTypeObj, 'isRequired', {
60
+ get: function getRequired() {
61
+ if (!this.reactDesc) {
62
+ this.reactDesc = {};
63
+ }
64
+
65
+ this.reactDesc.required = true;
66
+ return this;
67
+ },
68
+ enumerable: true,
69
+ configurable: true
70
+ });
71
+ return propTypeObj;
72
+ };
73
+
74
+ const PropTypes = {
75
+ custom: callback => {
76
+ const target = callback.bind(null);
77
+ target.type = 'func';
78
+ Object.keys(documentedPropType).forEach(fieldName => {
79
+ const fieldNameCasted = fieldName; // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
80
+
81
+ target[fieldNameCasted] = documentedPropType[fieldNameCasted];
82
+ });
83
+ return target;
84
+ }
85
+ };
86
+
87
+ function definePropType(type) {
88
+ Object.defineProperty(PropTypes, type, {
89
+ get: function getPropType() {
90
+ return createPropType(type);
91
+ },
92
+ enumerable: true,
93
+ configurable: true
94
+ });
95
+ }
96
+
97
+ function definePropTypeWithArgs(type) {
98
+ Object.defineProperty(PropTypes, type, {
99
+ get: function getPropType() {
100
+ return createPropTypeWithArgs(type);
101
+ },
102
+ enumerable: true,
103
+ configurable: true
104
+ });
105
+ }
106
+
107
+ definePropType('any');
108
+ definePropType('array');
109
+ definePropType('bool');
110
+ definePropType('element');
111
+ definePropType('func');
112
+ definePropType('node');
113
+ definePropType('number');
114
+ definePropType('object');
115
+ definePropType('symbol');
116
+ definePropType('string');
117
+ definePropTypeWithArgs('arrayOf');
118
+ definePropTypeWithArgs('instanceOf');
119
+ definePropTypeWithArgs('objectOf');
120
+ definePropTypeWithArgs('oneOfType');
121
+ definePropTypeWithArgs('oneOf');
122
+ definePropTypeWithArgs('shape');
123
+ definePropTypeWithArgs('tuple');
124
+
125
+ export { PropTypes as default };
@@ -0,0 +1,17 @@
1
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
+
3
+ /* eslint-disable max-params */
4
+ const tupleValidator = tupleShape => {
5
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
6
+ const func = function (value, index) {
7
+ for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
8
+ rest[_key - 2] = arguments[_key];
9
+ }
10
+
11
+ return tupleShape[index](value, index, ...rest);
12
+ };
13
+
14
+ return func;
15
+ };
16
+
17
+ export { tupleValidator };
@@ -0,0 +1,62 @@
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 { convertPropType } from './describeConversions.js';
5
+ import descToTypescript from './toTypescript.js';
6
+
7
+ function describe(ComponentInstance) {
8
+ if (!ComponentInstance) {
9
+ throw new Error('react-desc: component is required');
10
+ }
11
+
12
+ const documentation = {
13
+ propTypes: {}
14
+ };
15
+ const DocumentedComponent = ComponentInstance;
16
+
17
+ const addDocumentationProp = propName => {
18
+ const func = value => {
19
+ documentation[propName] = value;
20
+ return DocumentedComponent;
21
+ };
22
+
23
+ return func;
24
+ };
25
+
26
+ DocumentedComponent.availableAt = addDocumentationProp('availableAt');
27
+ DocumentedComponent.description = addDocumentationProp('description');
28
+ DocumentedComponent.details = addDocumentationProp('details');
29
+ DocumentedComponent.deprecated = addDocumentationProp('deprecated');
30
+ DocumentedComponent.usage = addDocumentationProp('usage');
31
+ DocumentedComponent.intrinsicElement = addDocumentationProp('intrinsicElement');
32
+
33
+ DocumentedComponent.toTypescript = () => descToTypescript(ComponentInstance, documentation);
34
+
35
+ Object.defineProperty(DocumentedComponent, 'propTypes', {
36
+ get: () => DocumentedComponent.propTypesValue,
37
+ set: value => {
38
+ if (!DocumentedComponent.propTypesValue) {
39
+ DocumentedComponent.propTypesValue = {};
40
+ }
41
+
42
+ Object.keys(value).forEach(name => {
43
+ const propType = value[name];
44
+ let realPropType;
45
+ documentation.propTypes[name] = propType;
46
+ realPropType = convertPropType(propType);
47
+
48
+ if (value[name].reactDesc.required) {
49
+ realPropType = realPropType.isRequired;
50
+ }
51
+
52
+ DocumentedComponent.propTypesValue[name] = realPropType;
53
+ return propType;
54
+ });
55
+ },
56
+ enumerable: true,
57
+ configurable: true
58
+ });
59
+ return DocumentedComponent;
60
+ }
61
+
62
+ export { describe as default };
@@ -0,0 +1,96 @@
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
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.constructor.js';
6
+ import 'core-js/modules/esnext.iterator.for-each.js';
7
+ import PropTypes from 'prop-types';
8
+ import { tupleValidator } from './customPropTypes.js';
9
+ import { hasArguments, isOneOfType, isArrayOf, isShape, isInstanceOf, isOneOf, isObjectOf, isExact } from './describeGuards.js';
10
+
11
+ const enrichPropType = (propType, reactDesc) => {
12
+ const func = function (props, propName, componentName) {
13
+ if (reactDesc && reactDesc.deprecated && propName in props && !reactDesc.warned) {
14
+ const {
15
+ version = '',
16
+ message = ''
17
+ } = reactDesc.deprecated;
18
+ const warning = "\"".concat(propName, "\" property of \"").concat(componentName, "\" will be deprecated on VERSION: ").concat(version, ".\n").concat(message);
19
+ console.warn(warning);
20
+ reactDesc.warned = true;
21
+ }
22
+
23
+ for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
24
+ rest[_key - 3] = arguments[_key];
25
+ }
26
+
27
+ return propType(props, propName, componentName, ...rest);
28
+ };
29
+
30
+ Object.defineProperty(func, 'isRequired', Object.getOwnPropertyDescriptor(propType, 'isRequired'));
31
+ return func;
32
+ };
33
+
34
+ const convertArray = array => array.map(type => convertPropType(type));
35
+
36
+ const convertShape = _shape => {
37
+ const result = {};
38
+ Object.keys(_shape).forEach(key => {
39
+ result[key] = convertPropType(_shape[key]);
40
+ });
41
+ return result;
42
+ };
43
+
44
+ const convertPropType = propType => {
45
+ if (!propType || !propType.type) {
46
+ throw new Error("react-desc: unknown error -- proptype is not well defined");
47
+ } // DimSum PropTypes conversion
48
+
49
+
50
+ if (propType.type === 'tuple') {
51
+ return enrichPropType(PropTypes.arrayOf(tupleValidator(convertArray(propType.args))), propType.reactDesc);
52
+ } // Default PropType conversion
53
+
54
+
55
+ const realPropType = PropTypes[propType.type];
56
+
57
+ if (!realPropType) {
58
+ throw new Error("react-desc: unknown type ".concat(propType.type));
59
+ }
60
+
61
+ if (hasArguments(propType)) {
62
+ if (isOneOfType(propType)) {
63
+ return enrichPropType(realPropType(convertArray(propType.args)), propType.reactDesc);
64
+ }
65
+
66
+ if (isArrayOf(propType)) {
67
+ return enrichPropType(realPropType(convertPropType(propType.args)), propType.reactDesc);
68
+ }
69
+
70
+ if (isShape(propType)) {
71
+ return enrichPropType(realPropType(convertShape(propType.args)), propType.reactDesc);
72
+ }
73
+
74
+ if (isInstanceOf(propType)) {
75
+ return enrichPropType(realPropType(propType.args), propType.reactDesc);
76
+ }
77
+
78
+ if (isOneOf(propType)) {
79
+ return enrichPropType(realPropType(propType.args), propType.reactDesc);
80
+ }
81
+
82
+ if (isObjectOf(propType)) {
83
+ return enrichPropType(realPropType(propType.args), propType.reactDesc);
84
+ }
85
+
86
+ if (isExact(propType)) {
87
+ return enrichPropType(realPropType(propType.args), propType.reactDesc);
88
+ }
89
+
90
+ throw new Error("react-desc: unknown error -- proptype with args is not matching");
91
+ }
92
+
93
+ return enrichPropType(realPropType, propType.reactDesc);
94
+ };
95
+
96
+ export { convertPropType };
@@ -0,0 +1,10 @@
1
+ const hasArguments = (propType, realPropType) => !!propType.args;
2
+ const isOneOfType = (propType, realPropType) => propType.type === 'oneOfType';
3
+ const isArrayOf = (propType, realPropType) => propType.type === 'arrayOf';
4
+ const isShape = (propType, realPropType) => propType.type === 'shape';
5
+ const isInstanceOf = (propType, realPropType) => propType.type === 'instanceOf';
6
+ const isOneOf = (propType, realPropType) => propType.type === 'oneOf';
7
+ const isObjectOf = (propType, realPropType) => propType.type === 'objectOf';
8
+ const isExact = (propType, realPropType) => propType.type === 'exact';
9
+
10
+ export { hasArguments, isArrayOf, isExact, isInstanceOf, isObjectOf, isOneOf, isOneOfType, isShape };
@@ -0,0 +1,2 @@
1
+ export { default as PropTypes } from './PropTypes.js';
2
+ export { default as describe } from './describe.js';
@@ -0,0 +1,154 @@
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 };
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,11 @@
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 };
@@ -0,0 +1,3 @@
1
+ export { useValidatePropTypes } from './validator.js';
2
+ export { throwRequiredError, throwTypeError } from './errorTemplates.js';
3
+ export { useValidateTypescriptPropTypes, validateTypescriptPropTypesImplementation } from './typescriptValidator.js';
@@ -0,0 +1,23 @@
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 };
@@ -0,0 +1,41 @@
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 };