@elliemae/ds-props-helpers 1.61.10 → 1.61.13

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":"useMemoMergePropsWithDefault.js","sources":["../../../src/defaultProps/useMemoMergePropsWithDefault.ts"],"sourcesContent":["import { useRef } from 'react';\nimport deepequal from 'fast-deep-equal/react';\n\n// Hook\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useMemoCompare = <T = any>(next: T, compare: (prevToCompare: T, nextToCompare: T) => boolean): T => {\n // Ref for storing previous value\n const previousRef = useRef<T>();\n const previous = previousRef.current;\n // Pass previous and next value to compare function\n // to determine whether to consider them equal.\n const isEqual = compare(previous, next);\n // If not equal update previousRef to next value.\n // We only update if not equal so that this hook continues to return\n // the same old value if compare keeps returning true.\n if (!isEqual) previousRef.current = next;\n // Finally, if equal then return the previous value\n return isEqual ? previous : next;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useMemoMergePropsWithDefault = <T = Record<any, any>>(\n props: Partial<T>,\n defaultProps: Partial<T>,\n compare = deepequal,\n): Partial<T> => {\n const mergedProps = { ...defaultProps, ...props };\n\n return useMemoCompare<Partial<T>>(mergedProps, compare);\n};\n"],"names":["useMemoCompare","next","compare","previousRef","useRef","previous","current","isEqual","useMemoMergePropsWithDefault","props","defaultProps","deepequal","mergedProps"],"mappings":";;;;;;;;;;;;;;;;AAIA;;AACA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,IAAV,EAAmBC,OAAnB,EAAmF;AACxG;AACA,MAAMC,WAAW,GAAGC,YAAM,EAA1B;AACA,MAAMC,QAAQ,GAAGF,WAAW,CAACG,OAA7B,CAHwG;AAKxG;;AACA,MAAMC,OAAO,GAAGL,OAAO,CAACG,QAAD,EAAWJ,IAAX,CAAvB,CANwG;AAQxG;AACA;;AACA,MAAI,CAACM,OAAL,EAAcJ,WAAW,CAACG,OAAZ,GAAsBL,IAAtB,CAV0F;;AAYxG,SAAOM,OAAO,GAAGF,QAAH,GAAcJ,IAA5B;AACD,CAbD;;;IAgBaO,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CC,KAD0C,EAE1CC,YAF0C,EAI3B;AAAA,MADfR,OACe,uEADLS,6BACK;;AACf,MAAMC,WAAW,mCAAQF,YAAR,GAAyBD,KAAzB,CAAjB;;AAEA,SAAOT,cAAc,CAAaY,WAAb,EAA0BV,OAA1B,CAArB;AACD;;;;"}
1
+ {"version":3,"file":"useMemoMergePropsWithDefault.js","sources":["../../../src/defaultProps/useMemoMergePropsWithDefault.ts"],"sourcesContent":["import { useRef } from 'react';\nimport deepequal from 'fast-deep-equal/react';\n\n// Hook\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useMemoCompare = <T = any>(next: T, compare: (prevToCompare: T, nextToCompare: T) => boolean): T => {\n // Ref for storing previous value\n const previousRef = useRef<T>();\n const previous = previousRef.current;\n // Pass previous and next value to compare function\n // to determine whether to consider them equal.\n const isEqual = compare(previous, next);\n // If not equal update previousRef to next value.\n // We only update if not equal so that this hook continues to return\n // the same old value if compare keeps returning true.\n if (!isEqual) previousRef.current = next;\n // Finally, if equal then return the previous value\n return isEqual ? previous : next;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useMemoMergePropsWithDefault = <T = Record<any, any>>(\n props: Partial<T>,\n defaultProps: Partial<T>,\n compare = deepequal,\n): Partial<T> => {\n const mergedProps = { ...defaultProps, ...props };\n\n return useMemoCompare<Partial<T>>(mergedProps, compare);\n};\n"],"names":["useMemoCompare","next","compare","previousRef","useRef","previous","current","isEqual","useMemoMergePropsWithDefault","props","defaultProps","deepequal","mergedProps"],"mappings":";;;;;;;;;;;;;;;;AAIA;;AACA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,IAAV,EAAmBC,OAAnB,EAAmF;;EAExG,IAAMC,WAAW,GAAGC,YAAM,EAA1B;EACA,IAAMC,QAAQ,GAAGF,WAAW,CAACG,OAA7B,CAHwG;;;EAMxG,IAAMC,OAAO,GAAGL,OAAO,CAACG,QAAD,EAAWJ,IAAX,CAAvB,CANwG;;;;EAUxG,IAAI,CAACM,OAAL,EAAcJ,WAAW,CAACG,OAAZ,GAAsBL,IAAtB,CAV0F;;EAYxG,OAAOM,OAAO,GAAGF,QAAH,GAAcJ,IAA5B;AACD,CAbD;;;IAgBaO,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CC,KAD0C,EAE1CC,YAF0C,EAI3B;EAAA,IADfR,OACe,uEADLS,6BACK;;EACf,IAAMC,WAAW,mCAAQF,YAAR,GAAyBD,KAAzB,CAAjB;;EAEA,OAAOT,cAAc,CAAaY,WAAb,EAA0BV,OAA1B,CAArB;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/getProps/index.ts"],"sourcesContent":["export const getAriaProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('aria-')));\n\nexport const getDataProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('data-')));\n"],"names":["getAriaProps","props","Object","fromEntries","entries","filter","key","includes","getDataProps"],"mappings":";;;;;;;;;;IAAaA,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD;AAAA,SAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;AAAA;AAAA,QAAEC,GAAF;;AAAA,WAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;AAAA,GAA7B,CAAnB,CAD0B;AAAA;IAGfC,YAAY,GAAG,SAAfA,YAAe,CAACP,KAAD;AAAA,SAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;AAAA;AAAA,QAAEC,GAAF;;AAAA,WAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;AAAA,GAA7B,CAAnB,CAD0B;AAAA;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/getProps/index.ts"],"sourcesContent":["export const getAriaProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('aria-')));\n\nexport const getDataProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('data-')));\n"],"names":["getAriaProps","props","Object","fromEntries","entries","filter","key","includes","getDataProps"],"mappings":";;;;;;;;;;IAAaA,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD;EAAA,OAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;IAAA;QAAEC,GAAF;;IAAA,OAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;GAA7B,CAAnB,CAD0B;AAAA;IAGfC,YAAY,GAAG,SAAfA,YAAe,CAACP,KAAD;EAAA,OAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;IAAA;QAAEC,GAAF;;IAAA,OAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;GAA7B,CAAnB,CAD0B;AAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.schema.js","sources":["../../../src/tests/test.schema.js"],"sourcesContent":["import { PropTypes, describe } from 'react-desc';\n\nconst TestSchema = {\n string: PropTypes.string.description('String'),\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n any: PropTypes.any.description('Any'),\n union: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Union'),\n union2: PropTypes.oneOf(['A', 'B']).description('Union 2'),\n union3: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.shape({ string: PropTypes.string }),\n ]).description('Union 3'),\n array: PropTypes.arrayOf(PropTypes.string).description('Array'),\n object: PropTypes.object.description('Object'),\n shape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n anotherShape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n }).description('Another shape'),\n }).description('Shape'),\n function: PropTypes.func.description('Function'),\n jsx: PropTypes.element.description('JSX'),\n node: PropTypes.node.description('Node'),\n};\n\nconst TestComponent = () => null;\n\nconst TestComponentWithSchema = describe(TestComponent).description('Test Component');\n\nTestComponentWithSchema.propTypes = TestSchema;\n\nexport const TypescriptSchema = TestComponentWithSchema.toTypescript();\n"],"names":["TestSchema","string","PropTypes","description","number","boolean","bool","any","union","oneOfType","union2","oneOf","union3","arrayOf","shape","array","object","isRequired","anotherShape","function","func","jsx","element","node","TestComponent","TestComponentWithSchema","describe","propTypes","TypescriptSchema","toTypescript"],"mappings":"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"}
1
+ {"version":3,"file":"test.schema.js","sources":["../../../src/tests/test.schema.js"],"sourcesContent":["import { PropTypes, describe } from 'react-desc';\n\nconst TestSchema = {\n string: PropTypes.string.description('String'),\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n any: PropTypes.any.description('Any'),\n union: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Union'),\n union2: PropTypes.oneOf(['A', 'B']).description('Union 2'),\n union3: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.shape({ string: PropTypes.string }),\n ]).description('Union 3'),\n array: PropTypes.arrayOf(PropTypes.string).description('Array'),\n object: PropTypes.object.description('Object'),\n shape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n anotherShape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n }).description('Another shape'),\n }).description('Shape'),\n function: PropTypes.func.description('Function'),\n jsx: PropTypes.element.description('JSX'),\n node: PropTypes.node.description('Node'),\n};\n\nconst TestComponent = () => null;\n\nconst TestComponentWithSchema = describe(TestComponent).description('Test Component');\n\nTestComponentWithSchema.propTypes = TestSchema;\n\nexport const TypescriptSchema = TestComponentWithSchema.toTypescript();\n"],"names":["TestSchema","string","PropTypes","description","number","boolean","bool","any","union","oneOfType","union2","oneOf","union3","arrayOf","shape","array","object","isRequired","anotherShape","function","func","jsx","element","node","TestComponent","TestComponentWithSchema","describe","propTypes","TypescriptSchema","toTypescript"],"mappings":";;;;;;AAEA,IAAMA,UAAU,GAAG;EACjBC,MAAM,EAAEC,mBAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,CADS;EAEjBC,MAAM,EAAEF,mBAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFS;EAGjBE,OAAO,EAAEH,mBAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B,CAHQ;EAIjBI,GAAG,EAAEL,mBAAS,CAACK,GAAV,CAAcJ,WAAd,CAA0B,KAA1B,CAJY;EAKjBK,KAAK,EAAEN,mBAAS,CAACO,SAAV,CAAoB,CAACP,mBAAS,CAACD,MAAX,EAAmBC,mBAAS,CAACE,MAA7B,CAApB,EAA0DD,WAA1D,CAAsE,OAAtE,CALU;EAMjBO,MAAM,EAAER,mBAAS,CAACS,KAAV,CAAgB,CAAC,GAAD,EAAM,GAAN,CAAhB,EAA4BR,WAA5B,CAAwC,SAAxC,CANS;EAOjBS,MAAM,EAAEV,mBAAS,CAACO,SAAV,CAAoB,CAC1BP,mBAAS,CAACD,MADgB,EAE1BC,mBAAS,CAACW,OAAV,CAAkBX,mBAAS,CAACD,MAA5B,CAF0B,EAG1BC,mBAAS,CAACY,KAAV,CAAgB;IAAEb,MAAM,EAAEC,mBAAS,CAACD;GAApC,CAH0B,CAApB,EAILE,WAJK,CAIO,SAJP,CAPS;EAYjBY,KAAK,EAAEb,mBAAS,CAACW,OAAV,CAAkBX,mBAAS,CAACD,MAA5B,EAAoCE,WAApC,CAAgD,OAAhD,CAZU;EAajBa,MAAM,EAAEd,mBAAS,CAACc,MAAV,CAAiBb,WAAjB,CAA6B,QAA7B,CAbS;EAcjBW,KAAK,EAAEZ,mBAAS,CAACY,KAAV,CAAgB;IACrBb,MAAM,EAAEC,mBAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,EAAuCc,UAD1B;IAErBb,MAAM,EAAEF,mBAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFa;IAGrBE,OAAO,EAAEH,mBAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B,CAHY;IAIrBe,YAAY,EAAEhB,mBAAS,CAACY,KAAV,CAAgB;MAC5Bb,MAAM,EAAEC,mBAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,EAAuCc,UADnB;MAE5Bb,MAAM,EAAEF,mBAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFoB;MAG5BE,OAAO,EAAEH,mBAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B;KAHG,EAIXA,WAJW,CAIC,eAJD;GAJT,EASJA,WATI,CASQ,OATR,CAdU;EAwBjBgB,QAAQ,EAAEjB,mBAAS,CAACkB,IAAV,CAAejB,WAAf,CAA2B,UAA3B,CAxBO;EAyBjBkB,GAAG,EAAEnB,mBAAS,CAACoB,OAAV,CAAkBnB,WAAlB,CAA8B,KAA9B,CAzBY;EA0BjBoB,IAAI,EAAErB,mBAAS,CAACqB,IAAV,CAAepB,WAAf,CAA2B,MAA3B;AA1BW,CAAnB;;AA6BA,IAAMqB,aAAa,GAAG,SAAhBA,aAAgB;EAAA,OAAM,IAAN;AAAA,CAAtB;;AAEA,IAAMC,uBAAuB,GAAGC,kBAAQ,CAACF,aAAD,CAAR,CAAwBrB,WAAxB,CAAoC,gBAApC,CAAhC;AAEAsB,uBAAuB,CAACE,SAAxB,GAAoC3B,UAApC;IAEa4B,gBAAgB,GAAGH,uBAAuB,CAACI,YAAxB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorTemplates.js","sources":["../../../src/validation/errorTemplates.ts"],"sourcesContent":["/* eslint-disable max-params */\nexport const throwTypeError = (\n componentName: string,\n validPropKey: string,\n invalidProp: unknown,\n validFormat: string,\n): void => {\n throw new Error(\n `${componentName}:: You are trying to pass a not valid \"${validPropKey}\" property, \n please provide a valid type.\n\n Received: ${invalidProp} (${typeof invalidProp})\n Expected: (${validFormat.replace('\\n', ' or ')})\n `,\n );\n};\n\nexport const throwRequiredError = (componentName: string, validPropKey: string): void => {\n throw new Error(\n `${componentName}:: Please provide a/an \"${validPropKey}\" property to use this component. \n This property is required.\n `,\n );\n};\n"],"names":["throwTypeError","componentName","validPropKey","invalidProp","validFormat","Error","replace","throwRequiredError"],"mappings":";;;;;;;;;;AAAA;IACaA,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,aAD4B,EAE5BC,YAF4B,EAG5BC,WAH4B,EAI5BC,WAJ4B,EAKnB;AACT,QAAM,IAAIC,KAAJ,WACDJ,aADC,qDACsDC,YADtD,4EAIMC,WAJN,2CAI6BA,WAJ7B,8BAKOC,WAAW,CAACE,OAAZ,CAAoB,IAApB,EAA0B,MAA1B,CALP,WAAN;AAQD;IAEYC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACN,aAAD,EAAwBC,YAAxB,EAAuD;AACvF,QAAM,IAAIG,KAAJ,WACDJ,aADC,sCACuCC,YADvC,8EAAN;AAKD;;;;;"}
1
+ {"version":3,"file":"errorTemplates.js","sources":["../../../src/validation/errorTemplates.ts"],"sourcesContent":["/* eslint-disable max-params */\nexport const throwTypeError = (\n componentName: string,\n validPropKey: string,\n invalidProp: unknown,\n validFormat: string,\n): void => {\n throw new Error(\n `${componentName}:: You are trying to pass a not valid \"${validPropKey}\" property, \n please provide a valid type.\n\n Received: ${invalidProp} (${typeof invalidProp})\n Expected: (${validFormat.replace('\\n', ' or ')})\n `,\n );\n};\n\nexport const throwRequiredError = (componentName: string, validPropKey: string): void => {\n throw new Error(\n `${componentName}:: Please provide a/an \"${validPropKey}\" property to use this component. \n This property is required.\n `,\n );\n};\n"],"names":["throwTypeError","componentName","validPropKey","invalidProp","validFormat","Error","replace","throwRequiredError"],"mappings":";;;;;;;;;;AAAA;IACaA,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,aAD4B,EAE5BC,YAF4B,EAG5BC,WAH4B,EAI5BC,WAJ4B,EAKnB;EACT,MAAM,IAAIC,KAAJ,WACDJ,aADC,qDACsDC,YADtD,4EAIMC,WAJN,2CAI6BA,WAJ7B,8BAKOC,WAAW,CAACE,OAAZ,CAAoB,IAApB,EAA0B,MAA1B,CALP,WAAN;AAQD;IAEYC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACN,aAAD,EAAwBC,YAAxB,EAAuD;EACvF,MAAM,IAAIG,KAAJ,WACDJ,aADC,sCACuCC,YADvC,8EAAN;AAKD;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescriptGuards.js","sources":["../../../src/validation/typescriptGuards.ts"],"sourcesContent":["type guardFn = (format: string) => boolean;\n\nexport const isPrimitiveType: guardFn = (format) => ['string', 'number', 'boolean'].includes(format);\nexport const isUndefined: guardFn = (format) => format === '\"undefined\"';\nexport const isUnion: guardFn = (format) => {\n let depth = 0;\n let satisfies = false;\n format.split('').forEach((char) => {\n if (['{', '('].includes(char)) depth += 1;\n else if (['}', ')'].includes(char)) depth -= 1;\n else if (char === '|' && depth === 0) satisfies = true;\n });\n return satisfies;\n};\n\nexport const isString: guardFn = (format) => !isUnion(format) && format[0] === '\"' && format.slice(-1) === '\"';\n\nexport const isArray: guardFn = (format) => !isUnion(format) && format.slice(-2) === '[]';\n\nexport const isObject: guardFn = (format) =>\n format === 'object' || (!isUnion(format) && format[0] === '{' && format.slice(-1) === '}');\n\nexport const isFunction: guardFn = (format) => !isUnion(format) && format === '((...args: any[]) => any)';\n\nexport const isJSXorNode: guardFn = (format) => !isUnion(format) && ['React.ReactNode', 'JSX.Element'].includes(format);\n\nexport const isSomethingWithParenthesis: guardFn = (format) =>\n !isUnion(format) && format[0] === '(' && format.slice(-1) === ')';\n"],"names":["isPrimitiveType","format","includes","isUndefined","isUnion","depth","satisfies","split","forEach","char","isString","slice","isArray","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis"],"mappings":";;;;IAEaA,eAAwB,GAAG,SAA3BA,eAA2B,CAACC,MAAD;AAAA,SAAY,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgCC,QAAhC,CAAyCD,MAAzC,CAAZ;AAAA;IAC3BE,WAAoB,GAAG,SAAvBA,WAAuB,CAACF,MAAD;AAAA,SAAYA,MAAM,KAAK,aAAvB;AAAA;IACvBG,OAAgB,GAAG,SAAnBA,OAAmB,CAACH,MAAD,EAAY;AAC1C,MAAII,KAAK,GAAG,CAAZ;AACA,MAAIC,SAAS,GAAG,KAAhB;AACAL,EAAAA,MAAM,CAACM,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;AACjC,QAAI,CAAC,GAAD,EAAM,GAAN,EAAWP,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACK,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWH,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACA,IAAII,IAAI,KAAK,GAAT,IAAgBJ,KAAK,KAAK,CAA9B,EAAiCC,SAAS,GAAG,IAAZ;AACvC,GAJD;AAKA,SAAOA,SAAP;AACD;IAEYI,QAAiB,GAAG,SAApBA,QAAoB,CAACT,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GAA1E;AAAA;IAEpBC,OAAgB,GAAG,SAAnBA,OAAmB,CAACX,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,IAArD;AAAA;IAEnBE,QAAiB,GAAG,SAApBA,QAAoB,CAACZ,MAAD;AAAA,SAC/BA,MAAM,KAAK,QAAX,IAAwB,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADvD;AAAA;IAGpBG,UAAmB,GAAG,SAAtBA,UAAsB,CAACb,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,KAAK,2BAA3C;AAAA;IAEtBc,WAAoB,GAAG,SAAvBA,WAAuB,CAACd,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoB,CAAC,iBAAD,EAAoB,aAApB,EAAmCC,QAAnC,CAA4CD,MAA5C,CAAhC;AAAA;IAEvBe,0BAAmC,GAAG,SAAtCA,0BAAsC,CAACf,MAAD;AAAA,SACjD,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADb;AAAA;;;;;;;;;;;;"}
1
+ {"version":3,"file":"typescriptGuards.js","sources":["../../../src/validation/typescriptGuards.ts"],"sourcesContent":["type guardFn = (format: string) => boolean;\n\nexport const isPrimitiveType: guardFn = (format) => ['string', 'number', 'boolean'].includes(format);\nexport const isUndefined: guardFn = (format) => format === '\"undefined\"';\nexport const isUnion: guardFn = (format) => {\n let depth = 0;\n let satisfies = false;\n format.split('').forEach((char) => {\n if (['{', '('].includes(char)) depth += 1;\n else if (['}', ')'].includes(char)) depth -= 1;\n else if (char === '|' && depth === 0) satisfies = true;\n });\n return satisfies;\n};\n\nexport const isString: guardFn = (format) => !isUnion(format) && format[0] === '\"' && format.slice(-1) === '\"';\n\nexport const isArray: guardFn = (format) => !isUnion(format) && format.slice(-2) === '[]';\n\nexport const isObject: guardFn = (format) =>\n format === 'object' || (!isUnion(format) && format[0] === '{' && format.slice(-1) === '}');\n\nexport const isFunction: guardFn = (format) => !isUnion(format) && format === '((...args: any[]) => any)';\n\nexport const isJSXorNode: guardFn = (format) => !isUnion(format) && ['React.ReactNode', 'JSX.Element'].includes(format);\n\nexport const isSomethingWithParenthesis: guardFn = (format) =>\n !isUnion(format) && format[0] === '(' && format.slice(-1) === ')';\n"],"names":["isPrimitiveType","format","includes","isUndefined","isUnion","depth","satisfies","split","forEach","char","isString","slice","isArray","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis"],"mappings":";;;;IAEaA,eAAwB,GAAG,SAA3BA,eAA2B,CAACC,MAAD;EAAA,OAAY,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgCC,QAAhC,CAAyCD,MAAzC,CAAZ;AAAA;IAC3BE,WAAoB,GAAG,SAAvBA,WAAuB,CAACF,MAAD;EAAA,OAAYA,MAAM,KAAK,aAAvB;AAAA;IACvBG,OAAgB,GAAG,SAAnBA,OAAmB,CAACH,MAAD,EAAY;EAC1C,IAAII,KAAK,GAAG,CAAZ;EACA,IAAIC,SAAS,GAAG,KAAhB;EACAL,MAAM,CAACM,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;IACjC,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWP,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACK,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWH,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACA,IAAII,IAAI,KAAK,GAAT,IAAgBJ,KAAK,KAAK,CAA9B,EAAiCC,SAAS,GAAG,IAAZ;GAHxC;EAKA,OAAOA,SAAP;AACD;IAEYI,QAAiB,GAAG,SAApBA,QAAoB,CAACT,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GAA1E;AAAA;IAEpBC,OAAgB,GAAG,SAAnBA,OAAmB,CAACX,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,IAArD;AAAA;IAEnBE,QAAiB,GAAG,SAApBA,QAAoB,CAACZ,MAAD;EAAA,OAC/BA,MAAM,KAAK,QAAX,IAAwB,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADvD;AAAA;IAGpBG,UAAmB,GAAG,SAAtBA,UAAsB,CAACb,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,KAAK,2BAA3C;AAAA;IAEtBc,WAAoB,GAAG,SAAvBA,WAAuB,CAACd,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoB,CAAC,iBAAD,EAAoB,aAApB,EAAmCC,QAAnC,CAA4CD,MAA5C,CAAhC;AAAA;IAEvBe,0BAAmC,GAAG,SAAtCA,0BAAsC,CAACf,MAAD;EAAA,OACjD,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADb;AAAA;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescriptParsers.js","sources":["../../../src/validation/typescriptParsers.ts"],"sourcesContent":["/* eslint-disable complexity */\nexport const typescriptObjectParser = (format: string): [string, string][] => {\n const keyValuePairs: [string, string][] = [];\n\n // State of the algorithm\n let lastKey = '';\n let lastValue = '';\n let shouldAppendToKey = true;\n\n const pushPair = () => {\n if (lastKey) keyValuePairs.push([lastKey, lastValue]);\n lastKey = '';\n lastValue = '';\n shouldAppendToKey = true;\n };\n\n // Complex -- but working -- logic\n let depth = 0;\n format.split('').forEach((char) => {\n if (char === '{') {\n depth += 1;\n if (depth > 1) lastValue += char;\n } else if (char === '}') {\n if (depth > 1) lastValue += char;\n depth -= 1;\n if (depth === 1) pushPair();\n } else if (char === ':') {\n shouldAppendToKey = false;\n if (depth > 1) lastValue += char;\n } else if (char === ',') {\n if (depth === 1) pushPair();\n else lastValue += char;\n } else if (char === ' ') {\n // Do nothing\n } else if (shouldAppendToKey) lastKey += char;\n else lastValue += char;\n });\n pushPair();\n\n return keyValuePairs;\n};\n"],"names":["typescriptObjectParser","format","keyValuePairs","lastKey","lastValue","shouldAppendToKey","pushPair","push","depth","split","forEach","char"],"mappings":";;;;AAAA;IACaA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,MAAD,EAAwC;AAC5E,MAAMC,aAAiC,GAAG,EAA1C,CAD4E;;AAI5E,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIC,iBAAiB,GAAG,IAAxB;;AAEA,MAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB,QAAIH,OAAJ,EAAaD,aAAa,CAACK,IAAd,CAAmB,CAACJ,OAAD,EAAUC,SAAV,CAAnB;AACbD,IAAAA,OAAO,GAAG,EAAV;AACAC,IAAAA,SAAS,GAAG,EAAZ;AACAC,IAAAA,iBAAiB,GAAG,IAApB;AACD,GALD,CAR4E;;;AAgB5E,MAAIG,KAAK,GAAG,CAAZ;AACAP,EAAAA,MAAM,CAACQ,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;AACjC,QAAIA,IAAI,KAAK,GAAb,EAAkB;AAChBH,MAAAA,KAAK,IAAI,CAAT;AACA,UAAIA,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;AAChB,KAHD,MAGO,IAAIA,IAAI,KAAK,GAAb,EAAkB;AACvB,UAAIH,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;AACfH,MAAAA,KAAK,IAAI,CAAT;AACA,UAAIA,KAAK,KAAK,CAAd,EAAiBF,QAAQ;AAC1B,KAJM,MAIA,IAAIK,IAAI,KAAK,GAAb,EAAkB;AACvBN,MAAAA,iBAAiB,GAAG,KAApB;AACA,UAAIG,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;AAChB,KAHM,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB;AACvB,UAAIH,KAAK,KAAK,CAAd,EAAiBF,QAAQ,GAAzB,KACKF,SAAS,IAAIO,IAAb;AACN,KAHM,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB,CAAlB,MAEA,IAAIN,iBAAJ,EAAuBF,OAAO,IAAIQ,IAAX,CAAvB,KACFP,SAAS,IAAIO,IAAb;AACN,GAlBD;AAmBAL,EAAAA,QAAQ;AAER,SAAOJ,aAAP;AACD;;;;"}
1
+ {"version":3,"file":"typescriptParsers.js","sources":["../../../src/validation/typescriptParsers.ts"],"sourcesContent":["/* eslint-disable complexity */\nexport const typescriptObjectParser = (format: string): [string, string][] => {\n const keyValuePairs: [string, string][] = [];\n\n // State of the algorithm\n let lastKey = '';\n let lastValue = '';\n let shouldAppendToKey = true;\n\n const pushPair = () => {\n if (lastKey) keyValuePairs.push([lastKey, lastValue]);\n lastKey = '';\n lastValue = '';\n shouldAppendToKey = true;\n };\n\n // Complex -- but working -- logic\n let depth = 0;\n format.split('').forEach((char) => {\n if (char === '{') {\n depth += 1;\n if (depth > 1) lastValue += char;\n } else if (char === '}') {\n if (depth > 1) lastValue += char;\n depth -= 1;\n if (depth === 1) pushPair();\n } else if (char === ':') {\n shouldAppendToKey = false;\n if (depth > 1) lastValue += char;\n } else if (char === ',') {\n if (depth === 1) pushPair();\n else lastValue += char;\n } else if (char === ' ') {\n // Do nothing\n } else if (shouldAppendToKey) lastKey += char;\n else lastValue += char;\n });\n pushPair();\n\n return keyValuePairs;\n};\n"],"names":["typescriptObjectParser","format","keyValuePairs","lastKey","lastValue","shouldAppendToKey","pushPair","push","depth","split","forEach","char"],"mappings":";;;;AAAA;IACaA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,MAAD,EAAwC;EAC5E,IAAMC,aAAiC,GAAG,EAA1C,CAD4E;;EAI5E,IAAIC,OAAO,GAAG,EAAd;EACA,IAAIC,SAAS,GAAG,EAAhB;EACA,IAAIC,iBAAiB,GAAG,IAAxB;;EAEA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;IACrB,IAAIH,OAAJ,EAAaD,aAAa,CAACK,IAAd,CAAmB,CAACJ,OAAD,EAAUC,SAAV,CAAnB;IACbD,OAAO,GAAG,EAAV;IACAC,SAAS,GAAG,EAAZ;IACAC,iBAAiB,GAAG,IAApB;GAJF,CAR4E;;;EAgB5E,IAAIG,KAAK,GAAG,CAAZ;EACAP,MAAM,CAACQ,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;IACjC,IAAIA,IAAI,KAAK,GAAb,EAAkB;MAChBH,KAAK,IAAI,CAAT;MACA,IAAIA,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;KAFjB,MAGO,IAAIA,IAAI,KAAK,GAAb,EAAkB;MACvB,IAAIH,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;MACfH,KAAK,IAAI,CAAT;MACA,IAAIA,KAAK,KAAK,CAAd,EAAiBF,QAAQ;KAHpB,MAIA,IAAIK,IAAI,KAAK,GAAb,EAAkB;MACvBN,iBAAiB,GAAG,KAApB;MACA,IAAIG,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;KAFV,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB;MACvB,IAAIH,KAAK,KAAK,CAAd,EAAiBF,QAAQ,GAAzB,KACKF,SAAS,IAAIO,IAAb;KAFA,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB,CAAlB,MAEA,IAAIN,iBAAJ,EAAuBF,OAAO,IAAIQ,IAAX,CAAvB,KACFP,SAAS,IAAIO,IAAb;GAjBP;EAmBAL,QAAQ;EAER,OAAOJ,aAAP;AACD;;;;"}
@@ -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 = <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
+ {"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":"validator.js","sources":["../../../src/validation/validator.ts"],"sourcesContent":["/* 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"],"names":["useValidatePropTypes","props","schema","properties","forEach","property","propertyName","name","currentProp","currentPropTypeOf","currentFormat","format","isValidReactElement","required","Object","prototype","hasOwnProperty","call","throwRequiredError","includes","throwTypeError"],"mappings":";;;;;;;;;;;IAIaA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAiCC,MAAjC,EAAkD;AACpFA,EAAAA,MAAM,CAACC,UAAP,CAAkBC,OAAlB,CAA0B,UAACC,QAAD,EAAc;AACtC,QAAMC,YAAY,GAAGD,QAAQ,CAACE,IAA9B;AACA,QAAMC,WAAW,GAAGP,KAAK,CAACK,YAAD,CAAzB;;AACA,QAAMG,iBAAiB,+BAAUD,WAAV,CAAvB,CAHsC;;;AAKtC,QAAME,aAAa,GAAGL,QAAQ,CAACM,MAA/B,CALsC;;AAMtC,QAAIC,mBAAmB,GAAG,KAA1B,CANsC;;AAQtC,QAAIP,QAAQ,CAACQ,QAAT,IAAqB,CAACC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChB,KAArC,EAA4CI,QAAQ,CAACE,IAArD,CAA1B,EAAsF;AACpFW,MAAAA,4CAAkB,CAAChB,MAAM,CAACK,IAAR,EAAcF,QAAQ,CAACE,IAAvB,CAAlB;AACD;;AACD,QAAIE,iBAAiB,KAAK,WAAtB,IAAqCD,WAAW,KAAK,IAAzD,EAA+D;AAC7D,UACEC,iBAAiB,KAAK,QAAtB,IACAK,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCT,WAArC,EAAkD,UAAlD,CADA,KAECE,aAAa,CAACS,QAAd,CAAuB,MAAvB,KAAkCT,aAAa,CAACS,QAAd,CAAuB,SAAvB,CAFnC,CADF,EAIE;AACAP,QAAAA,mBAAmB,GAAG,IAAtB;AACD;;AAED,UAAI,CAACF,aAAa,CAACS,QAAd,CAAuBV,iBAAvB,CAAD,IAA8C,CAACC,aAAa,CAACS,QAAd,CAAuBX,WAAvB,CAA/C,IAAsF,CAACI,mBAA3F,EAAgH;AAC9GQ,QAAAA,wCAAc,CAAClB,MAAM,CAACK,IAAR,EAAcD,YAAd,EAA4BE,WAA5B,EAAyCE,aAAzC,CAAd;AACD;AACF;AACF,GAxBD;AAyBD;;;;"}
1
+ {"version":3,"file":"validator.js","sources":["../../../src/validation/validator.ts"],"sourcesContent":["/* 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"],"names":["useValidatePropTypes","props","schema","properties","forEach","property","propertyName","name","currentProp","currentPropTypeOf","currentFormat","format","isValidReactElement","required","Object","prototype","hasOwnProperty","call","throwRequiredError","includes","throwTypeError"],"mappings":";;;;;;;;;;;IAIaA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAiCC,MAAjC,EAAkD;EACpFA,MAAM,CAACC,UAAP,CAAkBC,OAAlB,CAA0B,UAACC,QAAD,EAAc;IACtC,IAAMC,YAAY,GAAGD,QAAQ,CAACE,IAA9B;IACA,IAAMC,WAAW,GAAGP,KAAK,CAACK,YAAD,CAAzB;;IACA,IAAMG,iBAAiB,+BAAUD,WAAV,CAAvB,CAHsC;;;IAKtC,IAAME,aAAa,GAAGL,QAAQ,CAACM,MAA/B,CALsC;;IAMtC,IAAIC,mBAAmB,GAAG,KAA1B,CANsC;;IAQtC,IAAIP,QAAQ,CAACQ,QAAT,IAAqB,CAACC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChB,KAArC,EAA4CI,QAAQ,CAACE,IAArD,CAA1B,EAAsF;MACpFW,4CAAkB,CAAChB,MAAM,CAACK,IAAR,EAAcF,QAAQ,CAACE,IAAvB,CAAlB;;;IAEF,IAAIE,iBAAiB,KAAK,WAAtB,IAAqCD,WAAW,KAAK,IAAzD,EAA+D;MAC7D,IACEC,iBAAiB,KAAK,QAAtB,IACAK,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCT,WAArC,EAAkD,UAAlD,CADA,KAECE,aAAa,CAACS,QAAd,CAAuB,MAAvB,KAAkCT,aAAa,CAACS,QAAd,CAAuB,SAAvB,CAFnC,CADF,EAIE;QACAP,mBAAmB,GAAG,IAAtB;;;MAGF,IAAI,CAACF,aAAa,CAACS,QAAd,CAAuBV,iBAAvB,CAAD,IAA8C,CAACC,aAAa,CAACS,QAAd,CAAuBX,WAAvB,CAA/C,IAAsF,CAACI,mBAA3F,EAAgH;QAC9GQ,wCAAc,CAAClB,MAAM,CAACK,IAAR,EAAcD,YAAd,EAA4BE,WAA5B,EAAyCE,aAAzC,CAAd;;;GArBN;AAyBD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMemoMergePropsWithDefault.js","sources":["../../../src/defaultProps/useMemoMergePropsWithDefault.ts"],"sourcesContent":["import { useRef } from 'react';\nimport deepequal from 'fast-deep-equal/react';\n\n// Hook\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useMemoCompare = <T = any>(next: T, compare: (prevToCompare: T, nextToCompare: T) => boolean): T => {\n // Ref for storing previous value\n const previousRef = useRef<T>();\n const previous = previousRef.current;\n // Pass previous and next value to compare function\n // to determine whether to consider them equal.\n const isEqual = compare(previous, next);\n // If not equal update previousRef to next value.\n // We only update if not equal so that this hook continues to return\n // the same old value if compare keeps returning true.\n if (!isEqual) previousRef.current = next;\n // Finally, if equal then return the previous value\n return isEqual ? previous : next;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useMemoMergePropsWithDefault = <T = Record<any, any>>(\n props: Partial<T>,\n defaultProps: Partial<T>,\n compare = deepequal,\n): Partial<T> => {\n const mergedProps = { ...defaultProps, ...props };\n\n return useMemoCompare<Partial<T>>(mergedProps, compare);\n};\n"],"names":["useMemoCompare","next","compare","previousRef","useRef","previous","current","isEqual","useMemoMergePropsWithDefault","props","defaultProps","deepequal","mergedProps"],"mappings":";;;;;;;AAIA;;AACA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,IAAV,EAAmBC,OAAnB,EAAmF;AACxG;AACA,MAAMC,WAAW,GAAGC,MAAM,EAA1B;AACA,MAAMC,QAAQ,GAAGF,WAAW,CAACG,OAA7B,CAHwG;AAKxG;;AACA,MAAMC,OAAO,GAAGL,OAAO,CAACG,QAAD,EAAWJ,IAAX,CAAvB,CANwG;AAQxG;AACA;;AACA,MAAI,CAACM,OAAL,EAAcJ,WAAW,CAACG,OAAZ,GAAsBL,IAAtB,CAV0F;;AAYxG,SAAOM,OAAO,GAAGF,QAAH,GAAcJ,IAA5B;AACD,CAbD;;;IAgBaO,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CC,KAD0C,EAE1CC,YAF0C,EAI3B;AAAA,MADfR,OACe,uEADLS,SACK;;AACf,MAAMC,WAAW,mCAAQF,YAAR,GAAyBD,KAAzB,CAAjB;;AAEA,SAAOT,cAAc,CAAaY,WAAb,EAA0BV,OAA1B,CAArB;AACD;;;;"}
1
+ {"version":3,"file":"useMemoMergePropsWithDefault.js","sources":["../../../src/defaultProps/useMemoMergePropsWithDefault.ts"],"sourcesContent":["import { useRef } from 'react';\nimport deepequal from 'fast-deep-equal/react';\n\n// Hook\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useMemoCompare = <T = any>(next: T, compare: (prevToCompare: T, nextToCompare: T) => boolean): T => {\n // Ref for storing previous value\n const previousRef = useRef<T>();\n const previous = previousRef.current;\n // Pass previous and next value to compare function\n // to determine whether to consider them equal.\n const isEqual = compare(previous, next);\n // If not equal update previousRef to next value.\n // We only update if not equal so that this hook continues to return\n // the same old value if compare keeps returning true.\n if (!isEqual) previousRef.current = next;\n // Finally, if equal then return the previous value\n return isEqual ? previous : next;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useMemoMergePropsWithDefault = <T = Record<any, any>>(\n props: Partial<T>,\n defaultProps: Partial<T>,\n compare = deepequal,\n): Partial<T> => {\n const mergedProps = { ...defaultProps, ...props };\n\n return useMemoCompare<Partial<T>>(mergedProps, compare);\n};\n"],"names":["useMemoCompare","next","compare","previousRef","useRef","previous","current","isEqual","useMemoMergePropsWithDefault","props","defaultProps","deepequal","mergedProps"],"mappings":";;;;;;;AAIA;;AACA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAAUC,IAAV,EAAmBC,OAAnB,EAAmF;;EAExG,IAAMC,WAAW,GAAGC,MAAM,EAA1B;EACA,IAAMC,QAAQ,GAAGF,WAAW,CAACG,OAA7B,CAHwG;;;EAMxG,IAAMC,OAAO,GAAGL,OAAO,CAACG,QAAD,EAAWJ,IAAX,CAAvB,CANwG;;;;EAUxG,IAAI,CAACM,OAAL,EAAcJ,WAAW,CAACG,OAAZ,GAAsBL,IAAtB,CAV0F;;EAYxG,OAAOM,OAAO,GAAGF,QAAH,GAAcJ,IAA5B;AACD,CAbD;;;IAgBaO,4BAA4B,GAAG,SAA/BA,4BAA+B,CAC1CC,KAD0C,EAE1CC,YAF0C,EAI3B;EAAA,IADfR,OACe,uEADLS,SACK;;EACf,IAAMC,WAAW,mCAAQF,YAAR,GAAyBD,KAAzB,CAAjB;;EAEA,OAAOT,cAAc,CAAaY,WAAb,EAA0BV,OAA1B,CAArB;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/getProps/index.ts"],"sourcesContent":["export const getAriaProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('aria-')));\n\nexport const getDataProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('data-')));\n"],"names":["getAriaProps","props","Object","fromEntries","entries","filter","key","includes","getDataProps"],"mappings":";;IAAaA,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD;AAAA,SAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;AAAA;AAAA,QAAEC,GAAF;;AAAA,WAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;AAAA,GAA7B,CAAnB,CAD0B;AAAA;IAGfC,YAAY,GAAG,SAAfA,YAAe,CAACP,KAAD;AAAA,SAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;AAAA;AAAA,QAAEC,GAAF;;AAAA,WAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;AAAA,GAA7B,CAAnB,CAD0B;AAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/getProps/index.ts"],"sourcesContent":["export const getAriaProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('aria-')));\n\nexport const getDataProps = (props: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => key.includes('data-')));\n"],"names":["getAriaProps","props","Object","fromEntries","entries","filter","key","includes","getDataProps"],"mappings":";;IAAaA,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD;EAAA,OAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;IAAA;QAAEC,GAAF;;IAAA,OAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;GAA7B,CAAnB,CAD0B;AAAA;IAGfC,YAAY,GAAG,SAAfA,YAAe,CAACP,KAAD;EAAA,OAC1BC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeH,KAAf,EAAsBI,MAAtB,CAA6B;IAAA;QAAEC,GAAF;;IAAA,OAAWA,GAAG,CAACC,QAAJ,CAAa,OAAb,CAAX;GAA7B,CAAnB,CAD0B;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.schema.js","sources":["../../../src/tests/test.schema.js"],"sourcesContent":["import { PropTypes, describe } from 'react-desc';\n\nconst TestSchema = {\n string: PropTypes.string.description('String'),\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n any: PropTypes.any.description('Any'),\n union: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Union'),\n union2: PropTypes.oneOf(['A', 'B']).description('Union 2'),\n union3: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.shape({ string: PropTypes.string }),\n ]).description('Union 3'),\n array: PropTypes.arrayOf(PropTypes.string).description('Array'),\n object: PropTypes.object.description('Object'),\n shape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n anotherShape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n }).description('Another shape'),\n }).description('Shape'),\n function: PropTypes.func.description('Function'),\n jsx: PropTypes.element.description('JSX'),\n node: PropTypes.node.description('Node'),\n};\n\nconst TestComponent = () => null;\n\nconst TestComponentWithSchema = describe(TestComponent).description('Test Component');\n\nTestComponentWithSchema.propTypes = TestSchema;\n\nexport const TypescriptSchema = TestComponentWithSchema.toTypescript();\n"],"names":["TestSchema","string","PropTypes","description","number","boolean","bool","any","union","oneOfType","union2","oneOf","union3","arrayOf","shape","array","object","isRequired","anotherShape","function","func","jsx","element","node","TestComponent","TestComponentWithSchema","describe","propTypes","TypescriptSchema","toTypescript"],"mappings":";;AAEA,IAAMA,UAAU,GAAG;AACjBC,EAAAA,MAAM,EAAEC,SAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,CADS;AAEjBC,EAAAA,MAAM,EAAEF,SAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFS;AAGjBE,EAAAA,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B,CAHQ;AAIjBI,EAAAA,GAAG,EAAEL,SAAS,CAACK,GAAV,CAAcJ,WAAd,CAA0B,KAA1B,CAJY;AAKjBK,EAAAA,KAAK,EAAEN,SAAS,CAACO,SAAV,CAAoB,CAACP,SAAS,CAACD,MAAX,EAAmBC,SAAS,CAACE,MAA7B,CAApB,EAA0DD,WAA1D,CAAsE,OAAtE,CALU;AAMjBO,EAAAA,MAAM,EAAER,SAAS,CAACS,KAAV,CAAgB,CAAC,GAAD,EAAM,GAAN,CAAhB,EAA4BR,WAA5B,CAAwC,SAAxC,CANS;AAOjBS,EAAAA,MAAM,EAAEV,SAAS,CAACO,SAAV,CAAoB,CAC1BP,SAAS,CAACD,MADgB,EAE1BC,SAAS,CAACW,OAAV,CAAkBX,SAAS,CAACD,MAA5B,CAF0B,EAG1BC,SAAS,CAACY,KAAV,CAAgB;AAAEb,IAAAA,MAAM,EAAEC,SAAS,CAACD;AAApB,GAAhB,CAH0B,CAApB,EAILE,WAJK,CAIO,SAJP,CAPS;AAYjBY,EAAAA,KAAK,EAAEb,SAAS,CAACW,OAAV,CAAkBX,SAAS,CAACD,MAA5B,EAAoCE,WAApC,CAAgD,OAAhD,CAZU;AAajBa,EAAAA,MAAM,EAAEd,SAAS,CAACc,MAAV,CAAiBb,WAAjB,CAA6B,QAA7B,CAbS;AAcjBW,EAAAA,KAAK,EAAEZ,SAAS,CAACY,KAAV,CAAgB;AACrBb,IAAAA,MAAM,EAAEC,SAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,EAAuCc,UAD1B;AAErBb,IAAAA,MAAM,EAAEF,SAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFa;AAGrBE,IAAAA,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B,CAHY;AAIrBe,IAAAA,YAAY,EAAEhB,SAAS,CAACY,KAAV,CAAgB;AAC5Bb,MAAAA,MAAM,EAAEC,SAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,EAAuCc,UADnB;AAE5Bb,MAAAA,MAAM,EAAEF,SAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFoB;AAG5BE,MAAAA,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B;AAHmB,KAAhB,EAIXA,WAJW,CAIC,eAJD;AAJO,GAAhB,EASJA,WATI,CASQ,OATR,CAdU;AAwBjBgB,EAAAA,QAAQ,EAAEjB,SAAS,CAACkB,IAAV,CAAejB,WAAf,CAA2B,UAA3B,CAxBO;AAyBjBkB,EAAAA,GAAG,EAAEnB,SAAS,CAACoB,OAAV,CAAkBnB,WAAlB,CAA8B,KAA9B,CAzBY;AA0BjBoB,EAAAA,IAAI,EAAErB,SAAS,CAACqB,IAAV,CAAepB,WAAf,CAA2B,MAA3B;AA1BW,CAAnB;;AA6BA,IAAMqB,aAAa,GAAG,SAAhBA,aAAgB;AAAA,SAAM,IAAN;AAAA,CAAtB;;AAEA,IAAMC,uBAAuB,GAAGC,QAAQ,CAACF,aAAD,CAAR,CAAwBrB,WAAxB,CAAoC,gBAApC,CAAhC;AAEAsB,uBAAuB,CAACE,SAAxB,GAAoC3B,UAApC;IAEa4B,gBAAgB,GAAGH,uBAAuB,CAACI,YAAxB;;;;"}
1
+ {"version":3,"file":"test.schema.js","sources":["../../../src/tests/test.schema.js"],"sourcesContent":["import { PropTypes, describe } from 'react-desc';\n\nconst TestSchema = {\n string: PropTypes.string.description('String'),\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n any: PropTypes.any.description('Any'),\n union: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Union'),\n union2: PropTypes.oneOf(['A', 'B']).description('Union 2'),\n union3: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.shape({ string: PropTypes.string }),\n ]).description('Union 3'),\n array: PropTypes.arrayOf(PropTypes.string).description('Array'),\n object: PropTypes.object.description('Object'),\n shape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n anotherShape: PropTypes.shape({\n string: PropTypes.string.description('String').isRequired,\n number: PropTypes.number.description('Number'),\n boolean: PropTypes.bool.description('Boolean'),\n }).description('Another shape'),\n }).description('Shape'),\n function: PropTypes.func.description('Function'),\n jsx: PropTypes.element.description('JSX'),\n node: PropTypes.node.description('Node'),\n};\n\nconst TestComponent = () => null;\n\nconst TestComponentWithSchema = describe(TestComponent).description('Test Component');\n\nTestComponentWithSchema.propTypes = TestSchema;\n\nexport const TypescriptSchema = TestComponentWithSchema.toTypescript();\n"],"names":["TestSchema","string","PropTypes","description","number","boolean","bool","any","union","oneOfType","union2","oneOf","union3","arrayOf","shape","array","object","isRequired","anotherShape","function","func","jsx","element","node","TestComponent","TestComponentWithSchema","describe","propTypes","TypescriptSchema","toTypescript"],"mappings":";;AAEA,IAAMA,UAAU,GAAG;EACjBC,MAAM,EAAEC,SAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,CADS;EAEjBC,MAAM,EAAEF,SAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFS;EAGjBE,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B,CAHQ;EAIjBI,GAAG,EAAEL,SAAS,CAACK,GAAV,CAAcJ,WAAd,CAA0B,KAA1B,CAJY;EAKjBK,KAAK,EAAEN,SAAS,CAACO,SAAV,CAAoB,CAACP,SAAS,CAACD,MAAX,EAAmBC,SAAS,CAACE,MAA7B,CAApB,EAA0DD,WAA1D,CAAsE,OAAtE,CALU;EAMjBO,MAAM,EAAER,SAAS,CAACS,KAAV,CAAgB,CAAC,GAAD,EAAM,GAAN,CAAhB,EAA4BR,WAA5B,CAAwC,SAAxC,CANS;EAOjBS,MAAM,EAAEV,SAAS,CAACO,SAAV,CAAoB,CAC1BP,SAAS,CAACD,MADgB,EAE1BC,SAAS,CAACW,OAAV,CAAkBX,SAAS,CAACD,MAA5B,CAF0B,EAG1BC,SAAS,CAACY,KAAV,CAAgB;IAAEb,MAAM,EAAEC,SAAS,CAACD;GAApC,CAH0B,CAApB,EAILE,WAJK,CAIO,SAJP,CAPS;EAYjBY,KAAK,EAAEb,SAAS,CAACW,OAAV,CAAkBX,SAAS,CAACD,MAA5B,EAAoCE,WAApC,CAAgD,OAAhD,CAZU;EAajBa,MAAM,EAAEd,SAAS,CAACc,MAAV,CAAiBb,WAAjB,CAA6B,QAA7B,CAbS;EAcjBW,KAAK,EAAEZ,SAAS,CAACY,KAAV,CAAgB;IACrBb,MAAM,EAAEC,SAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,EAAuCc,UAD1B;IAErBb,MAAM,EAAEF,SAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFa;IAGrBE,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B,CAHY;IAIrBe,YAAY,EAAEhB,SAAS,CAACY,KAAV,CAAgB;MAC5Bb,MAAM,EAAEC,SAAS,CAACD,MAAV,CAAiBE,WAAjB,CAA6B,QAA7B,EAAuCc,UADnB;MAE5Bb,MAAM,EAAEF,SAAS,CAACE,MAAV,CAAiBD,WAAjB,CAA6B,QAA7B,CAFoB;MAG5BE,OAAO,EAAEH,SAAS,CAACI,IAAV,CAAeH,WAAf,CAA2B,SAA3B;KAHG,EAIXA,WAJW,CAIC,eAJD;GAJT,EASJA,WATI,CASQ,OATR,CAdU;EAwBjBgB,QAAQ,EAAEjB,SAAS,CAACkB,IAAV,CAAejB,WAAf,CAA2B,UAA3B,CAxBO;EAyBjBkB,GAAG,EAAEnB,SAAS,CAACoB,OAAV,CAAkBnB,WAAlB,CAA8B,KAA9B,CAzBY;EA0BjBoB,IAAI,EAAErB,SAAS,CAACqB,IAAV,CAAepB,WAAf,CAA2B,MAA3B;AA1BW,CAAnB;;AA6BA,IAAMqB,aAAa,GAAG,SAAhBA,aAAgB;EAAA,OAAM,IAAN;AAAA,CAAtB;;AAEA,IAAMC,uBAAuB,GAAGC,QAAQ,CAACF,aAAD,CAAR,CAAwBrB,WAAxB,CAAoC,gBAApC,CAAhC;AAEAsB,uBAAuB,CAACE,SAAxB,GAAoC3B,UAApC;IAEa4B,gBAAgB,GAAGH,uBAAuB,CAACI,YAAxB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorTemplates.js","sources":["../../../src/validation/errorTemplates.ts"],"sourcesContent":["/* eslint-disable max-params */\nexport const throwTypeError = (\n componentName: string,\n validPropKey: string,\n invalidProp: unknown,\n validFormat: string,\n): void => {\n throw new Error(\n `${componentName}:: You are trying to pass a not valid \"${validPropKey}\" property, \n please provide a valid type.\n\n Received: ${invalidProp} (${typeof invalidProp})\n Expected: (${validFormat.replace('\\n', ' or ')})\n `,\n );\n};\n\nexport const throwRequiredError = (componentName: string, validPropKey: string): void => {\n throw new Error(\n `${componentName}:: Please provide a/an \"${validPropKey}\" property to use this component. \n This property is required.\n `,\n );\n};\n"],"names":["throwTypeError","componentName","validPropKey","invalidProp","validFormat","Error","replace","throwRequiredError"],"mappings":";;AAAA;IACaA,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,aAD4B,EAE5BC,YAF4B,EAG5BC,WAH4B,EAI5BC,WAJ4B,EAKnB;AACT,QAAM,IAAIC,KAAJ,WACDJ,aADC,qDACsDC,YADtD,4EAIMC,WAJN,uBAI6BA,WAJ7B,8BAKOC,WAAW,CAACE,OAAZ,CAAoB,IAApB,EAA0B,MAA1B,CALP,WAAN;AAQD;IAEYC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACN,aAAD,EAAwBC,YAAxB,EAAuD;AACvF,QAAM,IAAIG,KAAJ,WACDJ,aADC,sCACuCC,YADvC,8EAAN;AAKD;;;;"}
1
+ {"version":3,"file":"errorTemplates.js","sources":["../../../src/validation/errorTemplates.ts"],"sourcesContent":["/* eslint-disable max-params */\nexport const throwTypeError = (\n componentName: string,\n validPropKey: string,\n invalidProp: unknown,\n validFormat: string,\n): void => {\n throw new Error(\n `${componentName}:: You are trying to pass a not valid \"${validPropKey}\" property, \n please provide a valid type.\n\n Received: ${invalidProp} (${typeof invalidProp})\n Expected: (${validFormat.replace('\\n', ' or ')})\n `,\n );\n};\n\nexport const throwRequiredError = (componentName: string, validPropKey: string): void => {\n throw new Error(\n `${componentName}:: Please provide a/an \"${validPropKey}\" property to use this component. \n This property is required.\n `,\n );\n};\n"],"names":["throwTypeError","componentName","validPropKey","invalidProp","validFormat","Error","replace","throwRequiredError"],"mappings":";;AAAA;IACaA,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,aAD4B,EAE5BC,YAF4B,EAG5BC,WAH4B,EAI5BC,WAJ4B,EAKnB;EACT,MAAM,IAAIC,KAAJ,WACDJ,aADC,qDACsDC,YADtD,4EAIMC,WAJN,uBAI6BA,WAJ7B,8BAKOC,WAAW,CAACE,OAAZ,CAAoB,IAApB,EAA0B,MAA1B,CALP,WAAN;AAQD;IAEYC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACN,aAAD,EAAwBC,YAAxB,EAAuD;EACvF,MAAM,IAAIG,KAAJ,WACDJ,aADC,sCACuCC,YADvC,8EAAN;AAKD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescriptGuards.js","sources":["../../../src/validation/typescriptGuards.ts"],"sourcesContent":["type guardFn = (format: string) => boolean;\n\nexport const isPrimitiveType: guardFn = (format) => ['string', 'number', 'boolean'].includes(format);\nexport const isUndefined: guardFn = (format) => format === '\"undefined\"';\nexport const isUnion: guardFn = (format) => {\n let depth = 0;\n let satisfies = false;\n format.split('').forEach((char) => {\n if (['{', '('].includes(char)) depth += 1;\n else if (['}', ')'].includes(char)) depth -= 1;\n else if (char === '|' && depth === 0) satisfies = true;\n });\n return satisfies;\n};\n\nexport const isString: guardFn = (format) => !isUnion(format) && format[0] === '\"' && format.slice(-1) === '\"';\n\nexport const isArray: guardFn = (format) => !isUnion(format) && format.slice(-2) === '[]';\n\nexport const isObject: guardFn = (format) =>\n format === 'object' || (!isUnion(format) && format[0] === '{' && format.slice(-1) === '}');\n\nexport const isFunction: guardFn = (format) => !isUnion(format) && format === '((...args: any[]) => any)';\n\nexport const isJSXorNode: guardFn = (format) => !isUnion(format) && ['React.ReactNode', 'JSX.Element'].includes(format);\n\nexport const isSomethingWithParenthesis: guardFn = (format) =>\n !isUnion(format) && format[0] === '(' && format.slice(-1) === ')';\n"],"names":["isPrimitiveType","format","includes","isUndefined","isUnion","depth","satisfies","split","forEach","char","isString","slice","isArray","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis"],"mappings":"IAEaA,eAAwB,GAAG,SAA3BA,eAA2B,CAACC,MAAD;AAAA,SAAY,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgCC,QAAhC,CAAyCD,MAAzC,CAAZ;AAAA;IAC3BE,WAAoB,GAAG,SAAvBA,WAAuB,CAACF,MAAD;AAAA,SAAYA,MAAM,KAAK,aAAvB;AAAA;IACvBG,OAAgB,GAAG,SAAnBA,OAAmB,CAACH,MAAD,EAAY;AAC1C,MAAII,KAAK,GAAG,CAAZ;AACA,MAAIC,SAAS,GAAG,KAAhB;AACAL,EAAAA,MAAM,CAACM,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;AACjC,QAAI,CAAC,GAAD,EAAM,GAAN,EAAWP,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACK,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWH,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACA,IAAII,IAAI,KAAK,GAAT,IAAgBJ,KAAK,KAAK,CAA9B,EAAiCC,SAAS,GAAG,IAAZ;AACvC,GAJD;AAKA,SAAOA,SAAP;AACD;IAEYI,QAAiB,GAAG,SAApBA,QAAoB,CAACT,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GAA1E;AAAA;IAEpBC,OAAgB,GAAG,SAAnBA,OAAmB,CAACX,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,IAArD;AAAA;IAEnBE,QAAiB,GAAG,SAApBA,QAAoB,CAACZ,MAAD;AAAA,SAC/BA,MAAM,KAAK,QAAX,IAAwB,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADvD;AAAA;IAGpBG,UAAmB,GAAG,SAAtBA,UAAsB,CAACb,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,KAAK,2BAA3C;AAAA;IAEtBc,WAAoB,GAAG,SAAvBA,WAAuB,CAACd,MAAD;AAAA,SAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoB,CAAC,iBAAD,EAAoB,aAApB,EAAmCC,QAAnC,CAA4CD,MAA5C,CAAhC;AAAA;IAEvBe,0BAAmC,GAAG,SAAtCA,0BAAsC,CAACf,MAAD;AAAA,SACjD,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADb;AAAA;;;;"}
1
+ {"version":3,"file":"typescriptGuards.js","sources":["../../../src/validation/typescriptGuards.ts"],"sourcesContent":["type guardFn = (format: string) => boolean;\n\nexport const isPrimitiveType: guardFn = (format) => ['string', 'number', 'boolean'].includes(format);\nexport const isUndefined: guardFn = (format) => format === '\"undefined\"';\nexport const isUnion: guardFn = (format) => {\n let depth = 0;\n let satisfies = false;\n format.split('').forEach((char) => {\n if (['{', '('].includes(char)) depth += 1;\n else if (['}', ')'].includes(char)) depth -= 1;\n else if (char === '|' && depth === 0) satisfies = true;\n });\n return satisfies;\n};\n\nexport const isString: guardFn = (format) => !isUnion(format) && format[0] === '\"' && format.slice(-1) === '\"';\n\nexport const isArray: guardFn = (format) => !isUnion(format) && format.slice(-2) === '[]';\n\nexport const isObject: guardFn = (format) =>\n format === 'object' || (!isUnion(format) && format[0] === '{' && format.slice(-1) === '}');\n\nexport const isFunction: guardFn = (format) => !isUnion(format) && format === '((...args: any[]) => any)';\n\nexport const isJSXorNode: guardFn = (format) => !isUnion(format) && ['React.ReactNode', 'JSX.Element'].includes(format);\n\nexport const isSomethingWithParenthesis: guardFn = (format) =>\n !isUnion(format) && format[0] === '(' && format.slice(-1) === ')';\n"],"names":["isPrimitiveType","format","includes","isUndefined","isUnion","depth","satisfies","split","forEach","char","isString","slice","isArray","isObject","isFunction","isJSXorNode","isSomethingWithParenthesis"],"mappings":"IAEaA,eAAwB,GAAG,SAA3BA,eAA2B,CAACC,MAAD;EAAA,OAAY,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,EAAgCC,QAAhC,CAAyCD,MAAzC,CAAZ;AAAA;IAC3BE,WAAoB,GAAG,SAAvBA,WAAuB,CAACF,MAAD;EAAA,OAAYA,MAAM,KAAK,aAAvB;AAAA;IACvBG,OAAgB,GAAG,SAAnBA,OAAmB,CAACH,MAAD,EAAY;EAC1C,IAAII,KAAK,GAAG,CAAZ;EACA,IAAIC,SAAS,GAAG,KAAhB;EACAL,MAAM,CAACM,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;IACjC,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWP,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACK,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWH,QAAX,CAAoBO,IAApB,CAAJ,EAA+BJ,KAAK,IAAI,CAAT,CAA/B,KACA,IAAII,IAAI,KAAK,GAAT,IAAgBJ,KAAK,KAAK,CAA9B,EAAiCC,SAAS,GAAG,IAAZ;GAHxC;EAKA,OAAOA,SAAP;AACD;IAEYI,QAAiB,GAAG,SAApBA,QAAoB,CAACT,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GAA1E;AAAA;IAEpBC,OAAgB,GAAG,SAAnBA,OAAmB,CAACX,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,IAArD;AAAA;IAEnBE,QAAiB,GAAG,SAApBA,QAAoB,CAACZ,MAAD;EAAA,OAC/BA,MAAM,KAAK,QAAX,IAAwB,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADvD;AAAA;IAGpBG,UAAmB,GAAG,SAAtBA,UAAsB,CAACb,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,KAAK,2BAA3C;AAAA;IAEtBc,WAAoB,GAAG,SAAvBA,WAAuB,CAACd,MAAD;EAAA,OAAY,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoB,CAAC,iBAAD,EAAoB,aAApB,EAAmCC,QAAnC,CAA4CD,MAA5C,CAAhC;AAAA;IAEvBe,0BAAmC,GAAG,SAAtCA,0BAAsC,CAACf,MAAD;EAAA,OACjD,CAACG,OAAO,CAACH,MAAD,CAAR,IAAoBA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlC,IAAyCA,MAAM,CAACU,KAAP,CAAa,CAAC,CAAd,MAAqB,GADb;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescriptParsers.js","sources":["../../../src/validation/typescriptParsers.ts"],"sourcesContent":["/* eslint-disable complexity */\nexport const typescriptObjectParser = (format: string): [string, string][] => {\n const keyValuePairs: [string, string][] = [];\n\n // State of the algorithm\n let lastKey = '';\n let lastValue = '';\n let shouldAppendToKey = true;\n\n const pushPair = () => {\n if (lastKey) keyValuePairs.push([lastKey, lastValue]);\n lastKey = '';\n lastValue = '';\n shouldAppendToKey = true;\n };\n\n // Complex -- but working -- logic\n let depth = 0;\n format.split('').forEach((char) => {\n if (char === '{') {\n depth += 1;\n if (depth > 1) lastValue += char;\n } else if (char === '}') {\n if (depth > 1) lastValue += char;\n depth -= 1;\n if (depth === 1) pushPair();\n } else if (char === ':') {\n shouldAppendToKey = false;\n if (depth > 1) lastValue += char;\n } else if (char === ',') {\n if (depth === 1) pushPair();\n else lastValue += char;\n } else if (char === ' ') {\n // Do nothing\n } else if (shouldAppendToKey) lastKey += char;\n else lastValue += char;\n });\n pushPair();\n\n return keyValuePairs;\n};\n"],"names":["typescriptObjectParser","format","keyValuePairs","lastKey","lastValue","shouldAppendToKey","pushPair","push","depth","split","forEach","char"],"mappings":"AAAA;IACaA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,MAAD,EAAwC;AAC5E,MAAMC,aAAiC,GAAG,EAA1C,CAD4E;;AAI5E,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,SAAS,GAAG,EAAhB;AACA,MAAIC,iBAAiB,GAAG,IAAxB;;AAEA,MAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB,QAAIH,OAAJ,EAAaD,aAAa,CAACK,IAAd,CAAmB,CAACJ,OAAD,EAAUC,SAAV,CAAnB;AACbD,IAAAA,OAAO,GAAG,EAAV;AACAC,IAAAA,SAAS,GAAG,EAAZ;AACAC,IAAAA,iBAAiB,GAAG,IAApB;AACD,GALD,CAR4E;;;AAgB5E,MAAIG,KAAK,GAAG,CAAZ;AACAP,EAAAA,MAAM,CAACQ,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;AACjC,QAAIA,IAAI,KAAK,GAAb,EAAkB;AAChBH,MAAAA,KAAK,IAAI,CAAT;AACA,UAAIA,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;AAChB,KAHD,MAGO,IAAIA,IAAI,KAAK,GAAb,EAAkB;AACvB,UAAIH,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;AACfH,MAAAA,KAAK,IAAI,CAAT;AACA,UAAIA,KAAK,KAAK,CAAd,EAAiBF,QAAQ;AAC1B,KAJM,MAIA,IAAIK,IAAI,KAAK,GAAb,EAAkB;AACvBN,MAAAA,iBAAiB,GAAG,KAApB;AACA,UAAIG,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;AAChB,KAHM,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB;AACvB,UAAIH,KAAK,KAAK,CAAd,EAAiBF,QAAQ,GAAzB,KACKF,SAAS,IAAIO,IAAb;AACN,KAHM,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB,CAAlB,MAEA,IAAIN,iBAAJ,EAAuBF,OAAO,IAAIQ,IAAX,CAAvB,KACFP,SAAS,IAAIO,IAAb;AACN,GAlBD;AAmBAL,EAAAA,QAAQ;AAER,SAAOJ,aAAP;AACD;;;;"}
1
+ {"version":3,"file":"typescriptParsers.js","sources":["../../../src/validation/typescriptParsers.ts"],"sourcesContent":["/* eslint-disable complexity */\nexport const typescriptObjectParser = (format: string): [string, string][] => {\n const keyValuePairs: [string, string][] = [];\n\n // State of the algorithm\n let lastKey = '';\n let lastValue = '';\n let shouldAppendToKey = true;\n\n const pushPair = () => {\n if (lastKey) keyValuePairs.push([lastKey, lastValue]);\n lastKey = '';\n lastValue = '';\n shouldAppendToKey = true;\n };\n\n // Complex -- but working -- logic\n let depth = 0;\n format.split('').forEach((char) => {\n if (char === '{') {\n depth += 1;\n if (depth > 1) lastValue += char;\n } else if (char === '}') {\n if (depth > 1) lastValue += char;\n depth -= 1;\n if (depth === 1) pushPair();\n } else if (char === ':') {\n shouldAppendToKey = false;\n if (depth > 1) lastValue += char;\n } else if (char === ',') {\n if (depth === 1) pushPair();\n else lastValue += char;\n } else if (char === ' ') {\n // Do nothing\n } else if (shouldAppendToKey) lastKey += char;\n else lastValue += char;\n });\n pushPair();\n\n return keyValuePairs;\n};\n"],"names":["typescriptObjectParser","format","keyValuePairs","lastKey","lastValue","shouldAppendToKey","pushPair","push","depth","split","forEach","char"],"mappings":"AAAA;IACaA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,MAAD,EAAwC;EAC5E,IAAMC,aAAiC,GAAG,EAA1C,CAD4E;;EAI5E,IAAIC,OAAO,GAAG,EAAd;EACA,IAAIC,SAAS,GAAG,EAAhB;EACA,IAAIC,iBAAiB,GAAG,IAAxB;;EAEA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;IACrB,IAAIH,OAAJ,EAAaD,aAAa,CAACK,IAAd,CAAmB,CAACJ,OAAD,EAAUC,SAAV,CAAnB;IACbD,OAAO,GAAG,EAAV;IACAC,SAAS,GAAG,EAAZ;IACAC,iBAAiB,GAAG,IAApB;GAJF,CAR4E;;;EAgB5E,IAAIG,KAAK,GAAG,CAAZ;EACAP,MAAM,CAACQ,KAAP,CAAa,EAAb,EAAiBC,OAAjB,CAAyB,UAACC,IAAD,EAAU;IACjC,IAAIA,IAAI,KAAK,GAAb,EAAkB;MAChBH,KAAK,IAAI,CAAT;MACA,IAAIA,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;KAFjB,MAGO,IAAIA,IAAI,KAAK,GAAb,EAAkB;MACvB,IAAIH,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;MACfH,KAAK,IAAI,CAAT;MACA,IAAIA,KAAK,KAAK,CAAd,EAAiBF,QAAQ;KAHpB,MAIA,IAAIK,IAAI,KAAK,GAAb,EAAkB;MACvBN,iBAAiB,GAAG,KAApB;MACA,IAAIG,KAAK,GAAG,CAAZ,EAAeJ,SAAS,IAAIO,IAAb;KAFV,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB;MACvB,IAAIH,KAAK,KAAK,CAAd,EAAiBF,QAAQ,GAAzB,KACKF,SAAS,IAAIO,IAAb;KAFA,MAGA,IAAIA,IAAI,KAAK,GAAb,EAAkB,CAAlB,MAEA,IAAIN,iBAAJ,EAAuBF,OAAO,IAAIQ,IAAX,CAAvB,KACFP,SAAS,IAAIO,IAAb;GAjBP;EAmBAL,QAAQ;EAER,OAAOJ,aAAP;AACD;;;;"}
@@ -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 = <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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"}
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":";;;;;;;AAiCA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAMA,iBAA8B,GAAG,SAAjCA,iBAAiC,CAACC,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAoC;EACzE,IAAID,KAAK,KAAKE,SAAd,EAAyB;IACvBC,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;AAEH,CAJD;;AAKA,IAAMG,qBAAkC,GAAG,SAArCA,qBAAqC,CAACN,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAoC;EAC7E,IAAI,QAAOD,KAAP,MAAiBC,MAArB,EAA6B;IAC3BE,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;AAEH,CAJD;;AAMA,IAAMI,cAA2B,GAAG,SAA9BA,cAA8B,CAACP,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAoC;EACtE,IAAID,KAAK,KAAKC,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAd,EAAmC;IACjCH,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;AAEH,CAJD;;AAMA,IAAMM,aAA0B,GAAG,SAA7BA,aAA6B,CAACT,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,EAA0E;;EAE3G,IAAI,CAACC,KAAK,CAACC,OAAN,CAAcX,KAAd,CAAL,EAA2B;IACzBG,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;GAHyG;;;EAO1GD,KAAD,CAAqBY,OAArB,CAA6B,UAACC,GAAD,EAAMC,KAAN,EAAgB;IAC3CC,uBAAuB,CACrBjB,UADqB,YAElBC,GAFkB,cAEXe,KAFW,QAGrBD,GAHqB,EAIrBZ,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAJqB,EAKrBE,eALqB,EAMrBC,mBANqB,CAAvB;GADF;AAUD,CAjBD;;AAmBA,IAAMO,cAA2B,GAAG,SAA9BA,cAA8B,CAAClB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,EAA0E;;EAE5G,IAAI,QAAOT,KAAP,MAAiB,QAAjB,IAA6BU,KAAK,CAACC,OAAN,CAAcX,KAAd,CAAjC,EAAuD;IACrDG,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;;EAGF,IAAIA,MAAM,KAAK,QAAf,EAAyB;EAEzB,IAAMgB,aAAa,GAAGC,sBAAsB,CAACjB,MAAD,CAA5C,CAR4G;;;;EAa5GgB,aAAa,CAACL,OAAd,CAAsB,gBAA8B;IAAA;QAA5BO,SAA4B;QAAjBC,WAAiB;;IAClD,IAAMC,OAAO,GAAGF,SAAS,CAACb,KAAV,CAAgB,CAAC,CAAjB,MAAwB,GAAxB,GAA8Ba,SAAS,CAACb,KAAV,CAAgB,CAAhB,EAAmB,CAAC,CAApB,CAA9B,GAAuDa,SAAvE;;IAEA,IAAIE,OAAO,KAAKF,SAAZ,IAAyB,EAAEE,OAAO,IAAKrB,KAAd,CAA7B,EAA+E;MAC7EsB,kBAAkB,CAACxB,UAAD,EAAaC,GAAb,CAAlB;;;IAGF,IAAIsB,OAAO,IAAKrB,KAAhB,EAAmD;MACjDe,uBAAuB,CACrBjB,UADqB,YAElBC,GAFkB,cAEXsB,OAFW,QAGrBrB,KAAK,CAACqB,OAAD,CAHgB,EAIrBD,WAJqB,EAKrBZ,eALqB,EAMrBC,mBANqB,CAAvB;;GARJ;AAkBD,CA/BD;;AAiCA,IAAMc,aAA0B,GAAG,SAA7BA,aAA6B,CAACzB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,EAA0E;EAC3G,IAAMe,aAAa,GAAGvB,MAAM,CAACwB,KAAP,CAAa,KAAb,CAAtB;EAEA,IAAMC,MAAM,GAAG,EAAf;EAEAF,aAAa,CAACZ,OAAd,CAAsB,UAACe,WAAD,EAAiB;IACrC,IAAI;MACFZ,uBAAuB,CAACjB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyB2B,WAAzB,EAAsCnB,eAAtC,EAAuDC,mBAAvD,CAAvB;KADF,CAEE,OAAOmB,CAAP,EAAU;MACVF,MAAM,CAACG,IAAP,CAAYD,CAAZ;;GAJJ;;EAQA,IAAIF,MAAM,CAACI,MAAP,KAAkBN,aAAa,CAACM,MAApC,EAA4C;IAC1C3B,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;AAEH,CAhBD;;AAkBA,IAAM8B,gBAA6B,GAAG,SAAhCA,gBAAgC,CAACjC,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAoC;;EAExE,IAAI,OAAOD,KAAP,KAAiB,UAArB,EAAiC;IAC/BG,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;AAEH,CALD;;AAOA,IAAM+B,iBAA8B,GAAG,SAAjCA,iBAAiC,CAAClC,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAoC;EACzE,IAAIA,MAAM,KAAK,aAAX,KAA6B,QAAOD,KAAP,MAAiB,QAAjB,IAA6B,EAAE,cAAcA,KAAhB,CAA1D,CAAJ,EAAuF;IACrFG,cAAc,CAACL,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;;AAEH,CAJD;AAOA;AACA;;;AAEA,IAAMc,uBAAoC,GAAG,SAAvCA,uBAAuC,CAACjB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,EAA0E;EACrHA,mBAAmB,CAACT,KAAD,CAAnB,GAAuCC,MAAvC;;EAEA,IAAKD,KAAD,IAAqBQ,eAAzB,EAA0C;;IAExC;;;EAGF,IAAIyB,WAAW,CAAChC,MAAD,CAAf,EAAyB;IACvBJ,iBAAiB,CAACC,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAjB;GADF,MAEO,IAAIiC,eAAe,CAACjC,MAAD,CAAnB,EAA6B;IAClCG,qBAAqB,CAACN,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAArB;GADK,MAEA,IAAIkC,OAAO,CAAClC,MAAD,CAAX,EAAqB;IAC1BsB,aAAa,CAACzB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,CAAb;GADK,MAEA,IAAI2B,QAAQ,CAACnC,MAAD,CAAZ,EAAsB;IAC3BI,cAAc,CAACP,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAd;GADK,MAEA,IAAIU,OAAO,CAACV,MAAD,CAAX,EAAqB;IAC1BM,aAAa,CAACT,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,CAAb;GADK,MAEA,IAAI4B,QAAQ,CAACpC,MAAD,CAAZ,EAAsB;IAC3Be,cAAc,CAAClB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,EAAiCO,eAAjC,EAAkDC,mBAAlD,CAAd;GADK,MAEA,IAAI6B,UAAU,CAACrC,MAAD,CAAd,EAAwB;IAC7B8B,gBAAgB,CAACjC,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAhB;GADK,MAEA,IAAIsC,WAAW,CAACtC,MAAD,CAAf,EAAyB;IAC9B+B,iBAAiB,CAAClC,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAzB,CAAjB;GADK,MAEA,IAAIuC,0BAA0B,CAACvC,MAAD,CAA9B,EAAwC;IAC7Cc,uBAAuB,CAACjB,UAAD,EAAaC,GAAb,EAAkBC,KAAlB,EAAyBC,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAzB,EAA8CE,eAA9C,EAA+DC,mBAA/D,CAAvB;;AAEH,CA3BD;;IA6BagC,yCAAyC,GAAG,SAA5CA,yCAA4C,CACvDC,KADuD,EAEvDC,MAFuD,EAK9C;EAAA,IAFTnC,eAES,uEAFiC,EAEjC;EAAA,IADTC,mBACS,uEADqC,EACrC;EACT,IAAQmC,UAAR,GAAyCD,MAAzC,CAAQC,UAAR;MAA0B9C,UAA1B,GAAyC6C,MAAzC,CAAoBE,IAApB;EAEAD,UAAU,CAAChC,OAAX,CAAmB,UAACkC,QAAD,EAAc;IAC/B,IAAQD,IAAR,GAAmCC,QAAnC,CAAQD,IAAR;QAAc5C,MAAd,GAAmC6C,QAAnC,CAAc7C,MAAd;QAAsB8C,QAAtB,GAAmCD,QAAnC,CAAsBC,QAAtB;;IAEA,IAAIA,QAAQ,IAAI,EAAEF,IAAI,IAAIH,KAAV,CAAhB,EAAkC;MAChCpB,kBAAkB,CAACqB,MAAM,CAACE,IAAR,EAAcA,IAAd,CAAlB;;;IAGF,IAAIA,IAAI,IAAIH,KAAR,KAAkBA,KAAK,CAACG,IAAD,CAAL,KAAgB3C,SAAhB,IAA6B6C,QAA/C,CAAJ,EAA8D;MAC5DhC,uBAAuB,CAACjB,UAAD,EAAa+C,IAAb,EAAmBH,KAAK,CAACG,IAAD,CAAxB,EAAgC5C,MAAhC,EAAwCO,eAAxC,EAAyDC,mBAAzD,CAAvB;;GARJ;AAWD;IAEYuC,8BAA8B,GAAG,SAAjCA,8BAAiC,CAC5CN,KAD4C,EAE5CC,MAF4C,EAGnC;EACT,gBAA8CM,QAAQ,CAAC,EAAD,CAAtD;;MAAOzC,eAAP;MAAwB0C,kBAAxB;;EAEAC,OAAO,CAAC,YAAM;IACZ,IAAM1C,mBAAmB,GAAG,EAA5B;IAEAgC,yCAAyC,CAACC,KAAD,EAAQC,MAAR,EAAgBnC,eAAhB,EAAiCC,mBAAjC,CAAzC;IAEAyC,kBAAkB,CAACzC,mBAAD,CAAlB,CALY;GAAP,EAOJ,CAACiC,KAAD,CAPI,CAAP;AAQD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sources":["../../../src/validation/validator.ts"],"sourcesContent":["/* 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"],"names":["useValidatePropTypes","props","schema","properties","forEach","property","propertyName","name","currentProp","currentPropTypeOf","currentFormat","format","isValidReactElement","required","Object","prototype","hasOwnProperty","call","throwRequiredError","includes","throwTypeError"],"mappings":";;;IAIaA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAiCC,MAAjC,EAAkD;AACpFA,EAAAA,MAAM,CAACC,UAAP,CAAkBC,OAAlB,CAA0B,UAACC,QAAD,EAAc;AACtC,QAAMC,YAAY,GAAGD,QAAQ,CAACE,IAA9B;AACA,QAAMC,WAAW,GAAGP,KAAK,CAACK,YAAD,CAAzB;;AACA,QAAMG,iBAAiB,WAAUD,WAAV,CAAvB,CAHsC;;;AAKtC,QAAME,aAAa,GAAGL,QAAQ,CAACM,MAA/B,CALsC;;AAMtC,QAAIC,mBAAmB,GAAG,KAA1B,CANsC;;AAQtC,QAAIP,QAAQ,CAACQ,QAAT,IAAqB,CAACC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChB,KAArC,EAA4CI,QAAQ,CAACE,IAArD,CAA1B,EAAsF;AACpFW,MAAAA,kBAAkB,CAAChB,MAAM,CAACK,IAAR,EAAcF,QAAQ,CAACE,IAAvB,CAAlB;AACD;;AACD,QAAIE,iBAAiB,KAAK,WAAtB,IAAqCD,WAAW,KAAK,IAAzD,EAA+D;AAC7D,UACEC,iBAAiB,KAAK,QAAtB,IACAK,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCT,WAArC,EAAkD,UAAlD,CADA,KAECE,aAAa,CAACS,QAAd,CAAuB,MAAvB,KAAkCT,aAAa,CAACS,QAAd,CAAuB,SAAvB,CAFnC,CADF,EAIE;AACAP,QAAAA,mBAAmB,GAAG,IAAtB;AACD;;AAED,UAAI,CAACF,aAAa,CAACS,QAAd,CAAuBV,iBAAvB,CAAD,IAA8C,CAACC,aAAa,CAACS,QAAd,CAAuBX,WAAvB,CAA/C,IAAsF,CAACI,mBAA3F,EAAgH;AAC9GQ,QAAAA,cAAc,CAAClB,MAAM,CAACK,IAAR,EAAcD,YAAd,EAA4BE,WAA5B,EAAyCE,aAAzC,CAAd;AACD;AACF;AACF,GAxBD;AAyBD;;;;"}
1
+ {"version":3,"file":"validator.js","sources":["../../../src/validation/validator.ts"],"sourcesContent":["/* 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"],"names":["useValidatePropTypes","props","schema","properties","forEach","property","propertyName","name","currentProp","currentPropTypeOf","currentFormat","format","isValidReactElement","required","Object","prototype","hasOwnProperty","call","throwRequiredError","includes","throwTypeError"],"mappings":";;;IAIaA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAiCC,MAAjC,EAAkD;EACpFA,MAAM,CAACC,UAAP,CAAkBC,OAAlB,CAA0B,UAACC,QAAD,EAAc;IACtC,IAAMC,YAAY,GAAGD,QAAQ,CAACE,IAA9B;IACA,IAAMC,WAAW,GAAGP,KAAK,CAACK,YAAD,CAAzB;;IACA,IAAMG,iBAAiB,WAAUD,WAAV,CAAvB,CAHsC;;;IAKtC,IAAME,aAAa,GAAGL,QAAQ,CAACM,MAA/B,CALsC;;IAMtC,IAAIC,mBAAmB,GAAG,KAA1B,CANsC;;IAQtC,IAAIP,QAAQ,CAACQ,QAAT,IAAqB,CAACC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChB,KAArC,EAA4CI,QAAQ,CAACE,IAArD,CAA1B,EAAsF;MACpFW,kBAAkB,CAAChB,MAAM,CAACK,IAAR,EAAcF,QAAQ,CAACE,IAAvB,CAAlB;;;IAEF,IAAIE,iBAAiB,KAAK,WAAtB,IAAqCD,WAAW,KAAK,IAAzD,EAA+D;MAC7D,IACEC,iBAAiB,KAAK,QAAtB,IACAK,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCT,WAArC,EAAkD,UAAlD,CADA,KAECE,aAAa,CAACS,QAAd,CAAuB,MAAvB,KAAkCT,aAAa,CAACS,QAAd,CAAuB,SAAvB,CAFnC,CADF,EAIE;QACAP,mBAAmB,GAAG,IAAtB;;;MAGF,IAAI,CAACF,aAAa,CAACS,QAAd,CAAuBV,iBAAvB,CAAD,IAA8C,CAACC,aAAa,CAACS,QAAd,CAAuBX,WAAvB,CAA/C,IAAsF,CAACI,mBAA3F,EAAgH;QAC9GQ,cAAc,CAAClB,MAAM,CAACK,IAAR,EAAcD,YAAd,EAA4BE,WAA5B,EAAyCE,aAAzC,CAAd;;;GArBN;AAyBD;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-props-helpers",
3
- "version": "1.61.10",
3
+ "version": "1.61.13",
4
4
  "license": "MIT",
5
5
  "description": "Ellie Mae - Dim Sum - Validation Helpers",
6
6
  "module": "esm/index.js",