@elliemae/ds-props-helpers 2.3.0-alpha.6 → 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/types/defaultProps/index.d.ts +1 -0
  47. package/types/defaultProps/useMemoMergePropsWithDefault.d.ts +1 -0
  48. package/types/getProps/index.d.ts +2 -0
  49. package/types/globalProps/constants.d.ts +3 -0
  50. package/types/globalProps/globalAttributesPropTypes.d.ts +363 -0
  51. package/types/globalProps/index.d.ts +2 -0
  52. package/types/globalProps/useGetGlobalAttributes.d.ts +5 -0
  53. package/types/index.d.ts +5 -0
  54. package/types/propTypes/PropTypes.d.ts +3 -0
  55. package/types/propTypes/customPropTypes.d.ts +2 -0
  56. package/types/propTypes/describe.d.ts +3 -0
  57. package/types/propTypes/describeConversions.d.ts +3 -0
  58. package/types/propTypes/describeGuards.d.ts +9 -0
  59. package/types/propTypes/index.d.ts +3 -0
  60. package/types/propTypes/toTypescript.d.ts +3 -0
  61. package/types/propTypes/types.d.ts +96 -0
  62. package/types/tests/globalProps/TestComponent.d.ts +1 -0
  63. package/types/tests/globalProps/globalAttributes.test.d.ts +1 -0
  64. package/types/tests/validation/any.validation.test.d.ts +1 -0
  65. package/types/tests/validation/array.validation.test.d.ts +1 -0
  66. package/types/tests/validation/boolean.validation.test.d.ts +1 -0
  67. package/types/tests/validation/function.validation.test.d.ts +1 -0
  68. package/types/tests/validation/number.validation.test.d.ts +1 -0
  69. package/types/tests/validation/object.validation.test.d.ts +1 -0
  70. package/types/tests/validation/schema.validation.test.d.ts +1 -0
  71. package/types/tests/validation/string.validation.test.d.ts +1 -0
  72. package/types/tests/validation/test.schema.d.ts +1 -0
  73. package/types/tests/validation/union.validation.test.d.ts +1 -0
  74. package/types/validation/errorTemplates.d.ts +2 -0
  75. package/types/validation/index.d.ts +3 -0
  76. package/types/validation/typescriptGuards.d.ts +12 -0
  77. package/types/validation/typescriptParsers.d.ts +1 -0
  78. package/types/validation/typescriptValidator.d.ts +15 -0
  79. package/types/validation/validator.d.ts +1 -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
- }