@elliemae/ds-props-helpers 2.3.0-alpha.9 → 2.3.0-next.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 (174) 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 +15 -0
  5. package/cjs/globalProps/globalAttributesPropTypes.js +382 -0
  6. package/cjs/globalProps/index.js +11 -0
  7. package/cjs/globalProps/useGetGlobalAttributes.js +36 -0
  8. package/cjs/index.js +28 -0
  9. package/cjs/propTypes/PropTypes.js +130 -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/esm/defaultProps/index.js +1 -0
  24. package/esm/defaultProps/useMemoMergePropsWithDefault.js +39 -0
  25. package/esm/getProps/index.js +15 -0
  26. package/esm/globalProps/constants.js +11 -0
  27. package/{dist/esm → esm}/globalProps/globalAttributesPropTypes.js +67 -58
  28. package/esm/globalProps/index.js +2 -0
  29. package/esm/globalProps/useGetGlobalAttributes.js +32 -0
  30. package/esm/index.js +9 -0
  31. package/esm/propTypes/PropTypes.js +124 -0
  32. package/esm/propTypes/customPropTypes.js +17 -0
  33. package/esm/propTypes/describe.js +62 -0
  34. package/esm/propTypes/describeConversions.js +96 -0
  35. package/esm/propTypes/describeGuards.js +10 -0
  36. package/esm/propTypes/index.js +2 -0
  37. package/esm/propTypes/toTypescript.js +154 -0
  38. package/esm/propTypes/types.js +1 -0
  39. package/esm/validation/errorTemplates.js +11 -0
  40. package/esm/validation/index.js +3 -0
  41. package/esm/validation/typescriptGuards.js +23 -0
  42. package/esm/validation/typescriptParsers.js +41 -0
  43. package/esm/validation/typescriptValidator.js +203 -0
  44. package/esm/validation/validator.js +32 -0
  45. package/package.json +63 -65
  46. package/{dist/types → types}/defaultProps/index.d.ts +0 -0
  47. package/{dist/types → types}/defaultProps/useMemoMergePropsWithDefault.d.ts +0 -0
  48. package/{dist/types → types}/getProps/index.d.ts +0 -0
  49. package/{dist/types → types}/globalProps/constants.d.ts +0 -0
  50. package/{dist/types → types}/globalProps/globalAttributesPropTypes.d.ts +0 -0
  51. package/{dist/types → types}/globalProps/index.d.ts +0 -0
  52. package/{dist/types → types}/globalProps/useGetGlobalAttributes.d.ts +0 -0
  53. package/{dist/types → types}/index.d.ts +0 -0
  54. package/{dist/types → types}/propTypes/PropTypes.d.ts +0 -0
  55. package/{dist/types → types}/propTypes/customPropTypes.d.ts +0 -0
  56. package/{dist/types → types}/propTypes/describe.d.ts +0 -0
  57. package/{dist/types → types}/propTypes/describeConversions.d.ts +0 -0
  58. package/{dist/types → types}/propTypes/describeGuards.d.ts +0 -0
  59. package/{dist/types → types}/propTypes/index.d.ts +0 -0
  60. package/{dist/types → types}/propTypes/toTypescript.d.ts +0 -0
  61. package/{dist/types → types}/propTypes/types.d.ts +1 -1
  62. package/{dist/types → types}/tests/globalProps/TestComponent.d.ts +0 -0
  63. package/{dist/types → types}/tests/globalProps/globalAttributes.test.d.ts +0 -0
  64. package/{dist/types → types}/tests/validation/any.validation.test.d.ts +0 -0
  65. package/{dist/types → types}/tests/validation/array.validation.test.d.ts +0 -0
  66. package/{dist/types → types}/tests/validation/boolean.validation.test.d.ts +0 -0
  67. package/{dist/types → types}/tests/validation/function.validation.test.d.ts +0 -0
  68. package/{dist/types → types}/tests/validation/number.validation.test.d.ts +0 -0
  69. package/{dist/types → types}/tests/validation/object.validation.test.d.ts +0 -0
  70. package/{dist/types → types}/tests/validation/schema.validation.test.d.ts +0 -0
  71. package/{dist/types → types}/tests/validation/string.validation.test.d.ts +0 -0
  72. package/{dist/types → types}/tests/validation/test.schema.d.ts +0 -0
  73. package/{dist/types → types}/tests/validation/union.validation.test.d.ts +0 -0
  74. package/{dist/types → types}/validation/errorTemplates.d.ts +0 -0
  75. package/{dist/types → types}/validation/index.d.ts +0 -0
  76. package/{dist/types → types}/validation/typescriptGuards.d.ts +0 -0
  77. package/{dist/types → types}/validation/typescriptParsers.d.ts +0 -0
  78. package/{dist/types → types}/validation/typescriptValidator.d.ts +0 -0
  79. package/{dist/types → types}/validation/validator.d.ts +0 -0
  80. package/dist/cjs/defaultProps/index.js +0 -28
  81. package/dist/cjs/defaultProps/index.js.map +0 -7
  82. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js +0 -48
  83. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js.map +0 -7
  84. package/dist/cjs/getProps/index.js +0 -37
  85. package/dist/cjs/getProps/index.js.map +0 -7
  86. package/dist/cjs/globalProps/constants.js +0 -398
  87. package/dist/cjs/globalProps/constants.js.map +0 -7
  88. package/dist/cjs/globalProps/globalAttributesPropTypes.js +0 -398
  89. package/dist/cjs/globalProps/globalAttributesPropTypes.js.map +0 -7
  90. package/dist/cjs/globalProps/index.js +0 -29
  91. package/dist/cjs/globalProps/index.js.map +0 -7
  92. package/dist/cjs/globalProps/useGetGlobalAttributes.js +0 -56
  93. package/dist/cjs/globalProps/useGetGlobalAttributes.js.map +0 -7
  94. package/dist/cjs/index.js +0 -32
  95. package/dist/cjs/index.js.map +0 -7
  96. package/dist/cjs/propTypes/PropTypes.js +0 -136
  97. package/dist/cjs/propTypes/PropTypes.js.map +0 -7
  98. package/dist/cjs/propTypes/customPropTypes.js +0 -38
  99. package/dist/cjs/propTypes/customPropTypes.js.map +0 -7
  100. package/dist/cjs/propTypes/describe.js +0 -81
  101. package/dist/cjs/propTypes/describe.js.map +0 -7
  102. package/dist/cjs/propTypes/describeConversions.js +0 -96
  103. package/dist/cjs/propTypes/describeConversions.js.map +0 -7
  104. package/dist/cjs/propTypes/describeGuards.js +0 -49
  105. package/dist/cjs/propTypes/describeGuards.js.map +0 -7
  106. package/dist/cjs/propTypes/index.js +0 -37
  107. package/dist/cjs/propTypes/index.js.map +0 -7
  108. package/dist/cjs/propTypes/toTypescript.js +0 -139
  109. package/dist/cjs/propTypes/toTypescript.js.map +0 -7
  110. package/dist/cjs/propTypes/types.js +0 -27
  111. package/dist/cjs/propTypes/types.js.map +0 -7
  112. package/dist/cjs/tests/globalProps/TestComponent.js +0 -42
  113. package/dist/cjs/tests/globalProps/TestComponent.js.map +0 -7
  114. package/dist/cjs/tests/validation/test.schema.js +0 -67
  115. package/dist/cjs/tests/validation/test.schema.js.map +0 -7
  116. package/dist/cjs/validation/errorTemplates.js +0 -48
  117. package/dist/cjs/validation/errorTemplates.js.map +0 -7
  118. package/dist/cjs/validation/index.js +0 -30
  119. package/dist/cjs/validation/index.js.map +0 -7
  120. package/dist/cjs/validation/typescriptGuards.js +0 -65
  121. package/dist/cjs/validation/typescriptGuards.js.map +0 -7
  122. package/dist/cjs/validation/typescriptParsers.js +0 -76
  123. package/dist/cjs/validation/typescriptParsers.js.map +0 -7
  124. package/dist/cjs/validation/typescriptValidator.js +0 -171
  125. package/dist/cjs/validation/typescriptValidator.js.map +0 -7
  126. package/dist/cjs/validation/validator.js +0 -55
  127. package/dist/cjs/validation/validator.js.map +0 -7
  128. package/dist/esm/defaultProps/index.js +0 -3
  129. package/dist/esm/defaultProps/index.js.map +0 -7
  130. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js +0 -19
  131. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js.map +0 -7
  132. package/dist/esm/getProps/index.js +0 -8
  133. package/dist/esm/getProps/index.js.map +0 -7
  134. package/dist/esm/globalProps/constants.js +0 -369
  135. package/dist/esm/globalProps/constants.js.map +0 -7
  136. package/dist/esm/globalProps/globalAttributesPropTypes.js.map +0 -7
  137. package/dist/esm/globalProps/index.js +0 -4
  138. package/dist/esm/globalProps/index.js.map +0 -7
  139. package/dist/esm/globalProps/useGetGlobalAttributes.js +0 -27
  140. package/dist/esm/globalProps/useGetGlobalAttributes.js.map +0 -7
  141. package/dist/esm/index.js +0 -7
  142. package/dist/esm/index.js.map +0 -7
  143. package/dist/esm/propTypes/PropTypes.js +0 -107
  144. package/dist/esm/propTypes/PropTypes.js.map +0 -7
  145. package/dist/esm/propTypes/customPropTypes.js +0 -9
  146. package/dist/esm/propTypes/customPropTypes.js.map +0 -7
  147. package/dist/esm/propTypes/describe.js +0 -52
  148. package/dist/esm/propTypes/describe.js.map +0 -7
  149. package/dist/esm/propTypes/describeConversions.js +0 -76
  150. package/dist/esm/propTypes/describeConversions.js.map +0 -7
  151. package/dist/esm/propTypes/describeGuards.js +0 -20
  152. package/dist/esm/propTypes/describeGuards.js.map +0 -7
  153. package/dist/esm/propTypes/index.js +0 -8
  154. package/dist/esm/propTypes/index.js.map +0 -7
  155. package/dist/esm/propTypes/toTypescript.js +0 -110
  156. package/dist/esm/propTypes/toTypescript.js.map +0 -7
  157. package/dist/esm/propTypes/types.js +0 -2
  158. package/dist/esm/propTypes/types.js.map +0 -7
  159. package/dist/esm/tests/globalProps/TestComponent.js +0 -13
  160. package/dist/esm/tests/globalProps/TestComponent.js.map +0 -7
  161. package/dist/esm/tests/validation/test.schema.js +0 -38
  162. package/dist/esm/tests/validation/test.schema.js.map +0 -7
  163. package/dist/esm/validation/errorTemplates.js +0 -19
  164. package/dist/esm/validation/errorTemplates.js.map +0 -7
  165. package/dist/esm/validation/index.js +0 -5
  166. package/dist/esm/validation/index.js.map +0 -7
  167. package/dist/esm/validation/typescriptGuards.js +0 -36
  168. package/dist/esm/validation/typescriptGuards.js.map +0 -7
  169. package/dist/esm/validation/typescriptParsers.js +0 -47
  170. package/dist/esm/validation/typescriptParsers.js.map +0 -7
  171. package/dist/esm/validation/typescriptValidator.js +0 -153
  172. package/dist/esm/validation/typescriptValidator.js.map +0 -7
  173. package/dist/esm/validation/validator.js +0 -26
  174. package/dist/esm/validation/validator.js.map +0 -7
@@ -1,153 +0,0 @@
1
- import * as React from "react";
2
- import { useMemo, useState } from "react";
3
- import { describe } from "../propTypes";
4
- import { throwRequiredError, throwTypeError } from "./errorTemplates";
5
- import {
6
- isArray,
7
- isFunction,
8
- isJSXorNode,
9
- isObject,
10
- isPrimitiveType,
11
- isSomethingWithParenthesis,
12
- isString,
13
- isUnion,
14
- isUndefined,
15
- isNull
16
- } from "./typescriptGuards";
17
- import { typescriptObjectParser } from "./typescriptParsers";
18
- const validateUndefined = (schemaName, key, value, format) => {
19
- if (value !== void 0 || value === "undefined") {
20
- throwTypeError(schemaName, key, value, format);
21
- }
22
- };
23
- const validateNull = (schemaName, key, value, format) => {
24
- if (value !== null || value === "null") {
25
- throwTypeError(schemaName, key, value, format);
26
- }
27
- };
28
- const validatePrimitiveType = (schemaName, key, value, format) => {
29
- if (typeof value !== format) {
30
- throwTypeError(schemaName, key, value, format);
31
- }
32
- };
33
- const validateString = (schemaName, key, value, format) => {
34
- if (value !== format.slice(1, -1)) {
35
- throwTypeError(schemaName, key, value, format);
36
- }
37
- };
38
- const validateArray = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
39
- if (!Array.isArray(value)) {
40
- throwTypeError(schemaName, key, value, format);
41
- }
42
- value.forEach((val, index) => {
43
- validateValueWithFormat(schemaName, `${key}[${index}]`, val, format.slice(0, -2), validationsMemo, nextValidationsMemo);
44
- });
45
- };
46
- function isObjectType(value) {
47
- return !(typeof value !== "object" || Array.isArray(value));
48
- }
49
- const validateObject = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
50
- const valuesIsObject = isObjectType(value);
51
- if (!valuesIsObject) {
52
- throwTypeError(schemaName, key, value, format);
53
- return;
54
- }
55
- if (format === "object")
56
- return;
57
- const keyValuePairs = typescriptObjectParser(format);
58
- keyValuePairs.forEach(([objectKey, objectValue]) => {
59
- const trueKey = objectKey.slice(-1) === "?" ? objectKey.slice(0, -1) : objectKey;
60
- if (trueKey === objectKey && !(trueKey in value)) {
61
- throwRequiredError(schemaName, key);
62
- }
63
- if (trueKey in value) {
64
- validateValueWithFormat(schemaName, `${key}[${trueKey}]`, value[trueKey], objectValue, validationsMemo, nextValidationsMemo);
65
- }
66
- });
67
- };
68
- const validateUnion = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
69
- const possibilities = format.split(/\s?\|\s?/);
70
- const errors = [];
71
- possibilities.forEach((possibility) => {
72
- try {
73
- validateValueWithFormat(schemaName, key, value, possibility, validationsMemo, nextValidationsMemo);
74
- } catch (e) {
75
- errors.push(e);
76
- }
77
- });
78
- if (errors.length === possibilities.length) {
79
- throwTypeError(schemaName, key, value, format);
80
- }
81
- };
82
- const validateFunction = (schemaName, key, value, format) => {
83
- if (typeof value !== "function") {
84
- throwTypeError(schemaName, key, value, format);
85
- }
86
- };
87
- function isJSXElement(value) {
88
- return value === null || typeof value === "object" && value !== null && "$$typeof" in value;
89
- }
90
- const validateJSXorNode = (schemaName, key, value, format) => {
91
- const valueIsJSX = isJSXElement(value);
92
- if (format === "JSX.Element" && !valueIsJSX) {
93
- throwTypeError(schemaName, key, value, format);
94
- }
95
- };
96
- const validateValueWithFormat = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {
97
- nextValidationsMemo[value] = format;
98
- if (value in validationsMemo) {
99
- return;
100
- }
101
- if (isUndefined(format)) {
102
- validateUndefined(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
103
- } else if (isNull(format)) {
104
- validateNull(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
105
- } else if (isPrimitiveType(format)) {
106
- validatePrimitiveType(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
107
- } else if (isUnion(format)) {
108
- validateUnion(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
109
- } else if (isString(format)) {
110
- validateString(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
111
- } else if (isArray(format)) {
112
- validateArray(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
113
- } else if (isObject(format)) {
114
- validateObject(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
115
- } else if (isFunction(format)) {
116
- validateFunction(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
117
- } else if (isJSXorNode(format)) {
118
- validateJSXorNode(schemaName, key, value, format, validationsMemo, nextValidationsMemo);
119
- } else if (isSomethingWithParenthesis(format)) {
120
- validateValueWithFormat(schemaName, key, value, format.slice(1, -1), validationsMemo, nextValidationsMemo);
121
- }
122
- };
123
- const validateTypescriptPropTypesImplementation = (props, schema, validationsMemo = {}, nextValidationsMemo = {}) => {
124
- const { properties, name: schemaName } = schema;
125
- properties.forEach((property) => {
126
- const { name, format, required } = property;
127
- if (required && !(name in props)) {
128
- throwRequiredError(schema.name, name);
129
- }
130
- if (name in props && (props[name] !== void 0 || required)) {
131
- validateValueWithFormat(schemaName, name, props[name], format, validationsMemo, nextValidationsMemo);
132
- }
133
- });
134
- };
135
- const useValidateTypescriptPropTypes = (props, propTypes) => {
136
- const [validationsMemo, setValidationsMemo] = useState({});
137
- const ComponentWithSchema = useMemo(() => {
138
- const Component = () => {
139
- };
140
- return describe(Component);
141
- }, []);
142
- ComponentWithSchema.propTypes = propTypes;
143
- useMemo(() => {
144
- const nextValidationsMemo = {};
145
- validateTypescriptPropTypesImplementation(props, ComponentWithSchema.toTypescript(), validationsMemo, nextValidationsMemo);
146
- setValidationsMemo(nextValidationsMemo);
147
- }, [props]);
148
- };
149
- export {
150
- useValidateTypescriptPropTypes,
151
- validateTypescriptPropTypesImplementation
152
- };
153
- //# sourceMappingURL=typescriptValidator.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/validation/typescriptValidator.ts"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable max-params */\nimport React, { PropsWithChildren, useMemo, useState } from 'react';\nimport { describe } from '../propTypes';\nimport { throwRequiredError, throwTypeError } from './errorTemplates';\nimport {\n isArray,\n isFunction,\n isJSXorNode,\n isObject,\n isPrimitiveType,\n isSomethingWithParenthesis,\n isString,\n isUnion,\n isUndefined,\n isNull,\n} from './typescriptGuards';\nimport { typescriptObjectParser } from './typescriptParsers';\n\ninterface TypescriptSchema {\n description: string;\n name: string;\n properties: { name: string; description: string; defaultValue?: unknown; format: string; required?: boolean }[];\n}\n\ntype ValidatorFn = (\n schemaName: string,\n key: string,\n value: unknown,\n format: string,\n validationsMemo: Record<symbol, string>,\n nextValidationsMemo: Record<symbol, string>,\n) => void;\n\n// =============================================================================\n// Atom Validators\n// =============================================================================\n\n// This functions will validate something from the data\n// and optionally recursively apply `validateValueWithFormat`\n// in smaller parts\n\nconst validateUndefined: ValidatorFn = (schemaName, key, value, format) => {\n if (value !== undefined || value === 'undefined') {\n throwTypeError(schemaName, key, value, format);\n }\n};\nconst validateNull: ValidatorFn = (schemaName, key, value, format) => {\n if (value !== null || value === 'null') {\n throwTypeError(schemaName, key, value, format);\n }\n};\nconst validatePrimitiveType: ValidatorFn = (schemaName, key, value, format) => {\n if (typeof value !== format) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nconst validateString: ValidatorFn = (schemaName, key, value, format) => {\n if (value !== format.slice(1, -1)) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nconst validateArray: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n // Check that we have an array\n if (!Array.isArray(value)) {\n throwTypeError(schemaName, key, value, format);\n }\n\n // Check that each element inside satisfies the format\n (value as unknown[]).forEach((val, index) => {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(\n schemaName,\n `${key}[${index}]`,\n val,\n format.slice(0, -2),\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\nfunction isObjectType(value: unknown | Record<string, unknown>): value is Record<string, unknown> {\n return !(typeof value !== 'object' || Array.isArray(value));\n}\nconst validateObject: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n const valuesIsObject = isObjectType(value);\n // Check that we have an object\n if (!valuesIsObject) {\n throwTypeError(schemaName, key, value, format);\n return;\n }\n\n if (format === 'object') return;\n\n const keyValuePairs = typescriptObjectParser(format);\n // Now we have the key - value pairs\n // Each key could either be required or not\n // Just recursively check the object\n\n keyValuePairs.forEach(([objectKey, objectValue]) => {\n const trueKey = objectKey.slice(-1) === '?' ? objectKey.slice(0, -1) : objectKey;\n\n if (trueKey === objectKey && !(trueKey in value)) {\n throwRequiredError(schemaName, key);\n }\n\n if (trueKey in value) {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(\n schemaName,\n `${key}[${trueKey}]`,\n value[trueKey],\n objectValue,\n validationsMemo,\n nextValidationsMemo,\n );\n }\n });\n};\n\nconst validateUnion: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n const possibilities = format.split(/\\s?\\|\\s?/);\n\n const errors = [];\n\n possibilities.forEach((possibility) => {\n try {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(schemaName, key, value, possibility, validationsMemo, nextValidationsMemo);\n } catch (e) {\n errors.push(e);\n }\n });\n\n if (errors.length === possibilities.length) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nconst validateFunction: ValidatorFn = (schemaName, key, value, format) => {\n // Check that we have a function\n if (typeof value !== 'function') {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nfunction isJSXElement(value: unknown | JSX.Element): value is JSX.Element {\n return value === null || (typeof value === 'object' && value !== null && '$$typeof' in value);\n}\nconst validateJSXorNode: ValidatorFn = (schemaName, key, value, format) => {\n const valueIsJSX = isJSXElement(value);\n if (format === 'JSX.Element' && !valueIsJSX) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\n// =============================================================================\n// Schema validator\n// =============================================================================\n\nconst validateValueWithFormat: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n nextValidationsMemo[value as symbol] = format;\n\n if ((value as symbol) in validationsMemo) {\n // We already validated this value on this format\n return;\n }\n\n if (isUndefined(format)) {\n validateUndefined(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isNull(format)) {\n validateNull(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isPrimitiveType(format)) {\n validatePrimitiveType(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isUnion(format)) {\n validateUnion(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isString(format)) {\n validateString(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isArray(format)) {\n validateArray(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isObject(format)) {\n validateObject(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isFunction(format)) {\n validateFunction(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isJSXorNode(format)) {\n validateJSXorNode(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isSomethingWithParenthesis(format)) {\n validateValueWithFormat(schemaName, key, value, format.slice(1, -1), validationsMemo, nextValidationsMemo);\n }\n};\n\nexport const validateTypescriptPropTypesImplementation = (\n props: PropsWithChildren<Record<string, unknown>>,\n schema: TypescriptSchema,\n validationsMemo: Record<string, string> = {},\n nextValidationsMemo: Record<string, string> = {},\n): void => {\n const { properties, name: schemaName } = schema;\n\n properties.forEach((property) => {\n const { name, format, required } = property;\n\n if (required && !(name in props)) {\n throwRequiredError(schema.name, name);\n }\n\n if (name in props && (props[name] !== undefined || required)) {\n validateValueWithFormat(schemaName, name, props[name], format, validationsMemo, nextValidationsMemo);\n }\n });\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useValidateTypescriptPropTypes = <T = Record<string, any>>(\n props: PropsWithChildren<T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n propTypes: any,\n): void => {\n const [validationsMemo, setValidationsMemo] = useState({});\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const ComponentWithSchema = useMemo(() => {\n const Component = () => {};\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return describe(Component);\n }, []);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n ComponentWithSchema.propTypes = propTypes;\n\n useMemo(() => {\n const nextValidationsMemo = {};\n\n validateTypescriptPropTypesImplementation(\n props,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n ComponentWithSchema.toTypescript(),\n validationsMemo,\n nextValidationsMemo,\n );\n\n setValidationsMemo(nextValidationsMemo);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n};\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,26 +0,0 @@
1
- import * as React from "react";
2
- import { throwRequiredError, throwTypeError } from "./errorTemplates";
3
- const useValidatePropTypes = (props, schema) => {
4
- schema.properties.forEach((property) => {
5
- const propertyName = property.name;
6
- const currentProp = props[propertyName];
7
- const currentPropTypeOf = typeof currentProp;
8
- const currentFormat = property.format;
9
- let isValidReactElement = false;
10
- if (property.required && !Object.prototype.hasOwnProperty.call(props, property.name)) {
11
- throwRequiredError(schema.name, property.name);
12
- }
13
- if (currentPropTypeOf !== "undefined" && currentProp !== null) {
14
- if (currentPropTypeOf === "object" && Object.prototype.hasOwnProperty.call(currentProp, "$$typeof") && (currentFormat.includes("node") || currentFormat.includes("element"))) {
15
- isValidReactElement = true;
16
- }
17
- if (!currentFormat.includes(currentPropTypeOf) && !currentFormat.includes(currentProp) && !isValidReactElement) {
18
- throwTypeError(schema.name, propertyName, currentProp, currentFormat);
19
- }
20
- }
21
- });
22
- };
23
- export {
24
- useValidatePropTypes
25
- };
26
- //# sourceMappingURL=validator.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/validation/validator.ts"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { throwRequiredError, throwTypeError } from './errorTemplates';\n\nexport const useValidatePropTypes = (props: Record<string, unknown>, schema): void => {\n schema.properties.forEach((property) => {\n const propertyName = property.name;\n const currentProp = props[propertyName];\n const currentPropTypeOf = typeof currentProp;\n // eslint-disable-next-line max-len\n const currentFormat = property.format; // this is csv representing types e.g.: \"string\"/\"string,number\"/\"[object],string\"\n let isValidReactElement = false;\n // this depends on react desc definition\n if (property.required && !Object.prototype.hasOwnProperty.call(props, property.name)) {\n throwRequiredError(schema.name, property.name);\n }\n if (currentPropTypeOf !== 'undefined' && currentProp !== null) {\n if (\n currentPropTypeOf === 'object' &&\n Object.prototype.hasOwnProperty.call(currentProp, '$$typeof') &&\n (currentFormat.includes('node') || currentFormat.includes('element'))\n ) {\n isValidReactElement = true;\n }\n\n if (!currentFormat.includes(currentPropTypeOf) && !currentFormat.includes(currentProp) && !isValidReactElement) {\n throwTypeError(schema.name, propertyName, currentProp, currentFormat);\n }\n }\n });\n};\n"],
5
- "mappings": "AAAA;ACEA;AAEO,MAAM,uBAAuB,CAAC,OAAgC,WAAiB;AACpF,SAAO,WAAW,QAAQ,CAAC,aAAa;AACtC,UAAM,eAAe,SAAS;AAC9B,UAAM,cAAc,MAAM;AAC1B,UAAM,oBAAoB,OAAO;AAEjC,UAAM,gBAAgB,SAAS;AAC/B,QAAI,sBAAsB;AAE1B,QAAI,SAAS,YAAY,CAAC,OAAO,UAAU,eAAe,KAAK,OAAO,SAAS,OAAO;AACpF,yBAAmB,OAAO,MAAM,SAAS;AAAA;AAE3C,QAAI,sBAAsB,eAAe,gBAAgB,MAAM;AAC7D,UACE,sBAAsB,YACtB,OAAO,UAAU,eAAe,KAAK,aAAa,eACjD,eAAc,SAAS,WAAW,cAAc,SAAS,aAC1D;AACA,8BAAsB;AAAA;AAGxB,UAAI,CAAC,cAAc,SAAS,sBAAsB,CAAC,cAAc,SAAS,gBAAgB,CAAC,qBAAqB;AAC9G,uBAAe,OAAO,MAAM,cAAc,aAAa;AAAA;AAAA;AAAA;AAAA;",
6
- "names": []
7
- }