@elliemae/ds-props-helpers 3.35.0 → 3.36.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js +2 -4
  2. package/dist/cjs/defaultProps/useMemoMergePropsWithDefault.js.map +1 -1
  3. package/dist/cjs/propTypes/describeConversions.js.map +1 -1
  4. package/dist/cjs/propTypes/toTypescript.js +1 -2
  5. package/dist/cjs/propTypes/toTypescript.js.map +1 -1
  6. package/dist/cjs/propsPerDataTestId/getPropsPerDatatestIdPropTypes.js.map +1 -1
  7. package/dist/cjs/propsPerSlot/getPropsPerSlotPropTypes.js.map +2 -2
  8. package/dist/cjs/useDeprecateComponent/index.js.map +1 -1
  9. package/dist/cjs/validation/errorTemplates.js.map +1 -1
  10. package/dist/cjs/validation/typescriptGuards.js +7 -14
  11. package/dist/cjs/validation/typescriptGuards.js.map +1 -1
  12. package/dist/cjs/validation/typescriptParsers.js +10 -20
  13. package/dist/cjs/validation/typescriptParsers.js.map +1 -1
  14. package/dist/cjs/validation/typescriptValidator.js +1 -2
  15. package/dist/cjs/validation/typescriptValidator.js.map +1 -1
  16. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js +2 -4
  17. package/dist/esm/defaultProps/useMemoMergePropsWithDefault.js.map +1 -1
  18. package/dist/esm/propTypes/describeConversions.js.map +1 -1
  19. package/dist/esm/propTypes/toTypescript.js +1 -2
  20. package/dist/esm/propTypes/toTypescript.js.map +1 -1
  21. package/dist/esm/propsPerDataTestId/getPropsPerDatatestIdPropTypes.js.map +1 -1
  22. package/dist/esm/propsPerSlot/getPropsPerSlotPropTypes.js.map +2 -2
  23. package/dist/esm/useDeprecateComponent/index.js.map +1 -1
  24. package/dist/esm/validation/errorTemplates.js.map +1 -1
  25. package/dist/esm/validation/typescriptGuards.js +7 -14
  26. package/dist/esm/validation/typescriptGuards.js.map +1 -1
  27. package/dist/esm/validation/typescriptParsers.js +10 -20
  28. package/dist/esm/validation/typescriptParsers.js.map +1 -1
  29. package/dist/esm/validation/typescriptValidator.js +1 -2
  30. package/dist/esm/validation/typescriptValidator.js.map +1 -1
  31. package/dist/types/globalProps/getGlobalAttributes.d.ts +1 -1
  32. package/dist/types/globalProps/useGetGlobalAttributes.d.ts +1 -366
  33. package/package.json +4 -4
@@ -38,14 +38,12 @@ const useMemoCompare = (next, compare) => {
38
38
  const previousRef = (0, import_react.useRef)(next);
39
39
  const previous = previousRef.current;
40
40
  const isEqual = compare(previous, next);
41
- if (!isEqual)
42
- previousRef.current = next;
41
+ if (!isEqual) previousRef.current = next;
43
42
  return isEqual ? previous : next;
44
43
  };
45
44
  const useMemoMergePropsWithDefault = (props, defaultProps, compare = import_react2.default) => {
46
45
  const finalDefaultProps = (0, import_react.useMemo)(() => {
47
- if (typeof defaultProps === "function")
48
- return defaultProps();
46
+ if (typeof defaultProps === "function") return defaultProps();
49
47
  return defaultProps;
50
48
  }, [defaultProps]);
51
49
  const mergedProps = { ...finalDefaultProps, ...props };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/defaultProps/useMemoMergePropsWithDefault.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["import { useRef, useMemo } from 'react';\nimport deepequal from 'fast-deep-equal/react.js';\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(next);\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<string, any>>(\n props: Partial<T>,\n defaultProps: Partial<T> | (() => Partial<T>),\n compare = deepequal,\n): T => {\n // support for 'runtime' default props, if runtime default props are required, pass a function that returns the default props\n const finalDefaultProps = useMemo<Partial<T>>(() => {\n if (typeof defaultProps === 'function') return defaultProps();\n return defaultProps;\n }, [defaultProps]);\n\n const mergedProps = { ...finalDefaultProps, ...props } as T;\n\n return useMemoCompare<T>(mergedProps, compare);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAgC;AAChC,IAAAA,gBAAsB;AAItB,MAAM,iBAAiB,CAAU,MAAS,YAAgE;AAExG,QAAM,kBAAc,qBAAO,IAAI;AAC/B,QAAM,WAAW,YAAY;AAG7B,QAAM,UAAU,QAAQ,UAAU,IAAI;AAItC,MAAI,CAAC;AAAS,gBAAY,UAAU;AAEpC,SAAO,UAAU,WAAW;AAC9B;AAGO,MAAM,+BAA+B,CAC1C,OACA,cACA,UAAU,cAAAC,YACJ;AAEN,QAAM,wBAAoB,sBAAoB,MAAM;AAClD,QAAI,OAAO,iBAAiB;AAAY,aAAO,aAAa;AAC5D,WAAO;AAAA,EACT,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,cAAc,EAAE,GAAG,mBAAmB,GAAG,MAAM;AAErD,SAAO,eAAkB,aAAa,OAAO;AAC/C;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAgC;AAChC,IAAAA,gBAAsB;AAItB,MAAM,iBAAiB,CAAU,MAAS,YAAgE;AAExG,QAAM,kBAAc,qBAAO,IAAI;AAC/B,QAAM,WAAW,YAAY;AAG7B,QAAM,UAAU,QAAQ,UAAU,IAAI;AAItC,MAAI,CAAC,QAAS,aAAY,UAAU;AAEpC,SAAO,UAAU,WAAW;AAC9B;AAGO,MAAM,+BAA+B,CAC1C,OACA,cACA,UAAU,cAAAC,YACJ;AAEN,QAAM,wBAAoB,sBAAoB,MAAM;AAClD,QAAI,OAAO,iBAAiB,WAAY,QAAO,aAAa;AAC5D,WAAO;AAAA,EACT,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,cAAc,EAAE,GAAG,mBAAmB,GAAG,MAAM;AAErD,SAAO,eAAkB,aAAa,OAAO;AAC/C;",
6
6
  "names": ["import_react", "deepequal"]
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/propTypes/describeConversions.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-params */\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { ValidationMap, Requireable } from 'prop-types';\nimport PropTypes from 'prop-types';\nimport { tupleValidator } from './customPropTypes.js';\nimport {\n hasArguments,\n isArrayOf,\n isExact,\n isInstanceOf,\n isObjectOf,\n isOneOf,\n isOneOfType,\n isShape,\n} from './describeGuards.js';\nimport type { ReactDescT, ReactDescObjT, InstanceOfT, OneOfT, ObjectOfT, ExactT } from './types.js';\n\nconst enrichPropType = (propType: Requireable<unknown>, reactDesc: ReactDescObjT): Requireable<unknown> => {\n const func = (props: Record<string, unknown>, propName: string, componentName: string, ...rest: [string, string]) => {\n if (reactDesc && reactDesc.deprecated && propName in props && !reactDesc.warned) {\n const { version = '', message = '' } = reactDesc.deprecated;\n const error = `Warning: \"${propName}\" property of \"${componentName}\" will be deprecated in version: ${version}.\\n${message}`;\n console.warn(error);\n reactDesc.warned = true;\n }\n return propType(props, propName, componentName, ...rest);\n };\n Object.defineProperty(\n func,\n 'isRequired',\n Object.getOwnPropertyDescriptor(propType, 'isRequired') as PropertyDescriptor,\n );\n return func as Requireable<unknown>;\n};\n\nconst convertArray = (array: ReactDescT[]): Requireable<unknown>[] => array.map((type) => convertPropType(type));\n\nconst convertShape = (_shape: Record<string, ReactDescT>): ValidationMap<Record<string, unknown>> => {\n const result: ValidationMap<Record<string, unknown>> = {};\n Object.keys(_shape).forEach((key) => {\n result[key] = convertPropType(_shape[key]);\n });\n return result;\n};\n\nexport const convertPropType = (propType: ReactDescT): Requireable<unknown> => {\n if (!propType || !propType.type) {\n throw new Error(`react-desc: unknown error -- proptype is not well defined`);\n }\n\n // DimSum PropTypes conversion\n if (propType.type === 'tuple') {\n return enrichPropType(\n PropTypes.arrayOf(tupleValidator(convertArray(propType.args as ReactDescT[]))),\n propType.reactDesc,\n );\n }\n\n // Default PropType conversion\n const realPropType = PropTypes[propType.type];\n\n if (!realPropType) {\n throw new Error(`react-desc: unknown type ${propType.type}`);\n }\n\n if (hasArguments(propType, realPropType)) {\n if (isOneOfType(propType, realPropType)) {\n return enrichPropType(realPropType(convertArray(propType.args as ReactDescT[])), propType.reactDesc);\n }\n if (isArrayOf(propType, realPropType)) {\n return enrichPropType(realPropType(convertPropType(propType.args as ReactDescT)), propType.reactDesc);\n }\n if (isShape(propType, realPropType)) {\n return enrichPropType(\n realPropType(convertShape(propType.args as Record<string, ReactDescT>)),\n propType.reactDesc,\n );\n }\n if (isInstanceOf(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<InstanceOfT>[0]), propType.reactDesc);\n }\n if (isOneOf(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<OneOfT>[0]), propType.reactDesc);\n }\n if (isObjectOf(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<ObjectOfT>[0]), propType.reactDesc);\n }\n if (isExact(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<ExactT>[0]), propType.reactDesc);\n }\n throw new Error(`react-desc: unknown error -- proptype with args is not matching`);\n }\n\n return enrichPropType(realPropType, propType.reactDesc);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADMvB,wBAAsB;AACtB,6BAA+B;AAC/B,4BASO;AAGP,MAAM,iBAAiB,CAAC,UAAgC,cAAmD;AACzG,QAAM,OAAO,CAAC,OAAgC,UAAkB,kBAA0B,SAA2B;AACnH,QAAI,aAAa,UAAU,cAAc,YAAY,SAAS,CAAC,UAAU,QAAQ;AAC/E,YAAM,EAAE,UAAU,IAAI,UAAU,GAAG,IAAI,UAAU;AACjD,YAAM,QAAQ,aAAa,0BAA0B,iDAAiD;AAAA,EAAa;AACnH,cAAQ,KAAK,KAAK;AAClB,gBAAU,SAAS;AAAA,IACrB;AACA,WAAO,SAAS,OAAO,UAAU,eAAe,GAAG,IAAI;AAAA,EACzD;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,yBAAyB,UAAU,YAAY;AAAA,EACxD;AACA,SAAO;AACT;AAEA,MAAM,eAAe,CAAC,UAAgD,MAAM,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC;AAE/G,MAAM,eAAe,CAAC,WAA+E;AACnG,QAAM,SAAiD,CAAC;AACxD,SAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,WAAO,GAAG,IAAI,gBAAgB,OAAO,GAAG,CAAC;AAAA,EAC3C,CAAC;AACD,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,aAA+C;AAC7E,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAGA,MAAI,SAAS,SAAS,SAAS;AAC7B,WAAO;AAAA,MACL,kBAAAA,QAAU,YAAQ,uCAAe,aAAa,SAAS,IAAoB,CAAC,CAAC;AAAA,MAC7E,SAAS;AAAA,IACX;AAAA,EACF;AAGA,QAAM,eAAe,kBAAAA,QAAU,SAAS,IAAI;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4BAA4B,SAAS,MAAM;AAAA,EAC7D;AAEA,UAAI,oCAAa,UAAU,YAAY,GAAG;AACxC,YAAI,mCAAY,UAAU,YAAY,GAAG;AACvC,aAAO,eAAe,aAAa,aAAa,SAAS,IAAoB,CAAC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,YAAI,iCAAU,UAAU,YAAY,GAAG;AACrC,aAAO,eAAe,aAAa,gBAAgB,SAAS,IAAkB,CAAC,GAAG,SAAS,SAAS;AAAA,IACtG;AACA,YAAI,+BAAQ,UAAU,YAAY,GAAG;AACnC,aAAO;AAAA,QACL,aAAa,aAAa,SAAS,IAAkC,CAAC;AAAA,QACtE,SAAS;AAAA,MACX;AAAA,IACF;AACA,YAAI,oCAAa,UAAU,YAAY,GAAG;AACxC,aAAO,eAAe,aAAa,SAAS,IAAkC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,YAAI,+BAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,YAAI,kCAAW,UAAU,YAAY,GAAG;AACtC,aAAO,eAAe,aAAa,SAAS,IAAgC,GAAG,SAAS,SAAS;AAAA,IACnG;AACA,YAAI,+BAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAEA,SAAO,eAAe,cAAc,SAAS,SAAS;AACxD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADMvB,wBAAsB;AACtB,6BAA+B;AAC/B,4BASO;AAGP,MAAM,iBAAiB,CAAC,UAAgC,cAAmD;AACzG,QAAM,OAAO,CAAC,OAAgC,UAAkB,kBAA0B,SAA2B;AACnH,QAAI,aAAa,UAAU,cAAc,YAAY,SAAS,CAAC,UAAU,QAAQ;AAC/E,YAAM,EAAE,UAAU,IAAI,UAAU,GAAG,IAAI,UAAU;AACjD,YAAM,QAAQ,aAAa,QAAQ,kBAAkB,aAAa,oCAAoC,OAAO;AAAA,EAAM,OAAO;AAC1H,cAAQ,KAAK,KAAK;AAClB,gBAAU,SAAS;AAAA,IACrB;AACA,WAAO,SAAS,OAAO,UAAU,eAAe,GAAG,IAAI;AAAA,EACzD;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,yBAAyB,UAAU,YAAY;AAAA,EACxD;AACA,SAAO;AACT;AAEA,MAAM,eAAe,CAAC,UAAgD,MAAM,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC;AAE/G,MAAM,eAAe,CAAC,WAA+E;AACnG,QAAM,SAAiD,CAAC;AACxD,SAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,WAAO,GAAG,IAAI,gBAAgB,OAAO,GAAG,CAAC;AAAA,EAC3C,CAAC;AACD,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,aAA+C;AAC7E,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAGA,MAAI,SAAS,SAAS,SAAS;AAC7B,WAAO;AAAA,MACL,kBAAAA,QAAU,YAAQ,uCAAe,aAAa,SAAS,IAAoB,CAAC,CAAC;AAAA,MAC7E,SAAS;AAAA,IACX;AAAA,EACF;AAGA,QAAM,eAAe,kBAAAA,QAAU,SAAS,IAAI;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4BAA4B,SAAS,IAAI,EAAE;AAAA,EAC7D;AAEA,UAAI,oCAAa,UAAU,YAAY,GAAG;AACxC,YAAI,mCAAY,UAAU,YAAY,GAAG;AACvC,aAAO,eAAe,aAAa,aAAa,SAAS,IAAoB,CAAC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,YAAI,iCAAU,UAAU,YAAY,GAAG;AACrC,aAAO,eAAe,aAAa,gBAAgB,SAAS,IAAkB,CAAC,GAAG,SAAS,SAAS;AAAA,IACtG;AACA,YAAI,+BAAQ,UAAU,YAAY,GAAG;AACnC,aAAO;AAAA,QACL,aAAa,aAAa,SAAS,IAAkC,CAAC;AAAA,QACtE,SAAS;AAAA,MACX;AAAA,IACF;AACA,YAAI,oCAAa,UAAU,YAAY,GAAG;AACxC,aAAO,eAAe,aAAa,SAAS,IAAkC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,YAAI,+BAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,YAAI,kCAAW,UAAU,YAAY,GAAG;AACtC,aAAO,eAAe,aAAa,SAAS,IAAgC,GAAG,SAAS,SAAS;AAAA,IACnG;AACA,YAAI,+BAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAEA,SAAO,eAAe,cAAc,SAAS,SAAS;AACxD;",
6
6
  "names": ["PropTypes"]
7
7
  }
@@ -132,8 +132,7 @@ function descToTypescript(component, reactDesc) {
132
132
  if (propType.type === "shape") {
133
133
  propType.reactDesc.group = {};
134
134
  Object.keys(propType.args).forEach((prop) => {
135
- if (!propType.reactDesc.group)
136
- return;
135
+ if (!propType.reactDesc.group) return;
137
136
  propType.reactDesc.group[prop] = propTypeAsTypescript(
138
137
  propType.args[prop],
139
138
  prop
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/propTypes/toTypescript.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n/* eslint-disable complexity */\n/* eslint-disable react/forbid-foreign-prop-types */\nimport type React from 'react';\nimport type { ComponentDocumentation, Hook, ReactDescT, TypescriptDocumentation } from './types.js';\nimport { isReactDesc } from './describeGuards.js';\n\nconst arrayFormat = (array: ReactDescT[]) => array.map((propType) => propTypeFormat(propType));\n\nconst shapeFormat = (shape: Record<string, ReactDescT>) => {\n const props = Object.keys(shape).map((key) => {\n const value = shape[key];\n let valueFormat;\n if (\n value.type &&\n (value.type === 'arrayOf' || value.type === 'oneOfType' || value.type === 'oneOf') &&\n Array.isArray(value.args)\n ) {\n valueFormat = `${propTypeFormat(value)}`;\n } else if (value.type === 'shape') {\n valueFormat = `${propTypeFormat(value)}`;\n } else {\n valueFormat = propTypeFormat(value);\n }\n return `${key}${value.reactDesc && value.reactDesc.required ? '' : '?'}: ${valueFormat}`;\n });\n return `{${props.join(',')}}`;\n};\n\nconst propTypeFormat = (propType: ReactDescT | ReactDescT[], joinWith = ''): string => {\n let result;\n if (Array.isArray(propType)) {\n result = arrayFormat(propType).join(joinWith);\n } else if (typeof propType !== 'function' && propType.type) {\n switch (propType.type) {\n case 'array':\n result = 'any[]';\n break;\n case 'arrayOf':\n if ((propType.args as ReactDescT).type === 'oneOfType') {\n result = `(${propTypeFormat(propType.args as ReactDescT, ' | ')})[]`;\n } else {\n result = `${propTypeFormat(propType.args as ReactDescT, '\\n')}[]`;\n }\n break;\n case 'tuple':\n result = `[${propTypeFormat(propType.args as ReactDescT, ', ')}]`;\n break;\n case 'bool':\n result = 'boolean';\n break;\n case 'func':\n result = propType?.reactDesc?.signature ?? '((...args: any[]) => any)';\n break;\n case 'node':\n result = 'React.ReactNode';\n break;\n case 'element':\n result = 'JSX.Element';\n break;\n case 'instanceOf':\n result = 'any';\n break;\n case 'symbol':\n result = 'any';\n break;\n case 'objectOf':\n result = `{ [key: string]: ${propTypeFormat(propType.args as ReactDescT)} }`;\n break;\n case 'oneOf':\n result = (propType.args as unknown[]).map((a) => `\"${a}\"`).join(' | ');\n break;\n case 'oneOfType':\n result = `${propTypeFormat(propType.args as ReactDescT[], ' | ')}`;\n break;\n case 'shape':\n result = `${shapeFormat(propType.args as Record<string, ReactDescT>)}`;\n break;\n default:\n result = `${propType.type}`;\n break;\n }\n } else {\n result = 'any';\n }\n return result;\n};\n\nconst propTypeAsTypescript = (propType: ReactDescT, propName: string) => {\n const documentation = {\n ...propType.reactDesc,\n name: propName,\n };\n\n documentation.format = propTypeFormat(propType);\n\n return documentation;\n};\n\nexport default function descToTypescript<C, R>(\n component: React.ComponentType<C> | Hook<C, R>,\n reactDesc: ComponentDocumentation,\n) {\n if (!component) {\n throw new Error('react-desc: component is required');\n }\n\n const documentation: Partial<TypescriptDocumentation> = {\n name: component.displayName || component.name,\n ...reactDesc,\n };\n if (reactDesc) {\n delete documentation.propTypes;\n\n if (reactDesc.propTypes) {\n const propTypes: TypescriptDocumentation['properties'] = [];\n Object.keys(reactDesc.propTypes).forEach((propName) => {\n const propType = reactDesc.propTypes[propName];\n if (propType.type === 'shape') {\n propType.reactDesc.group = {};\n\n Object.keys(propType.args as Record<string, ReactDescT>).forEach((prop) => {\n if (!propType.reactDesc.group) return;\n propType.reactDesc.group[prop] = propTypeAsTypescript(\n (propType.args as Record<string, ReactDescT>)[prop],\n prop,\n );\n });\n }\n propTypes.push(propTypeAsTypescript(propType, propName));\n });\n if (propTypes.length > 0) {\n documentation.properties = propTypes;\n }\n }\n if (reactDesc.returnType) {\n if (isReactDesc(reactDesc.returnType)) {\n documentation.returns = propTypeAsTypescript(reactDesc.returnType, 'returns');\n } else {\n documentation.returns = Object.entries(reactDesc.returnType).map(([propName, propType]) =>\n propTypeAsTypescript(propType, propName),\n );\n }\n }\n }\n return documentation as TypescriptDocumentation;\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/propsPerDataTestId/getPropsPerDatatestIdPropTypes.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable indent */\nimport { PropTypes } from '../propTypes/index.js';\nimport type { ReactDescT } from '../propTypes/types.js';\n\n// recursive type where the key is a string and the value it's the either a string or a recursive type\ntype DataTestId = {\n [key: string]: string | DataTestId;\n};\n// typescript typeguard to check if the value is a string\nconst isString = (value: string | DataTestId): value is string => typeof value === 'string';\n// typescript typeguard to check if the value is a DataTestId\nconst isDataTestId = (value: string | DataTestId): value is DataTestId => typeof value === 'object';\n\ntype PropsPerDataTestIdPropTypes = {\n [key: string]: ReactDescT['shape'];\n};\n// implementation of a helper function that retrieves the nested values of the input object\n// and returns an array of strings, each string is the value of a leaf of the input object\n/**\n *\n * @param {object} obj - object in which the values rapresent the keys of the output object\n * @returns {string[]} an array of strings, each string is the value of a leaf of the input object\n * @example\n * const obj = {\n * WHATEVER: 'data-testid',\n * NESTED:{\n * WHATEVER2: 'data-testid-2',\n * WHATEVER3: 'data-testid-3',\n * }\n * }\n * const leafValues = getLeafValues(obj);\n * leafValues === ['data-testid', 'data-testid-2', 'data-testid-3']\n */\nconst getLeafValues = (obj: DataTestId): string[] => {\n const keys = Object.keys(obj);\n const leafValues = keys.reduce((acc, key) => {\n const value = obj[key];\n if (isString(value)) {\n acc.push(`${value}`);\n } else if (isDataTestId(value)) {\n acc.push(...getLeafValues(value));\n }\n return acc;\n }, [] as string[]);\n return leafValues;\n};\n\n/**\n * @param {object} dataTestIdObj - object in which the values rapresent the keys of the output object\n * @returns {object} output - an object in which for each leaf value of the input object there is a key with aria-* and data-* props.shape definition\n * @example\n * const dataTestIdObj = {\n * WHATEVER: 'data-testid',\n * NESTED:{\n * WHATEVER2: 'data-testid-2',\n * WHATEVER3: 'data-testid-3',\n * }\n * }\n *\n * const propsPerDataTestIdPropTypes = getPropsPerDatatestIdPropTypes(dataTestIdObj);\n * // propsPerDataTestIdPropTypes will be\n * {\n * 'data-testid': PropTypes.shape({\n * 'aria-*': PropTypes.string,\n * 'data-*': PropTypes.string,\n * }),\n * 'data-testid-2': PropTypes.shape({\n * 'aria-*': PropTypes.string,\n * 'data-*': PropTypes.string,\n * })\n * 'data-testid-3': PropTypes.shape({\n * 'aria-*': PropTypes.string,\n * 'data-*': PropTypes.string,\n * })\n * }\n * @fires getLeafValues\n */\nexport const getPropsPerDatatestIdPropTypes = (dataTestIdObj: DataTestId): PropsPerDataTestIdPropTypes => {\n const leafValues = getLeafValues(dataTestIdObj);\n const propsPerDataTestIdPropTypes = {} as PropsPerDataTestIdPropTypes;\n leafValues.forEach((leafValue) => {\n propsPerDataTestIdPropTypes[leafValue] = PropTypes.shape({\n 'aria-*': PropTypes.string.description('Aria related properties'),\n 'data-*': PropTypes.string.description('Any data property to attach to the root container'),\n 'on-*': PropTypes.func.description('Any supported React event'),\n 'all HTML attributes': PropTypes.any.description(\n 'HTML attributes such as id, className, autoComplete, href and so on',\n ),\n })\n .description(`an object containing the definitions for ${leafValue} aria and data props`)\n .dataTestId();\n });\n return propsPerDataTestIdPropTypes;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,uBAA0B;AAQ1B,MAAM,WAAW,CAAC,UAAgD,OAAO,UAAU;AAEnF,MAAM,eAAe,CAAC,UAAoD,OAAO,UAAU;AAsB3F,MAAM,gBAAgB,CAAC,QAA8B;AACnD,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,QAAM,aAAa,KAAK,OAAO,CAAC,KAAK,QAAQ;AAC3C,UAAM,QAAQ,IAAI,GAAG;AACrB,QAAI,SAAS,KAAK,GAAG;AACnB,UAAI,KAAK,GAAG,OAAO;AAAA,IACrB,WAAW,aAAa,KAAK,GAAG;AAC9B,UAAI,KAAK,GAAG,cAAc,KAAK,CAAC;AAAA,IAClC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAa;AACjB,SAAO;AACT;AAgCO,MAAM,iCAAiC,CAAC,kBAA2D;AACxG,QAAM,aAAa,cAAc,aAAa;AAC9C,QAAM,8BAA8B,CAAC;AACrC,aAAW,QAAQ,CAAC,cAAc;AAChC,gCAA4B,SAAS,IAAI,2BAAU,MAAM;AAAA,MACvD,UAAU,2BAAU,OAAO,YAAY,yBAAyB;AAAA,MAChE,UAAU,2BAAU,OAAO,YAAY,mDAAmD;AAAA,MAC1F,QAAQ,2BAAU,KAAK,YAAY,2BAA2B;AAAA,MAC9D,uBAAuB,2BAAU,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF,CAAC,EACE,YAAY,4CAA4C,+BAA+B,EACvF,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,uBAA0B;AAQ1B,MAAM,WAAW,CAAC,UAAgD,OAAO,UAAU;AAEnF,MAAM,eAAe,CAAC,UAAoD,OAAO,UAAU;AAsB3F,MAAM,gBAAgB,CAAC,QAA8B;AACnD,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,QAAM,aAAa,KAAK,OAAO,CAAC,KAAK,QAAQ;AAC3C,UAAM,QAAQ,IAAI,GAAG;AACrB,QAAI,SAAS,KAAK,GAAG;AACnB,UAAI,KAAK,GAAG,KAAK,EAAE;AAAA,IACrB,WAAW,aAAa,KAAK,GAAG;AAC9B,UAAI,KAAK,GAAG,cAAc,KAAK,CAAC;AAAA,IAClC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAa;AACjB,SAAO;AACT;AAgCO,MAAM,iCAAiC,CAAC,kBAA2D;AACxG,QAAM,aAAa,cAAc,aAAa;AAC9C,QAAM,8BAA8B,CAAC;AACrC,aAAW,QAAQ,CAAC,cAAc;AAChC,gCAA4B,SAAS,IAAI,2BAAU,MAAM;AAAA,MACvD,UAAU,2BAAU,OAAO,YAAY,yBAAyB;AAAA,MAChE,UAAU,2BAAU,OAAO,YAAY,mDAAmD;AAAA,MAC1F,QAAQ,2BAAU,KAAK,YAAY,2BAA2B;AAAA,MAC9D,uBAAuB,2BAAU,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF,CAAC,EACE,YAAY,4CAA4C,SAAS,sBAAsB,EACvF,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/propsPerSlot/getPropsPerSlotPropTypes.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable indent */\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport { PropTypes } from '../propTypes/index.js';\nimport type { ReactDescT } from '../propTypes/types.js';\n\ntype PropsPerSlotPropTypes<Name extends string, Slots extends Record<string, string>> = {\n [key in keyof Required<TypescriptHelpersT.PropsForGlobalOnSlots<Name, Slots>>]: ReactDescT;\n};\n\nconst getLeafValues = <Name extends string, Slots extends Record<string, string>>(name: Name, slots: Slots) => {\n const keys = Object.keys(slots);\n const leafValues = keys.reduce(\n (acc, key) => {\n const value = slots[key];\n acc.push(\n `ds${name.slice(2)}${value\n .split('-')\n .map((word) => word[0].toUpperCase() + word.slice(1))\n .join('')}` as keyof PropsPerSlotPropTypes<Name, Slots>,\n );\n return acc;\n },\n [] as (keyof PropsPerSlotPropTypes<Name, Slots>)[],\n );\n return leafValues;\n};\n\nexport const getPropsPerSlotPropTypes = <Name extends string, Slots extends Record<string, string>>(\n name: Name,\n slots: Slots,\n): PropsPerSlotPropTypes<Name, Slots> => {\n const leafValues = getLeafValues(name, slots);\n const propsPerSlotPropTypes = {} as PropsPerSlotPropTypes<Name, Slots>;\n leafValues.forEach((leafValue) => {\n propsPerSlotPropTypes[leafValue] = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n 'aria-*': PropTypes.string.description('Aria related properties'),\n 'data-*': PropTypes.string.description('Any data property to attach to the root container'),\n 'on-*': PropTypes.func.description('Any supported React event'),\n 'all HTML attributes': PropTypes.any.description(\n 'HTML attributes such as id, className, autoComplete, href and so on',\n ),\n }),\n ])\n .description(`An object or function containing the definitions for ${leafValue} aria and data props.`)\n .dataTestId();\n });\n return propsPerSlotPropTypes;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,uBAA0B;AAO1B,MAAM,gBAAgB,CAA4D,MAAY,UAAiB;AAC7G,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,aAAa,KAAK;AAAA,IACtB,CAAC,KAAK,QAAQ;AACZ,YAAM,QAAQ,MAAM,GAAG;AACvB,UAAI;AAAA,QACF,KAAK,KAAK,MAAM,CAAC,IAAI,MAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EACnD,KAAK,EAAE;AAAA,MACZ;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,MAAM,2BAA2B,CACtC,MACA,UACuC;AACvC,QAAM,aAAa,cAAc,MAAM,KAAK;AAC5C,QAAM,wBAAwB,CAAC;AAC/B,aAAW,QAAQ,CAAC,cAAc;AAChC,0BAAsB,SAAS,IAAI,2BAAU,UAAU;AAAA,MACrD,2BAAU;AAAA,MACV,2BAAU,MAAM;AAAA,QACd,UAAU,2BAAU,OAAO,YAAY,yBAAyB;AAAA,QAChE,UAAU,2BAAU,OAAO,YAAY,mDAAmD;AAAA,QAC1F,QAAQ,2BAAU,KAAK,YAAY,2BAA2B;AAAA,QAC9D,uBAAuB,2BAAU,IAAI;AAAA,UACnC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC,EACE,YAAY,wDAAwD,gCAAgC,EACpG,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
4
+ "sourcesContent": ["/* eslint-disable indent */\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport { PropTypes } from '../propTypes/index.js';\nimport type { ReactDescT } from '../propTypes/types.js';\n\ntype PropsPerSlotPropTypes<Name extends string, Slots extends Record<string, string>> = {\n [key in keyof Required<TypescriptHelpersT.PropsForGlobalOnSlots<Name, Slots>>]: ReactDescT;\n};\n\nconst getLeafValues = <Name extends string, Slots extends Record<string, string>>(name: Name, slots: Slots) => {\n const keys = Object.keys(slots);\n const leafValues = keys.reduce(\n (acc, key) => {\n const value = slots[key];\n acc.push(\n `ds${name.slice(2)}${value\n .split('-')\n .map((word) => word[0].toUpperCase() + word.slice(1))\n .join('')}` as keyof PropsPerSlotPropTypes<Name, Slots>,\n );\n return acc;\n },\n [] as (string & keyof PropsPerSlotPropTypes<Name, Slots>)[],\n );\n return leafValues;\n};\n\nexport const getPropsPerSlotPropTypes = <Name extends string, Slots extends Record<string, string>>(\n name: Name,\n slots: Slots,\n): PropsPerSlotPropTypes<Name, Slots> => {\n const leafValues = getLeafValues(name, slots);\n const propsPerSlotPropTypes = {} as PropsPerSlotPropTypes<Name, Slots>;\n leafValues.forEach((leafValue) => {\n propsPerSlotPropTypes[leafValue] = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n 'aria-*': PropTypes.string.description('Aria related properties'),\n 'data-*': PropTypes.string.description('Any data property to attach to the root container'),\n 'on-*': PropTypes.func.description('Any supported React event'),\n 'all HTML attributes': PropTypes.any.description(\n 'HTML attributes such as id, className, autoComplete, href and so on',\n ),\n }),\n ])\n .description(`An object or function containing the definitions for ${leafValue} aria and data props.`)\n .dataTestId();\n });\n return propsPerSlotPropTypes;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,uBAA0B;AAO1B,MAAM,gBAAgB,CAA4D,MAAY,UAAiB;AAC7G,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,aAAa,KAAK;AAAA,IACtB,CAAC,KAAK,QAAQ;AACZ,YAAM,QAAQ,MAAM,GAAG;AACvB,UAAI;AAAA,QACF,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG,MAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EACnD,KAAK,EAAE,CAAC;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,MAAM,2BAA2B,CACtC,MACA,UACuC;AACvC,QAAM,aAAa,cAAc,MAAM,KAAK;AAC5C,QAAM,wBAAwB,CAAC;AAC/B,aAAW,QAAQ,CAAC,cAAc;AAChC,0BAAsB,SAAS,IAAI,2BAAU,UAAU;AAAA,MACrD,2BAAU;AAAA,MACV,2BAAU,MAAM;AAAA,QACd,UAAU,2BAAU,OAAO,YAAY,yBAAyB;AAAA,QAChE,UAAU,2BAAU,OAAO,YAAY,mDAAmD;AAAA,QAC1F,QAAQ,2BAAU,KAAK,YAAY,2BAA2B;AAAA,QAC9D,uBAAuB,2BAAU,IAAI;AAAA,UACnC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC,EACE,YAAY,wDAAwD,SAAS,uBAAuB,EACpG,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/useDeprecateComponent/index.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable no-console */\nimport { useEffect } from 'react';\n\ninterface Props {\n componentName: string;\n version: string;\n}\n\nexport const useDeprecateComponent = ({ componentName, version }: Props) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== 'production')\n console.error(`Warning: ${componentName}:: this component will be deprecated in version: ${version}.`);\n }, [componentName, version]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA0B;AAOnB,MAAM,wBAAwB,CAAC,EAAE,eAAe,QAAQ,MAAa;AAC1E,8BAAU,MAAM;AACd,QAAI;AACF,cAAQ,MAAM,YAAY,iEAAiE,UAAU;AAAA,EACzG,GAAG,CAAC,eAAe,OAAO,CAAC;AAC7B;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA0B;AAOnB,MAAM,wBAAwB,CAAC,EAAE,eAAe,QAAQ,MAAa;AAC1E,8BAAU,MAAM;AACd,QAAI;AACF,cAAQ,MAAM,YAAY,aAAa,oDAAoD,OAAO,GAAG;AAAA,EACzG,GAAG,CAAC,eAAe,OAAO,CAAC;AAC7B;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/validation/errorTemplates.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "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: \"${String(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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADChB,MAAM,iBAAiB,CAC5B,eACA,cACA,aACA,gBACS;AACT,QAAM,IAAI;AAAA,IACR,GAAG,uDAAuD;AAAA;AAAA;AAAA,eAG/C,OAAO,WAAW,OAAO,OAAO;AAAA,eAChC,YAAY,QAAQ,MAAM,MAAM;AAAA;AAAA,EAE7C;AACF;AAEO,MAAM,qBAAqB,CAAC,eAAuB,iBAA+B;AACvF,QAAM,IAAI;AAAA,IACR,GAAG,wCAAwC;AAAA;AAAA;AAAA,EAG7C;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADChB,MAAM,iBAAiB,CAC5B,eACA,cACA,aACA,gBACS;AACT,QAAM,IAAI;AAAA,IACR,GAAG,aAAa,0CAA0C,YAAY;AAAA;AAAA;AAAA,eAG3D,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW;AAAA,eAC3C,YAAY,QAAQ,MAAM,MAAM,CAAC;AAAA;AAAA,EAE9C;AACF;AAEO,MAAM,qBAAqB,CAAC,eAAuB,iBAA+B;AACvF,QAAM,IAAI;AAAA,IACR,GAAG,aAAa,2BAA2B,YAAY;AAAA;AAAA;AAAA,EAGzD;AACF;",
6
6
  "names": []
7
7
  }
@@ -49,12 +49,9 @@ const isUnion = (format) => {
49
49
  let depth = 0;
50
50
  let satisfies = false;
51
51
  format.split("").forEach((char) => {
52
- if (["{", "("].includes(char))
53
- depth += 1;
54
- else if (["}", ")"].includes(char))
55
- depth -= 1;
56
- else if (char === "|" && depth === 0)
57
- satisfies = true;
52
+ if (["{", "("].includes(char)) depth += 1;
53
+ else if (["}", ")"].includes(char)) depth -= 1;
54
+ else if (char === "|" && depth === 0) satisfies = true;
58
55
  });
59
56
  return satisfies;
60
57
  };
@@ -63,18 +60,14 @@ const isArray = (format) => !isUnion(format) && format.slice(-2) === "[]";
63
60
  const isObjectOf = (format) => format !== "object" && !isUnion(format) && format.startsWith("{ [key: string]: ");
64
61
  const isObject = (format) => format === "object" || !isUnion(format) && format[0] === "{" && format.slice(-1) === "}";
65
62
  const isFunction = (format) => {
66
- if (isUnion(format))
67
- return false;
68
- if (!format.startsWith("((") && format.slice(-1) !== ")")
69
- return false;
63
+ if (isUnion(format)) return false;
64
+ if (!format.startsWith("((") && format.slice(-1) !== ")") return false;
70
65
  let depth = 0;
71
66
  let arrowOccursAtDepth1 = false;
72
67
  for (let i = 0; i < format.length; i += 1) {
73
68
  const char = format[i];
74
- if (["{", "("].includes(char))
75
- depth += 1;
76
- else if (["}", ")"].includes(char))
77
- depth -= 1;
69
+ if (["{", "("].includes(char)) depth += 1;
70
+ else if (["}", ")"].includes(char)) depth -= 1;
78
71
  else if (i < format.length - 1 && format.slice(i, i + 2) === "=>") {
79
72
  arrowOccursAtDepth1 = arrowOccursAtDepth1 || depth === 1;
80
73
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/validation/typescriptGuards.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "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 isNull: GuardFn = (format) => format === '\"null\"';\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 isObjectOf: GuardFn = (format) =>\n format !== 'object' && !isUnion(format) && format.startsWith('{ [key: string]: ');\n\nexport const isObject: GuardFn = (format) =>\n format === 'object' || (!isUnion(format) && format[0] === '{' && format.slice(-1) === '}');\n\nexport const isFunction: GuardFn = (format) => {\n // It's isn't an union\n if (isUnion(format)) return false;\n // Has to start with (( and end with )\n if (!format.startsWith('((') && format.slice(-1) !== ')') return false;\n\n // The arrow MUST occur at depth 1 (when couting parenthesis)\n // Otherwise the only possibility is that we have \"something with parenthesis\" (look down below)\n let depth = 0;\n let arrowOccursAtDepth1 = false;\n for (let i = 0; i < format.length; i += 1) {\n const char = format[i];\n if (['{', '('].includes(char)) depth += 1;\n else if (['}', ')'].includes(char)) depth -= 1;\n else if (i < format.length - 1 && format.slice(i, i + 2) === '=>') {\n arrowOccursAtDepth1 = arrowOccursAtDepth1 || depth === 1;\n }\n }\n return arrowOccursAtDepth1;\n};\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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEhB,MAAM,kBAA2B,CAAC,WAAW,CAAC,UAAU,UAAU,SAAS,EAAE,SAAS,MAAM;AAC5F,MAAM,cAAuB,CAAC,WAAW,WAAW;AACpD,MAAM,SAAkB,CAAC,WAAW,WAAW;AAC/C,MAAM,UAAmB,CAAC,WAAW;AAC1C,MAAI,QAAQ;AACZ,MAAI,YAAY;AAChB,SAAO,MAAM,EAAE,EAAE,QAAQ,CAAC,SAAS;AACjC,QAAI,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI;AAAG,eAAS;AAAA,aAC/B,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI;AAAG,eAAS;AAAA,aACpC,SAAS,OAAO,UAAU;AAAG,kBAAY;AAAA,EACpD,CAAC;AACD,SAAO;AACT;AAEO,MAAM,WAAoB,CAAC,WAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM;AAEpG,MAAM,UAAmB,CAAC,WAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,MAAM,EAAE,MAAM;AAE9E,MAAM,aAAsB,CAAC,WAClC,WAAW,YAAY,CAAC,QAAQ,MAAM,KAAK,OAAO,WAAW,mBAAmB;AAE3E,MAAM,WAAoB,CAAC,WAChC,WAAW,YAAa,CAAC,QAAQ,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM;AAEjF,MAAM,aAAsB,CAAC,WAAW;AAE7C,MAAI,QAAQ,MAAM;AAAG,WAAO;AAE5B,MAAI,CAAC,OAAO,WAAW,IAAI,KAAK,OAAO,MAAM,EAAE,MAAM;AAAK,WAAO;AAIjE,MAAI,QAAQ;AACZ,MAAI,sBAAsB;AAC1B,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAM,OAAO,OAAO,CAAC;AACrB,QAAI,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI;AAAG,eAAS;AAAA,aAC/B,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI;AAAG,eAAS;AAAA,aACpC,IAAI,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,MAAM;AACjE,4BAAsB,uBAAuB,UAAU;AAAA,IACzD;AAAA,EACF;AACA,SAAO;AACT;AAEO,MAAM,cAAuB,CAAC,WAAW,CAAC,QAAQ,MAAM,KAAK,CAAC,mBAAmB,aAAa,EAAE,SAAS,MAAM;AAE/G,MAAM,6BAAsC,CAAC,WAClD,CAAC,QAAQ,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEhB,MAAM,kBAA2B,CAAC,WAAW,CAAC,UAAU,UAAU,SAAS,EAAE,SAAS,MAAM;AAC5F,MAAM,cAAuB,CAAC,WAAW,WAAW;AACpD,MAAM,SAAkB,CAAC,WAAW,WAAW;AAC/C,MAAM,UAAmB,CAAC,WAAW;AAC1C,MAAI,QAAQ;AACZ,MAAI,YAAY;AAChB,SAAO,MAAM,EAAE,EAAE,QAAQ,CAAC,SAAS;AACjC,QAAI,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,EAAG,UAAS;AAAA,aAC/B,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,EAAG,UAAS;AAAA,aACpC,SAAS,OAAO,UAAU,EAAG,aAAY;AAAA,EACpD,CAAC;AACD,SAAO;AACT;AAEO,MAAM,WAAoB,CAAC,WAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM;AAEpG,MAAM,UAAmB,CAAC,WAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,MAAM,EAAE,MAAM;AAE9E,MAAM,aAAsB,CAAC,WAClC,WAAW,YAAY,CAAC,QAAQ,MAAM,KAAK,OAAO,WAAW,mBAAmB;AAE3E,MAAM,WAAoB,CAAC,WAChC,WAAW,YAAa,CAAC,QAAQ,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM;AAEjF,MAAM,aAAsB,CAAC,WAAW;AAE7C,MAAI,QAAQ,MAAM,EAAG,QAAO;AAE5B,MAAI,CAAC,OAAO,WAAW,IAAI,KAAK,OAAO,MAAM,EAAE,MAAM,IAAK,QAAO;AAIjE,MAAI,QAAQ;AACZ,MAAI,sBAAsB;AAC1B,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,UAAM,OAAO,OAAO,CAAC;AACrB,QAAI,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,EAAG,UAAS;AAAA,aAC/B,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,EAAG,UAAS;AAAA,aACpC,IAAI,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,MAAM;AACjE,4BAAsB,uBAAuB,UAAU;AAAA,IACzD;AAAA,EACF;AACA,SAAO;AACT;AAEO,MAAM,cAAuB,CAAC,WAAW,CAAC,QAAQ,MAAM,KAAK,CAAC,mBAAmB,aAAa,EAAE,SAAS,MAAM;AAE/G,MAAM,6BAAsC,CAAC,WAClD,CAAC,QAAQ,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM;",
6
6
  "names": []
7
7
  }
@@ -38,8 +38,7 @@ const typescriptObjectParser = (format) => {
38
38
  let lastValue = "";
39
39
  let shouldAppendToKey = true;
40
40
  const pushPair = () => {
41
- if (lastKey)
42
- keyValuePairs.push([lastKey, lastValue.slice(1)]);
41
+ if (lastKey) keyValuePairs.push([lastKey, lastValue.slice(1)]);
43
42
  lastKey = "";
44
43
  lastValue = "";
45
44
  shouldAppendToKey = true;
@@ -48,36 +47,27 @@ const typescriptObjectParser = (format) => {
48
47
  format.split("").forEach((char) => {
49
48
  if (char === "{") {
50
49
  depth += 1;
51
- if (depth > 1)
52
- lastValue += char;
50
+ if (depth > 1) lastValue += char;
53
51
  } else if (char === "}") {
54
- if (depth > 1)
55
- lastValue += char;
52
+ if (depth > 1) lastValue += char;
56
53
  depth -= 1;
57
- if (depth === 1)
58
- pushPair();
54
+ if (depth === 1) pushPair();
59
55
  } else if (char === ":") {
60
56
  shouldAppendToKey = false;
61
- if (depth > 1)
62
- lastValue += char;
57
+ if (depth > 1) lastValue += char;
63
58
  } else if (char === ",") {
64
- if (depth === 1)
65
- pushPair();
66
- else
67
- lastValue += char;
59
+ if (depth === 1) pushPair();
60
+ else lastValue += char;
68
61
  } else if (char === " ") {
69
- if (!shouldAppendToKey)
70
- lastValue += char;
62
+ if (!shouldAppendToKey) lastValue += char;
71
63
  } else if (char === "(") {
72
64
  depth += 1;
73
65
  lastValue += char;
74
66
  } else if (char === ")") {
75
67
  depth -= 1;
76
68
  lastValue += char;
77
- } else if (shouldAppendToKey)
78
- lastKey += char;
79
- else
80
- lastValue += char;
69
+ } else if (shouldAppendToKey) lastKey += char;
70
+ else lastValue += char;
81
71
  });
82
72
  pushPair();
83
73
  return keyValuePairs;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/validation/typescriptParsers.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable complexity */\nexport const typescriptObjectParser = (format: 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.slice(1)]);\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 if (!shouldAppendToKey) lastValue += char;\n } else if (char === '(') {\n depth += 1;\n lastValue += char;\n } else if (char === ')') {\n depth -= 1;\n lastValue += char;\n } else if (shouldAppendToKey) lastKey += char;\n else lastValue += char;\n });\n pushPair();\n\n return keyValuePairs;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADChB,MAAM,yBAAyB,CAAC,WAAmB;AACxD,QAAM,gBAAoC,CAAC;AAG3C,MAAI,UAAU;AACd,MAAI,YAAY;AAChB,MAAI,oBAAoB;AAExB,QAAM,WAAW,MAAM;AACrB,QAAI;AAAS,oBAAc,KAAK,CAAC,SAAS,UAAU,MAAM,CAAC,CAAC,CAAC;AAC7D,cAAU;AACV,gBAAY;AACZ,wBAAoB;AAAA,EACtB;AAGA,MAAI,QAAQ;AACZ,SAAO,MAAM,EAAE,EAAE,QAAQ,CAAC,SAAS;AACjC,QAAI,SAAS,KAAK;AAChB,eAAS;AACT,UAAI,QAAQ;AAAG,qBAAa;AAAA,IAC9B,WAAW,SAAS,KAAK;AACvB,UAAI,QAAQ;AAAG,qBAAa;AAC5B,eAAS;AACT,UAAI,UAAU;AAAG,iBAAS;AAAA,IAC5B,WAAW,SAAS,KAAK;AACvB,0BAAoB;AACpB,UAAI,QAAQ;AAAG,qBAAa;AAAA,IAC9B,WAAW,SAAS,KAAK;AACvB,UAAI,UAAU;AAAG,iBAAS;AAAA;AACrB,qBAAa;AAAA,IACpB,WAAW,SAAS,KAAK;AAEvB,UAAI,CAAC;AAAmB,qBAAa;AAAA,IACvC,WAAW,SAAS,KAAK;AACvB,eAAS;AACT,mBAAa;AAAA,IACf,WAAW,SAAS,KAAK;AACvB,eAAS;AACT,mBAAa;AAAA,IACf,WAAW;AAAmB,iBAAW;AAAA;AACpC,mBAAa;AAAA,EACpB,CAAC;AACD,WAAS;AAET,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADChB,MAAM,yBAAyB,CAAC,WAAmB;AACxD,QAAM,gBAAoC,CAAC;AAG3C,MAAI,UAAU;AACd,MAAI,YAAY;AAChB,MAAI,oBAAoB;AAExB,QAAM,WAAW,MAAM;AACrB,QAAI,QAAS,eAAc,KAAK,CAAC,SAAS,UAAU,MAAM,CAAC,CAAC,CAAC;AAC7D,cAAU;AACV,gBAAY;AACZ,wBAAoB;AAAA,EACtB;AAGA,MAAI,QAAQ;AACZ,SAAO,MAAM,EAAE,EAAE,QAAQ,CAAC,SAAS;AACjC,QAAI,SAAS,KAAK;AAChB,eAAS;AACT,UAAI,QAAQ,EAAG,cAAa;AAAA,IAC9B,WAAW,SAAS,KAAK;AACvB,UAAI,QAAQ,EAAG,cAAa;AAC5B,eAAS;AACT,UAAI,UAAU,EAAG,UAAS;AAAA,IAC5B,WAAW,SAAS,KAAK;AACvB,0BAAoB;AACpB,UAAI,QAAQ,EAAG,cAAa;AAAA,IAC9B,WAAW,SAAS,KAAK;AACvB,UAAI,UAAU,EAAG,UAAS;AAAA,UACrB,cAAa;AAAA,IACpB,WAAW,SAAS,KAAK;AAEvB,UAAI,CAAC,kBAAmB,cAAa;AAAA,IACvC,WAAW,SAAS,KAAK;AACvB,eAAS;AACT,mBAAa;AAAA,IACf,WAAW,SAAS,KAAK;AACvB,eAAS;AACT,mBAAa;AAAA,IACf,WAAW,kBAAmB,YAAW;AAAA,QACpC,cAAa;AAAA,EACpB,CAAC;AACD,WAAS;AAET,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -100,8 +100,7 @@ const validateObject = (schemaName, key, value, format, validationsMemo, nextVal
100
100
  (0, import_errorTemplates.throwTypeError)(schemaName, key, value, format);
101
101
  return;
102
102
  }
103
- if (format === "object")
104
- return;
103
+ if (format === "object") return;
105
104
  const keyValuePairs = (0, import_typescriptParsers.typescriptObjectParser)(format);
106
105
  keyValuePairs.forEach(([objectKey, objectValue]) => {
107
106
  const trueKey = objectKey.slice(-1) === "?" ? objectKey.slice(0, -1) : objectKey;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/validation/typescriptValidator.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable max-params */\nimport type { PropsWithChildren, WeakValidationMap } from 'react';\nimport { useMemo, useRef } from 'react';\nimport type { TypescriptDocumentation } from '../propTypes/types.js';\nimport { describe } from '../propTypes/index.js';\nimport { throwRequiredError, throwTypeError } from './errorTemplates.js';\nimport {\n isArray,\n isFunction,\n isJSXorNode,\n isObject,\n isPrimitiveType,\n isSomethingWithParenthesis,\n isString,\n isUnion,\n isUndefined,\n isNull,\n isObjectOf,\n} from './typescriptGuards.js';\nimport { typescriptObjectParser } from './typescriptParsers.js';\n\ntype ValidatorFn = (\n schemaName: string,\n key: string,\n value: unknown,\n format: string,\n validationsMemo: Record<symbol, string>,\n nextValidationsMemo: Record<symbol, string>,\n) => void;\n\n// =============================================================================\n// Atom Validators\n// =============================================================================\n\n// This functions will validate something from the data\n// and optionally recursively apply `validateValueWithFormat`\n// in smaller parts\n\nconst validateUndefined: ValidatorFn = (schemaName, key, value, format) => {\n if (value !== undefined || value === 'undefined') {\n throwTypeError(schemaName, key, value, format);\n }\n};\nconst validateNull: ValidatorFn = (schemaName, key, value, format) => {\n if (value !== null || value === 'null') {\n throwTypeError(schemaName, key, value, format);\n }\n};\nconst validatePrimitiveType: ValidatorFn = (schemaName, key, value, format) => {\n if (typeof value !== format) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nconst validateString: ValidatorFn = (schemaName, key, value, format) => {\n if (value !== format.slice(1, -1)) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nconst validateArray: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n // Check that we have an array\n if (!Array.isArray(value)) {\n throwTypeError(schemaName, key, value, format);\n }\n\n // Check that each element inside satisfies the format\n (value as unknown[]).forEach((val, index) => {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(\n schemaName,\n `${key}[${index}]`,\n val,\n format.slice(0, -2),\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\nfunction isObjectType(value: unknown): value is Record<string, unknown> {\n return !(typeof value !== 'object' || Array.isArray(value));\n}\n\nconst validateObjectOf: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n const valuesIsObject = isObjectType(value);\n // Check that we have an object\n if (!valuesIsObject) {\n throwTypeError(schemaName, key, value, format);\n return;\n }\n\n const valuesFormat = format.slice('{ [key: string]: '.length, -2);\n\n Object.keys(value).forEach((objectKey) => {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(\n schemaName,\n `${key}[${objectKey}]`,\n value[objectKey],\n valuesFormat,\n validationsMemo,\n nextValidationsMemo,\n );\n });\n};\n\nconst validateObject: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n const valuesIsObject = isObjectType(value);\n // Check that we have an object\n if (!valuesIsObject) {\n throwTypeError(schemaName, key, value, format);\n return;\n }\n\n if (format === 'object') return;\n\n const keyValuePairs = typescriptObjectParser(format);\n // Now we have the key - value pairs\n // Each key could either be required or not\n // Just recursively check the object\n\n keyValuePairs.forEach(([objectKey, objectValue]) => {\n const trueKey = objectKey.slice(-1) === '?' ? objectKey.slice(0, -1) : objectKey;\n\n if (trueKey === objectKey && !(trueKey in value)) {\n throwRequiredError(schemaName, trueKey);\n }\n\n if (trueKey in value) {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(\n schemaName,\n `${key}[${trueKey}]`,\n value[trueKey],\n objectValue,\n validationsMemo,\n nextValidationsMemo,\n );\n }\n });\n};\n\nconst validateUnion: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n const possibilities = format.split(/\\s?\\|\\s?/);\n\n const errors = [];\n\n possibilities.forEach((possibility) => {\n try {\n // this is a recursive func, we need to invoke it before it's defined.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n validateValueWithFormat(schemaName, key, value, possibility, validationsMemo, nextValidationsMemo);\n } catch (e) {\n errors.push(e);\n }\n });\n\n if (errors.length === possibilities.length) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nconst validateFunction: ValidatorFn = (schemaName, key, value, format) => {\n // Check that we have a function\n if (typeof value !== 'function') {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\nfunction isJSXElement(value: unknown): value is JSX.Element {\n return value === null || (typeof value === 'object' && value !== null && '$$typeof' in value);\n}\nconst validateJSXorNode: ValidatorFn = (schemaName, key, value, format) => {\n const valueIsJSX = isJSXElement(value);\n if (format === 'JSX.Element' && !valueIsJSX) {\n throwTypeError(schemaName, key, value, format);\n }\n};\n\n// =============================================================================\n// Schema validator\n// =============================================================================\n\nconst validateValueWithFormat: ValidatorFn = (schemaName, key, value, format, validationsMemo, nextValidationsMemo) => {\n nextValidationsMemo[value as symbol] = format;\n\n if ((value as symbol) in validationsMemo) {\n // We already validated this value on this format\n return;\n }\n\n if (isUndefined(format)) {\n validateUndefined(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isNull(format)) {\n validateNull(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isPrimitiveType(format)) {\n validatePrimitiveType(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isUnion(format)) {\n validateUnion(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isString(format)) {\n validateString(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isArray(format)) {\n validateArray(schemaName, key, value, format, validationsMemo, nextValidationsMemo);\n } else if (isObjectOf(format)) {\n validateObjectOf(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: TypescriptDocumentation,\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, isRequiredIf, omitValidation } = property;\n\n const requiredConditionally = isRequiredIf && isRequiredIf(props);\n\n if (omitValidation) {\n return;\n }\n\n if (required && !(name in props)) {\n throwRequiredError(schema.name, name);\n }\n\n if (requiredConditionally && !(name in props)) {\n throwRequiredError(schema.name, name);\n }\n\n const shouldValidateProperty = props[name] !== undefined || required || requiredConditionally;\n\n if (name in props && format && shouldValidateProperty) {\n validateValueWithFormat(schemaName, name, props[name], format, validationsMemo, nextValidationsMemo);\n }\n });\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useValidateTypescriptPropTypes = <T = Record<string, any>>(\n props: PropsWithChildren<T>,\n propTypes: WeakValidationMap<unknown>,\n componentDisplayName: string,\n): void => {\n if (!Boolean(componentDisplayName)) {\n throw new Error('Provide display name for the component to use for validation');\n }\n\n const validationsMemo = useRef<Record<string, string>>({});\n\n const typescriptSchema = useMemo(() => {\n const Component = () => {};\n\n const DescribedComponent = describe(Component);\n DescribedComponent.propTypes = propTypes;\n DescribedComponent.displayName = componentDisplayName;\n return DescribedComponent.toTypescript();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propTypes]);\n\n useMemo(() => {\n const nextValidationsMemo = {};\n\n validateTypescriptPropTypesImplementation(props, typescriptSchema, validationsMemo.current, nextValidationsMemo);\n validationsMemo.current = nextValidationsMemo;\n return 'WE DONT NEED RETURN just the memo';\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -5,14 +5,12 @@ const useMemoCompare = (next, compare) => {
5
5
  const previousRef = useRef(next);
6
6
  const previous = previousRef.current;
7
7
  const isEqual = compare(previous, next);
8
- if (!isEqual)
9
- previousRef.current = next;
8
+ if (!isEqual) previousRef.current = next;
10
9
  return isEqual ? previous : next;
11
10
  };
12
11
  const useMemoMergePropsWithDefault = (props, defaultProps, compare = deepequal) => {
13
12
  const finalDefaultProps = useMemo(() => {
14
- if (typeof defaultProps === "function")
15
- return defaultProps();
13
+ if (typeof defaultProps === "function") return defaultProps();
16
14
  return defaultProps;
17
15
  }, [defaultProps]);
18
16
  const mergedProps = { ...finalDefaultProps, ...props };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/defaultProps/useMemoMergePropsWithDefault.ts"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useRef, useMemo } from 'react';\nimport deepequal from 'fast-deep-equal/react.js';\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(next);\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<string, any>>(\n props: Partial<T>,\n defaultProps: Partial<T> | (() => Partial<T>),\n compare = deepequal,\n): T => {\n // support for 'runtime' default props, if runtime default props are required, pass a function that returns the default props\n const finalDefaultProps = useMemo<Partial<T>>(() => {\n if (typeof defaultProps === 'function') return defaultProps();\n return defaultProps;\n }, [defaultProps]);\n\n const mergedProps = { ...finalDefaultProps, ...props } as T;\n\n return useMemoCompare<T>(mergedProps, compare);\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,QAAQ,eAAe;AAChC,OAAO,eAAe;AAItB,MAAM,iBAAiB,CAAU,MAAS,YAAgE;AAExG,QAAM,cAAc,OAAO,IAAI;AAC/B,QAAM,WAAW,YAAY;AAG7B,QAAM,UAAU,QAAQ,UAAU,IAAI;AAItC,MAAI,CAAC;AAAS,gBAAY,UAAU;AAEpC,SAAO,UAAU,WAAW;AAC9B;AAGO,MAAM,+BAA+B,CAC1C,OACA,cACA,UAAU,cACJ;AAEN,QAAM,oBAAoB,QAAoB,MAAM;AAClD,QAAI,OAAO,iBAAiB;AAAY,aAAO,aAAa;AAC5D,WAAO;AAAA,EACT,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,cAAc,EAAE,GAAG,mBAAmB,GAAG,MAAM;AAErD,SAAO,eAAkB,aAAa,OAAO;AAC/C;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,QAAQ,eAAe;AAChC,OAAO,eAAe;AAItB,MAAM,iBAAiB,CAAU,MAAS,YAAgE;AAExG,QAAM,cAAc,OAAO,IAAI;AAC/B,QAAM,WAAW,YAAY;AAG7B,QAAM,UAAU,QAAQ,UAAU,IAAI;AAItC,MAAI,CAAC,QAAS,aAAY,UAAU;AAEpC,SAAO,UAAU,WAAW;AAC9B;AAGO,MAAM,+BAA+B,CAC1C,OACA,cACA,UAAU,cACJ;AAEN,QAAM,oBAAoB,QAAoB,MAAM;AAClD,QAAI,OAAO,iBAAiB,WAAY,QAAO,aAAa;AAC5D,WAAO;AAAA,EACT,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,cAAc,EAAE,GAAG,mBAAmB,GAAG,MAAM;AAErD,SAAO,eAAkB,aAAa,OAAO;AAC/C;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/propTypes/describeConversions.ts"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-params */\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { ValidationMap, Requireable } from 'prop-types';\nimport PropTypes from 'prop-types';\nimport { tupleValidator } from './customPropTypes.js';\nimport {\n hasArguments,\n isArrayOf,\n isExact,\n isInstanceOf,\n isObjectOf,\n isOneOf,\n isOneOfType,\n isShape,\n} from './describeGuards.js';\nimport type { ReactDescT, ReactDescObjT, InstanceOfT, OneOfT, ObjectOfT, ExactT } from './types.js';\n\nconst enrichPropType = (propType: Requireable<unknown>, reactDesc: ReactDescObjT): Requireable<unknown> => {\n const func = (props: Record<string, unknown>, propName: string, componentName: string, ...rest: [string, string]) => {\n if (reactDesc && reactDesc.deprecated && propName in props && !reactDesc.warned) {\n const { version = '', message = '' } = reactDesc.deprecated;\n const error = `Warning: \"${propName}\" property of \"${componentName}\" will be deprecated in version: ${version}.\\n${message}`;\n console.warn(error);\n reactDesc.warned = true;\n }\n return propType(props, propName, componentName, ...rest);\n };\n Object.defineProperty(\n func,\n 'isRequired',\n Object.getOwnPropertyDescriptor(propType, 'isRequired') as PropertyDescriptor,\n );\n return func as Requireable<unknown>;\n};\n\nconst convertArray = (array: ReactDescT[]): Requireable<unknown>[] => array.map((type) => convertPropType(type));\n\nconst convertShape = (_shape: Record<string, ReactDescT>): ValidationMap<Record<string, unknown>> => {\n const result: ValidationMap<Record<string, unknown>> = {};\n Object.keys(_shape).forEach((key) => {\n result[key] = convertPropType(_shape[key]);\n });\n return result;\n};\n\nexport const convertPropType = (propType: ReactDescT): Requireable<unknown> => {\n if (!propType || !propType.type) {\n throw new Error(`react-desc: unknown error -- proptype is not well defined`);\n }\n\n // DimSum PropTypes conversion\n if (propType.type === 'tuple') {\n return enrichPropType(\n PropTypes.arrayOf(tupleValidator(convertArray(propType.args as ReactDescT[]))),\n propType.reactDesc,\n );\n }\n\n // Default PropType conversion\n const realPropType = PropTypes[propType.type];\n\n if (!realPropType) {\n throw new Error(`react-desc: unknown type ${propType.type}`);\n }\n\n if (hasArguments(propType, realPropType)) {\n if (isOneOfType(propType, realPropType)) {\n return enrichPropType(realPropType(convertArray(propType.args as ReactDescT[])), propType.reactDesc);\n }\n if (isArrayOf(propType, realPropType)) {\n return enrichPropType(realPropType(convertPropType(propType.args as ReactDescT)), propType.reactDesc);\n }\n if (isShape(propType, realPropType)) {\n return enrichPropType(\n realPropType(convertShape(propType.args as Record<string, ReactDescT>)),\n propType.reactDesc,\n );\n }\n if (isInstanceOf(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<InstanceOfT>[0]), propType.reactDesc);\n }\n if (isOneOf(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<OneOfT>[0]), propType.reactDesc);\n }\n if (isObjectOf(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<ObjectOfT>[0]), propType.reactDesc);\n }\n if (isExact(propType, realPropType)) {\n return enrichPropType(realPropType(propType.args as Parameters<ExactT>[0]), propType.reactDesc);\n }\n throw new Error(`react-desc: unknown error -- proptype with args is not matching`);\n }\n\n return enrichPropType(realPropType, propType.reactDesc);\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACMvB,OAAO,eAAe;AACtB,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,MAAM,iBAAiB,CAAC,UAAgC,cAAmD;AACzG,QAAM,OAAO,CAAC,OAAgC,UAAkB,kBAA0B,SAA2B;AACnH,QAAI,aAAa,UAAU,cAAc,YAAY,SAAS,CAAC,UAAU,QAAQ;AAC/E,YAAM,EAAE,UAAU,IAAI,UAAU,GAAG,IAAI,UAAU;AACjD,YAAM,QAAQ,aAAa,0BAA0B,iDAAiD;AAAA,EAAa;AACnH,cAAQ,KAAK,KAAK;AAClB,gBAAU,SAAS;AAAA,IACrB;AACA,WAAO,SAAS,OAAO,UAAU,eAAe,GAAG,IAAI;AAAA,EACzD;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,yBAAyB,UAAU,YAAY;AAAA,EACxD;AACA,SAAO;AACT;AAEA,MAAM,eAAe,CAAC,UAAgD,MAAM,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC;AAE/G,MAAM,eAAe,CAAC,WAA+E;AACnG,QAAM,SAAiD,CAAC;AACxD,SAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,WAAO,GAAG,IAAI,gBAAgB,OAAO,GAAG,CAAC;AAAA,EAC3C,CAAC;AACD,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,aAA+C;AAC7E,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAGA,MAAI,SAAS,SAAS,SAAS;AAC7B,WAAO;AAAA,MACL,UAAU,QAAQ,eAAe,aAAa,SAAS,IAAoB,CAAC,CAAC;AAAA,MAC7E,SAAS;AAAA,IACX;AAAA,EACF;AAGA,QAAM,eAAe,UAAU,SAAS,IAAI;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4BAA4B,SAAS,MAAM;AAAA,EAC7D;AAEA,MAAI,aAAa,UAAU,YAAY,GAAG;AACxC,QAAI,YAAY,UAAU,YAAY,GAAG;AACvC,aAAO,eAAe,aAAa,aAAa,SAAS,IAAoB,CAAC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,QAAI,UAAU,UAAU,YAAY,GAAG;AACrC,aAAO,eAAe,aAAa,gBAAgB,SAAS,IAAkB,CAAC,GAAG,SAAS,SAAS;AAAA,IACtG;AACA,QAAI,QAAQ,UAAU,YAAY,GAAG;AACnC,aAAO;AAAA,QACL,aAAa,aAAa,SAAS,IAAkC,CAAC;AAAA,QACtE,SAAS;AAAA,MACX;AAAA,IACF;AACA,QAAI,aAAa,UAAU,YAAY,GAAG;AACxC,aAAO,eAAe,aAAa,SAAS,IAAkC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,QAAI,QAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,QAAI,WAAW,UAAU,YAAY,GAAG;AACtC,aAAO,eAAe,aAAa,SAAS,IAAgC,GAAG,SAAS,SAAS;AAAA,IACnG;AACA,QAAI,QAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAEA,SAAO,eAAe,cAAc,SAAS,SAAS;AACxD;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACMvB,OAAO,eAAe;AACtB,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,MAAM,iBAAiB,CAAC,UAAgC,cAAmD;AACzG,QAAM,OAAO,CAAC,OAAgC,UAAkB,kBAA0B,SAA2B;AACnH,QAAI,aAAa,UAAU,cAAc,YAAY,SAAS,CAAC,UAAU,QAAQ;AAC/E,YAAM,EAAE,UAAU,IAAI,UAAU,GAAG,IAAI,UAAU;AACjD,YAAM,QAAQ,aAAa,QAAQ,kBAAkB,aAAa,oCAAoC,OAAO;AAAA,EAAM,OAAO;AAC1H,cAAQ,KAAK,KAAK;AAClB,gBAAU,SAAS;AAAA,IACrB;AACA,WAAO,SAAS,OAAO,UAAU,eAAe,GAAG,IAAI;AAAA,EACzD;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,yBAAyB,UAAU,YAAY;AAAA,EACxD;AACA,SAAO;AACT;AAEA,MAAM,eAAe,CAAC,UAAgD,MAAM,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC;AAE/G,MAAM,eAAe,CAAC,WAA+E;AACnG,QAAM,SAAiD,CAAC;AACxD,SAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACnC,WAAO,GAAG,IAAI,gBAAgB,OAAO,GAAG,CAAC;AAAA,EAC3C,CAAC;AACD,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,aAA+C;AAC7E,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAGA,MAAI,SAAS,SAAS,SAAS;AAC7B,WAAO;AAAA,MACL,UAAU,QAAQ,eAAe,aAAa,SAAS,IAAoB,CAAC,CAAC;AAAA,MAC7E,SAAS;AAAA,IACX;AAAA,EACF;AAGA,QAAM,eAAe,UAAU,SAAS,IAAI;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4BAA4B,SAAS,IAAI,EAAE;AAAA,EAC7D;AAEA,MAAI,aAAa,UAAU,YAAY,GAAG;AACxC,QAAI,YAAY,UAAU,YAAY,GAAG;AACvC,aAAO,eAAe,aAAa,aAAa,SAAS,IAAoB,CAAC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,QAAI,UAAU,UAAU,YAAY,GAAG;AACrC,aAAO,eAAe,aAAa,gBAAgB,SAAS,IAAkB,CAAC,GAAG,SAAS,SAAS;AAAA,IACtG;AACA,QAAI,QAAQ,UAAU,YAAY,GAAG;AACnC,aAAO;AAAA,QACL,aAAa,aAAa,SAAS,IAAkC,CAAC;AAAA,QACtE,SAAS;AAAA,MACX;AAAA,IACF;AACA,QAAI,aAAa,UAAU,YAAY,GAAG;AACxC,aAAO,eAAe,aAAa,SAAS,IAAkC,GAAG,SAAS,SAAS;AAAA,IACrG;AACA,QAAI,QAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,QAAI,WAAW,UAAU,YAAY,GAAG;AACtC,aAAO,eAAe,aAAa,SAAS,IAAgC,GAAG,SAAS,SAAS;AAAA,IACnG;AACA,QAAI,QAAQ,UAAU,YAAY,GAAG;AACnC,aAAO,eAAe,aAAa,SAAS,IAA6B,GAAG,SAAS,SAAS;AAAA,IAChG;AACA,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAEA,SAAO,eAAe,cAAc,SAAS,SAAS;AACxD;",
6
6
  "names": []
7
7
  }
@@ -99,8 +99,7 @@ function descToTypescript(component, reactDesc) {
99
99
  if (propType.type === "shape") {
100
100
  propType.reactDesc.group = {};
101
101
  Object.keys(propType.args).forEach((prop) => {
102
- if (!propType.reactDesc.group)
103
- return;
102
+ if (!propType.reactDesc.group) return;
104
103
  propType.reactDesc.group[prop] = propTypeAsTypescript(
105
104
  propType.args[prop],
106
105
  prop
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/propTypes/toTypescript.ts"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n/* eslint-disable complexity */\n/* eslint-disable react/forbid-foreign-prop-types */\nimport type React from 'react';\nimport type { ComponentDocumentation, Hook, ReactDescT, TypescriptDocumentation } from './types.js';\nimport { isReactDesc } from './describeGuards.js';\n\nconst arrayFormat = (array: ReactDescT[]) => array.map((propType) => propTypeFormat(propType));\n\nconst shapeFormat = (shape: Record<string, ReactDescT>) => {\n const props = Object.keys(shape).map((key) => {\n const value = shape[key];\n let valueFormat;\n if (\n value.type &&\n (value.type === 'arrayOf' || value.type === 'oneOfType' || value.type === 'oneOf') &&\n Array.isArray(value.args)\n ) {\n valueFormat = `${propTypeFormat(value)}`;\n } else if (value.type === 'shape') {\n valueFormat = `${propTypeFormat(value)}`;\n } else {\n valueFormat = propTypeFormat(value);\n }\n return `${key}${value.reactDesc && value.reactDesc.required ? '' : '?'}: ${valueFormat}`;\n });\n return `{${props.join(',')}}`;\n};\n\nconst propTypeFormat = (propType: ReactDescT | ReactDescT[], joinWith = ''): string => {\n let result;\n if (Array.isArray(propType)) {\n result = arrayFormat(propType).join(joinWith);\n } else if (typeof propType !== 'function' && propType.type) {\n switch (propType.type) {\n case 'array':\n result = 'any[]';\n break;\n case 'arrayOf':\n if ((propType.args as ReactDescT).type === 'oneOfType') {\n result = `(${propTypeFormat(propType.args as ReactDescT, ' | ')})[]`;\n } else {\n result = `${propTypeFormat(propType.args as ReactDescT, '\\n')}[]`;\n }\n break;\n case 'tuple':\n result = `[${propTypeFormat(propType.args as ReactDescT, ', ')}]`;\n break;\n case 'bool':\n result = 'boolean';\n break;\n case 'func':\n result = propType?.reactDesc?.signature ?? '((...args: any[]) => any)';\n break;\n case 'node':\n result = 'React.ReactNode';\n break;\n case 'element':\n result = 'JSX.Element';\n break;\n case 'instanceOf':\n result = 'any';\n break;\n case 'symbol':\n result = 'any';\n break;\n case 'objectOf':\n result = `{ [key: string]: ${propTypeFormat(propType.args as ReactDescT)} }`;\n break;\n case 'oneOf':\n result = (propType.args as unknown[]).map((a) => `\"${a}\"`).join(' | ');\n break;\n case 'oneOfType':\n result = `${propTypeFormat(propType.args as ReactDescT[], ' | ')}`;\n break;\n case 'shape':\n result = `${shapeFormat(propType.args as Record<string, ReactDescT>)}`;\n break;\n default:\n result = `${propType.type}`;\n break;\n }\n } else {\n result = 'any';\n }\n return result;\n};\n\nconst propTypeAsTypescript = (propType: ReactDescT, propName: string) => {\n const documentation = {\n ...propType.reactDesc,\n name: propName,\n };\n\n documentation.format = propTypeFormat(propType);\n\n return documentation;\n};\n\nexport default function descToTypescript<C, R>(\n component: React.ComponentType<C> | Hook<C, R>,\n reactDesc: ComponentDocumentation,\n) {\n if (!component) {\n throw new Error('react-desc: component is required');\n }\n\n const documentation: Partial<TypescriptDocumentation> = {\n name: component.displayName || component.name,\n ...reactDesc,\n };\n if (reactDesc) {\n delete documentation.propTypes;\n\n if (reactDesc.propTypes) {\n const propTypes: TypescriptDocumentation['properties'] = [];\n Object.keys(reactDesc.propTypes).forEach((propName) => {\n const propType = reactDesc.propTypes[propName];\n if (propType.type === 'shape') {\n propType.reactDesc.group = {};\n\n Object.keys(propType.args as Record<string, ReactDescT>).forEach((prop) => {\n if (!propType.reactDesc.group) return;\n propType.reactDesc.group[prop] = propTypeAsTypescript(\n (propType.args as Record<string, ReactDescT>)[prop],\n prop,\n );\n });\n }\n propTypes.push(propTypeAsTypescript(propType, propName));\n });\n if (propTypes.length > 0) {\n documentation.properties = propTypes;\n }\n }\n if (reactDesc.returnType) {\n if (isReactDesc(reactDesc.returnType)) {\n documentation.returns = propTypeAsTypescript(reactDesc.returnType, 'returns');\n } else {\n documentation.returns = Object.entries(reactDesc.returnType).map(([propName, propType]) =>\n propTypeAsTypescript(propType, propName),\n );\n }\n }\n }\n return documentation as TypescriptDocumentation;\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/propsPerDataTestId/getPropsPerDatatestIdPropTypes.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable indent */\nimport { PropTypes } from '../propTypes/index.js';\nimport type { ReactDescT } from '../propTypes/types.js';\n\n// recursive type where the key is a string and the value it's the either a string or a recursive type\ntype DataTestId = {\n [key: string]: string | DataTestId;\n};\n// typescript typeguard to check if the value is a string\nconst isString = (value: string | DataTestId): value is string => typeof value === 'string';\n// typescript typeguard to check if the value is a DataTestId\nconst isDataTestId = (value: string | DataTestId): value is DataTestId => typeof value === 'object';\n\ntype PropsPerDataTestIdPropTypes = {\n [key: string]: ReactDescT['shape'];\n};\n// implementation of a helper function that retrieves the nested values of the input object\n// and returns an array of strings, each string is the value of a leaf of the input object\n/**\n *\n * @param {object} obj - object in which the values rapresent the keys of the output object\n * @returns {string[]} an array of strings, each string is the value of a leaf of the input object\n * @example\n * const obj = {\n * WHATEVER: 'data-testid',\n * NESTED:{\n * WHATEVER2: 'data-testid-2',\n * WHATEVER3: 'data-testid-3',\n * }\n * }\n * const leafValues = getLeafValues(obj);\n * leafValues === ['data-testid', 'data-testid-2', 'data-testid-3']\n */\nconst getLeafValues = (obj: DataTestId): string[] => {\n const keys = Object.keys(obj);\n const leafValues = keys.reduce((acc, key) => {\n const value = obj[key];\n if (isString(value)) {\n acc.push(`${value}`);\n } else if (isDataTestId(value)) {\n acc.push(...getLeafValues(value));\n }\n return acc;\n }, [] as string[]);\n return leafValues;\n};\n\n/**\n * @param {object} dataTestIdObj - object in which the values rapresent the keys of the output object\n * @returns {object} output - an object in which for each leaf value of the input object there is a key with aria-* and data-* props.shape definition\n * @example\n * const dataTestIdObj = {\n * WHATEVER: 'data-testid',\n * NESTED:{\n * WHATEVER2: 'data-testid-2',\n * WHATEVER3: 'data-testid-3',\n * }\n * }\n *\n * const propsPerDataTestIdPropTypes = getPropsPerDatatestIdPropTypes(dataTestIdObj);\n * // propsPerDataTestIdPropTypes will be\n * {\n * 'data-testid': PropTypes.shape({\n * 'aria-*': PropTypes.string,\n * 'data-*': PropTypes.string,\n * }),\n * 'data-testid-2': PropTypes.shape({\n * 'aria-*': PropTypes.string,\n * 'data-*': PropTypes.string,\n * })\n * 'data-testid-3': PropTypes.shape({\n * 'aria-*': PropTypes.string,\n * 'data-*': PropTypes.string,\n * })\n * }\n * @fires getLeafValues\n */\nexport const getPropsPerDatatestIdPropTypes = (dataTestIdObj: DataTestId): PropsPerDataTestIdPropTypes => {\n const leafValues = getLeafValues(dataTestIdObj);\n const propsPerDataTestIdPropTypes = {} as PropsPerDataTestIdPropTypes;\n leafValues.forEach((leafValue) => {\n propsPerDataTestIdPropTypes[leafValue] = PropTypes.shape({\n 'aria-*': PropTypes.string.description('Aria related properties'),\n 'data-*': PropTypes.string.description('Any data property to attach to the root container'),\n 'on-*': PropTypes.func.description('Any supported React event'),\n 'all HTML attributes': PropTypes.any.description(\n 'HTML attributes such as id, className, autoComplete, href and so on',\n ),\n })\n .description(`an object containing the definitions for ${leafValue} aria and data props`)\n .dataTestId();\n });\n return propsPerDataTestIdPropTypes;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,iBAAiB;AAQ1B,MAAM,WAAW,CAAC,UAAgD,OAAO,UAAU;AAEnF,MAAM,eAAe,CAAC,UAAoD,OAAO,UAAU;AAsB3F,MAAM,gBAAgB,CAAC,QAA8B;AACnD,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,QAAM,aAAa,KAAK,OAAO,CAAC,KAAK,QAAQ;AAC3C,UAAM,QAAQ,IAAI,GAAG;AACrB,QAAI,SAAS,KAAK,GAAG;AACnB,UAAI,KAAK,GAAG,OAAO;AAAA,IACrB,WAAW,aAAa,KAAK,GAAG;AAC9B,UAAI,KAAK,GAAG,cAAc,KAAK,CAAC;AAAA,IAClC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAa;AACjB,SAAO;AACT;AAgCO,MAAM,iCAAiC,CAAC,kBAA2D;AACxG,QAAM,aAAa,cAAc,aAAa;AAC9C,QAAM,8BAA8B,CAAC;AACrC,aAAW,QAAQ,CAAC,cAAc;AAChC,gCAA4B,SAAS,IAAI,UAAU,MAAM;AAAA,MACvD,UAAU,UAAU,OAAO,YAAY,yBAAyB;AAAA,MAChE,UAAU,UAAU,OAAO,YAAY,mDAAmD;AAAA,MAC1F,QAAQ,UAAU,KAAK,YAAY,2BAA2B;AAAA,MAC9D,uBAAuB,UAAU,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF,CAAC,EACE,YAAY,4CAA4C,+BAA+B,EACvF,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,iBAAiB;AAQ1B,MAAM,WAAW,CAAC,UAAgD,OAAO,UAAU;AAEnF,MAAM,eAAe,CAAC,UAAoD,OAAO,UAAU;AAsB3F,MAAM,gBAAgB,CAAC,QAA8B;AACnD,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,QAAM,aAAa,KAAK,OAAO,CAAC,KAAK,QAAQ;AAC3C,UAAM,QAAQ,IAAI,GAAG;AACrB,QAAI,SAAS,KAAK,GAAG;AACnB,UAAI,KAAK,GAAG,KAAK,EAAE;AAAA,IACrB,WAAW,aAAa,KAAK,GAAG;AAC9B,UAAI,KAAK,GAAG,cAAc,KAAK,CAAC;AAAA,IAClC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAa;AACjB,SAAO;AACT;AAgCO,MAAM,iCAAiC,CAAC,kBAA2D;AACxG,QAAM,aAAa,cAAc,aAAa;AAC9C,QAAM,8BAA8B,CAAC;AACrC,aAAW,QAAQ,CAAC,cAAc;AAChC,gCAA4B,SAAS,IAAI,UAAU,MAAM;AAAA,MACvD,UAAU,UAAU,OAAO,YAAY,yBAAyB;AAAA,MAChE,UAAU,UAAU,OAAO,YAAY,mDAAmD;AAAA,MAC1F,QAAQ,UAAU,KAAK,YAAY,2BAA2B;AAAA,MAC9D,uBAAuB,UAAU,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF,CAAC,EACE,YAAY,4CAA4C,SAAS,sBAAsB,EACvF,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/propsPerSlot/getPropsPerSlotPropTypes.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable indent */\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport { PropTypes } from '../propTypes/index.js';\nimport type { ReactDescT } from '../propTypes/types.js';\n\ntype PropsPerSlotPropTypes<Name extends string, Slots extends Record<string, string>> = {\n [key in keyof Required<TypescriptHelpersT.PropsForGlobalOnSlots<Name, Slots>>]: ReactDescT;\n};\n\nconst getLeafValues = <Name extends string, Slots extends Record<string, string>>(name: Name, slots: Slots) => {\n const keys = Object.keys(slots);\n const leafValues = keys.reduce(\n (acc, key) => {\n const value = slots[key];\n acc.push(\n `ds${name.slice(2)}${value\n .split('-')\n .map((word) => word[0].toUpperCase() + word.slice(1))\n .join('')}` as keyof PropsPerSlotPropTypes<Name, Slots>,\n );\n return acc;\n },\n [] as (keyof PropsPerSlotPropTypes<Name, Slots>)[],\n );\n return leafValues;\n};\n\nexport const getPropsPerSlotPropTypes = <Name extends string, Slots extends Record<string, string>>(\n name: Name,\n slots: Slots,\n): PropsPerSlotPropTypes<Name, Slots> => {\n const leafValues = getLeafValues(name, slots);\n const propsPerSlotPropTypes = {} as PropsPerSlotPropTypes<Name, Slots>;\n leafValues.forEach((leafValue) => {\n propsPerSlotPropTypes[leafValue] = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n 'aria-*': PropTypes.string.description('Aria related properties'),\n 'data-*': PropTypes.string.description('Any data property to attach to the root container'),\n 'on-*': PropTypes.func.description('Any supported React event'),\n 'all HTML attributes': PropTypes.any.description(\n 'HTML attributes such as id, className, autoComplete, href and so on',\n ),\n }),\n ])\n .description(`An object or function containing the definitions for ${leafValue} aria and data props.`)\n .dataTestId();\n });\n return propsPerSlotPropTypes;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACEvB,SAAS,iBAAiB;AAO1B,MAAM,gBAAgB,CAA4D,MAAY,UAAiB;AAC7G,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,aAAa,KAAK;AAAA,IACtB,CAAC,KAAK,QAAQ;AACZ,YAAM,QAAQ,MAAM,GAAG;AACvB,UAAI;AAAA,QACF,KAAK,KAAK,MAAM,CAAC,IAAI,MAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EACnD,KAAK,EAAE;AAAA,MACZ;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,MAAM,2BAA2B,CACtC,MACA,UACuC;AACvC,QAAM,aAAa,cAAc,MAAM,KAAK;AAC5C,QAAM,wBAAwB,CAAC;AAC/B,aAAW,QAAQ,CAAC,cAAc;AAChC,0BAAsB,SAAS,IAAI,UAAU,UAAU;AAAA,MACrD,UAAU;AAAA,MACV,UAAU,MAAM;AAAA,QACd,UAAU,UAAU,OAAO,YAAY,yBAAyB;AAAA,QAChE,UAAU,UAAU,OAAO,YAAY,mDAAmD;AAAA,QAC1F,QAAQ,UAAU,KAAK,YAAY,2BAA2B;AAAA,QAC9D,uBAAuB,UAAU,IAAI;AAAA,UACnC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC,EACE,YAAY,wDAAwD,gCAAgC,EACpG,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable indent */\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport { PropTypes } from '../propTypes/index.js';\nimport type { ReactDescT } from '../propTypes/types.js';\n\ntype PropsPerSlotPropTypes<Name extends string, Slots extends Record<string, string>> = {\n [key in keyof Required<TypescriptHelpersT.PropsForGlobalOnSlots<Name, Slots>>]: ReactDescT;\n};\n\nconst getLeafValues = <Name extends string, Slots extends Record<string, string>>(name: Name, slots: Slots) => {\n const keys = Object.keys(slots);\n const leafValues = keys.reduce(\n (acc, key) => {\n const value = slots[key];\n acc.push(\n `ds${name.slice(2)}${value\n .split('-')\n .map((word) => word[0].toUpperCase() + word.slice(1))\n .join('')}` as keyof PropsPerSlotPropTypes<Name, Slots>,\n );\n return acc;\n },\n [] as (string & keyof PropsPerSlotPropTypes<Name, Slots>)[],\n );\n return leafValues;\n};\n\nexport const getPropsPerSlotPropTypes = <Name extends string, Slots extends Record<string, string>>(\n name: Name,\n slots: Slots,\n): PropsPerSlotPropTypes<Name, Slots> => {\n const leafValues = getLeafValues(name, slots);\n const propsPerSlotPropTypes = {} as PropsPerSlotPropTypes<Name, Slots>;\n leafValues.forEach((leafValue) => {\n propsPerSlotPropTypes[leafValue] = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({\n 'aria-*': PropTypes.string.description('Aria related properties'),\n 'data-*': PropTypes.string.description('Any data property to attach to the root container'),\n 'on-*': PropTypes.func.description('Any supported React event'),\n 'all HTML attributes': PropTypes.any.description(\n 'HTML attributes such as id, className, autoComplete, href and so on',\n ),\n }),\n ])\n .description(`An object or function containing the definitions for ${leafValue} aria and data props.`)\n .dataTestId();\n });\n return propsPerSlotPropTypes;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACEvB,SAAS,iBAAiB;AAO1B,MAAM,gBAAgB,CAA4D,MAAY,UAAiB;AAC7G,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,aAAa,KAAK;AAAA,IACtB,CAAC,KAAK,QAAQ;AACZ,YAAM,QAAQ,MAAM,GAAG;AACvB,UAAI;AAAA,QACF,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG,MAClB,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EACnD,KAAK,EAAE,CAAC;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,MAAM,2BAA2B,CACtC,MACA,UACuC;AACvC,QAAM,aAAa,cAAc,MAAM,KAAK;AAC5C,QAAM,wBAAwB,CAAC;AAC/B,aAAW,QAAQ,CAAC,cAAc;AAChC,0BAAsB,SAAS,IAAI,UAAU,UAAU;AAAA,MACrD,UAAU;AAAA,MACV,UAAU,MAAM;AAAA,QACd,UAAU,UAAU,OAAO,YAAY,yBAAyB;AAAA,QAChE,UAAU,UAAU,OAAO,YAAY,mDAAmD;AAAA,QAC1F,QAAQ,UAAU,KAAK,YAAY,2BAA2B;AAAA,QAC9D,uBAAuB,UAAU,IAAI;AAAA,UACnC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC,EACE,YAAY,wDAAwD,SAAS,uBAAuB,EACpG,WAAW;AAAA,EAChB,CAAC;AACD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/useDeprecateComponent/index.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable no-console */\nimport { useEffect } from 'react';\n\ninterface Props {\n componentName: string;\n version: string;\n}\n\nexport const useDeprecateComponent = ({ componentName, version }: Props) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== 'production')\n console.error(`Warning: ${componentName}:: this component will be deprecated in version: ${version}.`);\n }, [componentName, version]);\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,iBAAiB;AAOnB,MAAM,wBAAwB,CAAC,EAAE,eAAe,QAAQ,MAAa;AAC1E,YAAU,MAAM;AACd,QAAI;AACF,cAAQ,MAAM,YAAY,iEAAiE,UAAU;AAAA,EACzG,GAAG,CAAC,eAAe,OAAO,CAAC;AAC7B;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,iBAAiB;AAOnB,MAAM,wBAAwB,CAAC,EAAE,eAAe,QAAQ,MAAa;AAC1E,YAAU,MAAM;AACd,QAAI;AACF,cAAQ,MAAM,YAAY,aAAa,oDAAoD,OAAO,GAAG;AAAA,EACzG,GAAG,CAAC,eAAe,OAAO,CAAC;AAC7B;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/validation/errorTemplates.ts"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* 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: \"${String(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"],
5
- "mappings": "AAAA,YAAY,WAAW;ACChB,MAAM,iBAAiB,CAC5B,eACA,cACA,aACA,gBACS;AACT,QAAM,IAAI;AAAA,IACR,GAAG,uDAAuD;AAAA;AAAA;AAAA,eAG/C,OAAO,WAAW,OAAO,OAAO;AAAA,eAChC,YAAY,QAAQ,MAAM,MAAM;AAAA;AAAA,EAE7C;AACF;AAEO,MAAM,qBAAqB,CAAC,eAAuB,iBAA+B;AACvF,QAAM,IAAI;AAAA,IACR,GAAG,wCAAwC;AAAA;AAAA;AAAA,EAG7C;AACF;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACChB,MAAM,iBAAiB,CAC5B,eACA,cACA,aACA,gBACS;AACT,QAAM,IAAI;AAAA,IACR,GAAG,aAAa,0CAA0C,YAAY;AAAA;AAAA;AAAA,eAG3D,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW;AAAA,eAC3C,YAAY,QAAQ,MAAM,MAAM,CAAC;AAAA;AAAA,EAE9C;AACF;AAEO,MAAM,qBAAqB,CAAC,eAAuB,iBAA+B;AACvF,QAAM,IAAI;AAAA,IACR,GAAG,aAAa,2BAA2B,YAAY;AAAA;AAAA;AAAA,EAGzD;AACF;",
6
6
  "names": []
7
7
  }
@@ -6,12 +6,9 @@ const isUnion = (format) => {
6
6
  let depth = 0;
7
7
  let satisfies = false;
8
8
  format.split("").forEach((char) => {
9
- if (["{", "("].includes(char))
10
- depth += 1;
11
- else if (["}", ")"].includes(char))
12
- depth -= 1;
13
- else if (char === "|" && depth === 0)
14
- satisfies = true;
9
+ if (["{", "("].includes(char)) depth += 1;
10
+ else if (["}", ")"].includes(char)) depth -= 1;
11
+ else if (char === "|" && depth === 0) satisfies = true;
15
12
  });
16
13
  return satisfies;
17
14
  };
@@ -20,18 +17,14 @@ const isArray = (format) => !isUnion(format) && format.slice(-2) === "[]";
20
17
  const isObjectOf = (format) => format !== "object" && !isUnion(format) && format.startsWith("{ [key: string]: ");
21
18
  const isObject = (format) => format === "object" || !isUnion(format) && format[0] === "{" && format.slice(-1) === "}";
22
19
  const isFunction = (format) => {
23
- if (isUnion(format))
24
- return false;
25
- if (!format.startsWith("((") && format.slice(-1) !== ")")
26
- return false;
20
+ if (isUnion(format)) return false;
21
+ if (!format.startsWith("((") && format.slice(-1) !== ")") return false;
27
22
  let depth = 0;
28
23
  let arrowOccursAtDepth1 = false;
29
24
  for (let i = 0; i < format.length; i += 1) {
30
25
  const char = format[i];
31
- if (["{", "("].includes(char))
32
- depth += 1;
33
- else if (["}", ")"].includes(char))
34
- depth -= 1;
26
+ if (["{", "("].includes(char)) depth += 1;
27
+ else if (["}", ")"].includes(char)) depth -= 1;
35
28
  else if (i < format.length - 1 && format.slice(i, i + 2) === "=>") {
36
29
  arrowOccursAtDepth1 = arrowOccursAtDepth1 || depth === 1;
37
30
  }