@elliemae/ds-props-helpers 1.55.0 → 1.56.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"typescriptValidator.js","sources":["../../../src/validation/typescriptValidator.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable max-params */\nimport { PropsWithChildren, useMemo, useState } from 'react';\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} 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) {\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 validateValueWithFormat(\n schemaName,\n `${key}[${index}]`,\n val,\n format.slice(0, -2),\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\n\nconst validateObject: validatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n // Check that we have an object\n if (typeof value !== 'object' || Array.isArray(value)) {\n throwTypeError(schemaName, key, value, format);\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 as Record<string, unknown>))) {\n throwRequiredError(schemaName, key);\n }\n\n if (trueKey in (value as Record<string, unknown>)) {\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(' | ');\n\n const errors = [];\n\n possibilities.forEach((possibility) => {\n try {\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\nconst validateJSXorNode: validatorFn = (schemaName, key, value, format) => {\n if (format === 'JSX.Element' && (typeof value !== 'object' || !('$$typeof' in value))) {\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 (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\nexport const useValidateTypescriptPropTypes = (\n props: PropsWithChildren<Record<string, unknown>>,\n schema: TypescriptSchema,\n): void => {\n const [validationsMemo, setValidationsMemo] = useState({});\n\n useMemo(() => {\n const nextValidationsMemo = {};\n\n validateTypescriptPropTypesImplementation(props, schema, validationsMemo, nextValidationsMemo);\n\n setValidationsMemo(nextValidationsMemo);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n};\n"],"names":["validateUndefined","schemaName","key","value","format","undefined","throwTypeError","validatePrimitiveType","_typeof","validateString","slice","validateArray","validationsMemo","nextValidationsMemo","Array","isArray","forEach","val","index","validateValueWithFormat","validateObject","keyValuePairs","typescriptObjectParser","objectKey","objectValue","trueKey","throwRequiredError","validateUnion","possibilities","split","errors","possibility","e","push","length","validateFunction","validateJSXorNode","isUndefined","isPrimitiveType","isUnion","isString","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis","validateTypescriptPropTypesImplementation","props","schema","properties","name","property","required","useValidateTypescriptPropTypes","useState","setValidationsMemo","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"typescriptValidator.js","sources":["../../../src/validation/typescriptValidator.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable max-params */\nimport { PropsWithChildren, useMemo, useState } from 'react';\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} 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) {\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 validateValueWithFormat(\n schemaName,\n `${key}[${index}]`,\n val,\n format.slice(0, -2),\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\n\nconst validateObject: validatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n // Check that we have an object\n if (typeof value !== 'object' || Array.isArray(value)) {\n throwTypeError(schemaName, key, value, format);\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 as Record<string, unknown>))) {\n throwRequiredError(schemaName, key);\n }\n\n if (trueKey in (value as Record<string, unknown>)) {\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(' | ');\n\n const errors = [];\n\n possibilities.forEach((possibility) => {\n try {\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\nconst validateJSXorNode: validatorFn = (schemaName, key, value, format) => {\n if (format === 'JSX.Element' && (typeof value !== 'object' || !('$$typeof' in value))) {\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 (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\nexport const useValidateTypescriptPropTypes = <T = Record<any, any>>(\n props: PropsWithChildren<T>,\n schema: TypescriptSchema,\n): void => {\n const [validationsMemo, setValidationsMemo] = useState({});\n\n useMemo(() => {\n const nextValidationsMemo = {};\n\n validateTypescriptPropTypesImplementation(props, schema, validationsMemo, nextValidationsMemo);\n\n setValidationsMemo(nextValidationsMemo);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n};\n"],"names":["validateUndefined","schemaName","key","value","format","undefined","throwTypeError","validatePrimitiveType","_typeof","validateString","slice","validateArray","validationsMemo","nextValidationsMemo","Array","isArray","forEach","val","index","validateValueWithFormat","validateObject","keyValuePairs","typescriptObjectParser","objectKey","objectValue","trueKey","throwRequiredError","validateUnion","possibilities","split","errors","possibility","e","push","length","validateFunction","validateJSXorNode","isUndefined","isPrimitiveType","isUnion","isString","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis","validateTypescriptPropTypesImplementation","props","schema","properties","name","property","required","useValidateTypescriptPropTypes","useState","setValidationsMemo","useMemo"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescriptValidator.js","sources":["../../../src/validation/typescriptValidator.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable max-params */\nimport { PropsWithChildren, useMemo, useState } from 'react';\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} 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) {\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 validateValueWithFormat(\n schemaName,\n `${key}[${index}]`,\n val,\n format.slice(0, -2),\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\n\nconst validateObject: validatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n // Check that we have an object\n if (typeof value !== 'object' || Array.isArray(value)) {\n throwTypeError(schemaName, key, value, format);\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 as Record<string, unknown>))) {\n throwRequiredError(schemaName, key);\n }\n\n if (trueKey in (value as Record<string, unknown>)) {\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(' | ');\n\n const errors = [];\n\n possibilities.forEach((possibility) => {\n try {\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\nconst validateJSXorNode: validatorFn = (schemaName, key, value, format) => {\n if (format === 'JSX.Element' && (typeof value !== 'object' || !('$$typeof' in value))) {\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 (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\nexport const useValidateTypescriptPropTypes = (\n props: PropsWithChildren<Record<string, unknown>>,\n schema: TypescriptSchema,\n): void => {\n const [validationsMemo, setValidationsMemo] = useState({});\n\n useMemo(() => {\n const nextValidationsMemo = {};\n\n validateTypescriptPropTypesImplementation(props, schema, validationsMemo, nextValidationsMemo);\n\n setValidationsMemo(nextValidationsMemo);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n};\n"],"names":["validateUndefined","schemaName","key","value","format","undefined","throwTypeError","validatePrimitiveType","validateString","slice","validateArray","validationsMemo","nextValidationsMemo","Array","isArray","forEach","val","index","validateValueWithFormat","validateObject","keyValuePairs","typescriptObjectParser","objectKey","objectValue","trueKey","throwRequiredError","validateUnion","possibilities","split","errors","possibility","e","push","length","validateFunction","validateJSXorNode","isUndefined","isPrimitiveType","isUnion","isString","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis","validateTypescriptPropTypesImplementation","props","schema","properties","name","property","required","useValidateTypescriptPropTypes","useState","setValidationsMemo","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"typescriptValidator.js","sources":["../../../src/validation/typescriptValidator.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable max-params */\nimport { PropsWithChildren, useMemo, useState } from 'react';\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} 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) {\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 validateValueWithFormat(\n schemaName,\n `${key}[${index}]`,\n val,\n format.slice(0, -2),\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\n\nconst validateObject: validatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n // Check that we have an object\n if (typeof value !== 'object' || Array.isArray(value)) {\n throwTypeError(schemaName, key, value, format);\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 as Record<string, unknown>))) {\n throwRequiredError(schemaName, key);\n }\n\n if (trueKey in (value as Record<string, unknown>)) {\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(' | ');\n\n const errors = [];\n\n possibilities.forEach((possibility) => {\n try {\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\nconst validateJSXorNode: validatorFn = (schemaName, key, value, format) => {\n if (format === 'JSX.Element' && (typeof value !== 'object' || !('$$typeof' in value))) {\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 (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\nexport const useValidateTypescriptPropTypes = <T = Record<any, any>>(\n props: PropsWithChildren<T>,\n schema: TypescriptSchema,\n): void => {\n const [validationsMemo, setValidationsMemo] = useState({});\n\n useMemo(() => {\n const nextValidationsMemo = {};\n\n validateTypescriptPropTypesImplementation(props, schema, validationsMemo, nextValidationsMemo);\n\n setValidationsMemo(nextValidationsMemo);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n};\n"],"names":["validateUndefined","schemaName","key","value","format","undefined","throwTypeError","validatePrimitiveType","validateString","slice","validateArray","validationsMemo","nextValidationsMemo","Array","isArray","forEach","val","index","validateValueWithFormat","validateObject","keyValuePairs","typescriptObjectParser","objectKey","objectValue","trueKey","throwRequiredError","validateUnion","possibilities","split","errors","possibility","e","push","length","validateFunction","validateJSXorNode","isUndefined","isPrimitiveType","isUnion","isString","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis","validateTypescriptPropTypesImplementation","props","schema","properties","name","property","required","useValidateTypescriptPropTypes","useState","setValidationsMemo","useMemo"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-props-helpers",
3
- "version": "1.55.0",
3
+ "version": "1.56.0-rc.2",
4
4
  "license": "MIT",
5
5
  "description": "Ellie Mae - Dim Sum - Validation Helpers",
6
6
  "module": "esm/index.js",