codeforlife 2.14.9 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/{Countdown-B8t-gwPp.cjs → Countdown-BlWW6v4w.cjs} +2 -2
  2. package/dist/{Countdown-B8t-gwPp.cjs.map → Countdown-BlWW6v4w.cjs.map} +1 -1
  3. package/dist/{Countdown-B4alF-zt.js → Countdown-CawuOdYd.js} +2 -2
  4. package/dist/{Countdown-B4alF-zt.js.map → Countdown-CawuOdYd.js.map} +1 -1
  5. package/dist/{LinkButton-EQvTNtbi.js → LinkButton-BeFBbR7x.js} +2 -2
  6. package/dist/{LinkButton-EQvTNtbi.js.map → LinkButton-BeFBbR7x.js.map} +1 -1
  7. package/dist/{LinkButton-C_pRNvqs.cjs → LinkButton-CT5GnUkH.cjs} +2 -2
  8. package/dist/{LinkButton-C_pRNvqs.cjs.map → LinkButton-CT5GnUkH.cjs.map} +1 -1
  9. package/dist/{Navigate-CmvxpGu9.js → Navigate-DBH0qlzU.js} +2 -2
  10. package/dist/{Navigate-CmvxpGu9.js.map → Navigate-DBH0qlzU.js.map} +1 -1
  11. package/dist/{Navigate-N_lhvJqc.cjs → Navigate-w-jtzle_.cjs} +2 -2
  12. package/dist/{Navigate-N_lhvJqc.cjs.map → Navigate-w-jtzle_.cjs.map} +1 -1
  13. package/dist/api/endpoints/index.cjs.js +1 -1
  14. package/dist/api/endpoints/index.es.js +2 -2
  15. package/dist/api/index.cjs.js +1 -1
  16. package/dist/api/index.es.js +3 -3
  17. package/dist/api-CaEovEUU.cjs +2 -0
  18. package/dist/api-CaEovEUU.cjs.map +1 -0
  19. package/dist/{api-uh8UKwsU.js → api-r7TLkejc.js} +5 -5
  20. package/dist/api-r7TLkejc.js.map +1 -0
  21. package/dist/{auth-C3UdJFcP.js → auth-BXLedrZH.js} +3 -3
  22. package/dist/{auth-C3UdJFcP.js.map → auth-BXLedrZH.js.map} +1 -1
  23. package/dist/{auth--UJpsJx8.cjs → auth-DdbHSDCh.cjs} +2 -2
  24. package/dist/{auth--UJpsJx8.cjs.map → auth-DdbHSDCh.cjs.map} +1 -1
  25. package/dist/components/form/index.cjs.js +1 -1
  26. package/dist/components/form/index.es.js +1 -1
  27. package/dist/components/index.cjs.js +1 -1
  28. package/dist/components/index.es.js +7 -7
  29. package/dist/components/page/index.cjs.js +1 -1
  30. package/dist/components/page/index.es.js +1 -1
  31. package/dist/components/router/index.cjs.js +1 -1
  32. package/dist/components/router/index.es.js +2 -2
  33. package/dist/features/index.cjs.js +1 -1
  34. package/dist/features/index.es.js +4 -4
  35. package/dist/hooks/index.cjs.js +1 -1
  36. package/dist/hooks/index.es.js +1 -1
  37. package/dist/{index-BUG2k4XI.cjs → index-BepQQq9P.cjs} +2 -2
  38. package/dist/{index-BUG2k4XI.cjs.map → index-BepQQq9P.cjs.map} +1 -1
  39. package/dist/{index-Uk65JJpc.js → index-CTYVnDkQ.js} +28 -28
  40. package/dist/index-CTYVnDkQ.js.map +1 -0
  41. package/dist/index-CgShi-oQ.cjs +2 -0
  42. package/dist/index-CgShi-oQ.cjs.map +1 -0
  43. package/dist/{index-CYI_rUWI.js → index-DeEIS6R8.js} +3 -3
  44. package/dist/{index-CYI_rUWI.js.map → index-DeEIS6R8.js.map} +1 -1
  45. package/dist/object-C0ukOmY8.cjs +2 -0
  46. package/dist/object-C0ukOmY8.cjs.map +1 -0
  47. package/dist/object-CcXAH2vY.js +34 -0
  48. package/dist/object-CcXAH2vY.js.map +1 -0
  49. package/dist/schemas-B1L2Knka.cjs +2 -0
  50. package/dist/schemas-B1L2Knka.cjs.map +1 -0
  51. package/dist/schemas-BEK79Cdh.js +783 -0
  52. package/dist/schemas-BEK79Cdh.js.map +1 -0
  53. package/dist/server/server.cjs.js +3 -2
  54. package/dist/server/server.cjs.js.map +1 -1
  55. package/dist/server/server.es.js +26 -18
  56. package/dist/server/server.es.js.map +1 -1
  57. package/dist/src/api/models.d.ts +1 -1
  58. package/dist/src/server/server.d.ts +1 -0
  59. package/dist/src/utils/general.d.ts +0 -11
  60. package/dist/src/utils/location.d.ts +7 -0
  61. package/dist/src/utils/object.d.ts +11 -0
  62. package/dist/{urls-BG788CnL.js → urls-CQ1fgrB1.js} +2 -2
  63. package/dist/{urls-BG788CnL.js.map → urls-CQ1fgrB1.js.map} +1 -1
  64. package/dist/{urls-2gheISSO.cjs → urls-DJiVb_ID.cjs} +2 -2
  65. package/dist/{urls-2gheISSO.cjs.map → urls-DJiVb_ID.cjs.map} +1 -1
  66. package/dist/utils/api.cjs.js +1 -1
  67. package/dist/utils/api.es.js +2 -2
  68. package/dist/utils/form.cjs.js +1 -1
  69. package/dist/utils/form.cjs.js.map +1 -1
  70. package/dist/utils/form.es.js +16 -16
  71. package/dist/utils/form.es.js.map +1 -1
  72. package/dist/utils/general.cjs.js +1 -1
  73. package/dist/utils/general.cjs.js.map +1 -1
  74. package/dist/utils/general.es.js +31 -947
  75. package/dist/utils/general.es.js.map +1 -1
  76. package/dist/utils/router.cjs.js +1 -1
  77. package/dist/utils/router.es.js +1 -1
  78. package/package.json +4 -4
  79. package/dist/api-G8CV5bUa.cjs +0 -2
  80. package/dist/api-G8CV5bUa.cjs.map +0 -1
  81. package/dist/api-uh8UKwsU.js.map +0 -1
  82. package/dist/index-BhTYGZm3.cjs +0 -2
  83. package/dist/index-BhTYGZm3.cjs.map +0 -1
  84. package/dist/index-Uk65JJpc.js.map +0 -1
  85. package/dist/schemas-UIk-meAN.js +0 -162
  86. package/dist/schemas-UIk-meAN.js.map +0 -1
  87. package/dist/schemas-hIW9-H6-.cjs +0 -2
  88. package/dist/schemas-hIW9-H6-.cjs.map +0 -1
  89. /package/dist/src/utils/{general.test.d.ts → object.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"form.cjs.js","sources":["../../src/utils/form.ts"],"sourcesContent":["import type { FieldValidator, FormikHelpers } from \"formik\"\nimport { type Schema, type ValidateOptions, ValidationError } from \"yup\"\nimport type { TypedMutationTrigger } from \"@reduxjs/toolkit/query/react\"\n\nimport { excludeKeyPaths, getKeyPaths, getNestedProperty } from \"./general\"\n\nexport type FormValues = Record<string, any>\n\nexport function isFormError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n error.status === 400 &&\n \"data\" in error &&\n typeof error.data === \"object\" &&\n error.data !== null\n )\n}\n\nexport function setFormErrors(\n error: unknown,\n setErrors: (errors: object) => void,\n): void {\n if (!isFormError(error)) throw error\n\n const data = Object.fromEntries(\n Object.entries((error as { data: object }).data).map(([field, errors]) => {\n if (Array.isArray(errors)) errors = errors.join(\". \")\n return [field, errors]\n }),\n )\n\n setErrors(data)\n}\n\nexport type SubmitFormOptions<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n> = Partial<{\n exclude: string[]\n include: string[]\n onlyDirtyValues: boolean\n then: (\n result: ResultType,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n catch: (\n error: unknown,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n finally: (values: Values, helpers: FormikHelpers<Values>) => void\n}> &\n (Values extends QueryArg\n ? { clean?: (values: Values) => QueryArg }\n : { clean: (values: Values) => QueryArg })\n\nexport type SubmitFormHandler<Values extends FormValues> = (\n values: Values,\n helpers: FormikHelpers<Values>,\n) => void | Promise<any>\n\nexport function submitForm<\n Values extends QueryArg,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values> {\n const {\n include,\n onlyDirtyValues = false,\n then,\n catch: _catch,\n finally: _finally,\n } = options || {}\n let { exclude = [] } = options || {}\n\n return (values, helpers) => {\n let arg =\n options && options.clean\n ? options.clean(values as QueryArg & FormValues)\n : (values as unknown as QueryArg)\n\n if (onlyDirtyValues) {\n exclude = [\n ...exclude,\n ...getCleanNames(values, initialValues).filter(\n cleanName => !exclude.includes(cleanName),\n ),\n ]\n }\n\n if (include) exclude = exclude.filter(name => !include.includes(name))\n\n if (exclude.length) arg = excludeKeyPaths(arg, exclude) as QueryArg\n\n trigger(arg)\n .unwrap()\n .then(result => {\n if (then) then(result, values, helpers)\n })\n .catch(error => {\n if (_catch) _catch(error, values, helpers)\n setFormErrors(error, helpers.setErrors)\n })\n .finally(() => {\n if (_finally) _finally(values, helpers)\n })\n }\n}\n\nexport function schemaToFieldValidator(\n schema: Schema,\n options?: ValidateOptions,\n): FieldValidator {\n return async value => {\n try {\n await schema.validate(value, options)\n } catch (error) {\n if (error instanceof ValidationError) {\n return error.errors.join(\". \")\n }\n\n throw error\n }\n }\n}\n\n// Checking if individual fields are dirty is not currently supported.\n// https://github.com/jaredpalmer/formik/issues/1421\nexport function getDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): Record<string, boolean> {\n if (!names) names = getKeyPaths(values)\n\n return Object.fromEntries(\n names.map(name => [name, isDirty(values, initialValues, name)]),\n )\n}\n\nexport function isDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n name: string,\n): boolean {\n const value: unknown = getNestedProperty(values, name)\n const initialValue: unknown = getNestedProperty(initialValues, name)\n\n return value !== initialValue\n}\n\nexport function getCleanNames<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): string[] {\n return Object.entries(getDirty(values, initialValues, names))\n .filter(\n ([\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n isDirty,\n ]) => !isDirty,\n )\n .map(([name]) => name)\n}\n"],"names":["isFormError","error","setFormErrors","setErrors","data","field","errors","submitForm","trigger","initialValues","options","include","onlyDirtyValues","then","_catch","_finally","exclude","values","helpers","arg","getCleanNames","cleanName","name","excludeKeyPaths","result","schemaToFieldValidator","schema","value","ValidationError","getDirty","names","getKeyPaths","isDirty","getNestedProperty","initialValue","_"],"mappings":"qIAQO,SAASA,EAAYC,EAAyB,CACnD,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,WAAYA,GACZA,EAAM,SAAW,KACjB,SAAUA,GACV,OAAOA,EAAM,MAAS,UACtBA,EAAM,OAAS,IAEnB,CAEO,SAASC,EACdD,EACAE,EACM,CACN,GAAI,CAACH,EAAYC,CAAK,EAAG,MAAMA,EAE/B,MAAMG,EAAO,OAAO,YAClB,OAAO,QAASH,EAA2B,IAAI,EAAE,IAAI,CAAC,CAACI,EAAOC,CAAM,KAC9D,MAAM,QAAQA,CAAM,IAAGA,EAASA,EAAO,KAAK,IAAI,GAC7C,CAACD,EAAOC,CAAM,EACtB,CAAA,EAGHH,EAAUC,CAAI,CAChB,CAmDO,SAASG,EAKdC,EACAC,EACAC,EAC2B,CAC3B,KAAM,CACJ,QAAAC,EACA,gBAAAC,EAAkB,GAClB,KAAAC,EACA,MAAOC,EACP,QAASC,CAAA,EACPL,GAAW,CAAA,EACf,GAAI,CAAE,QAAAM,EAAU,EAAC,EAAMN,GAAW,CAAA,EAElC,MAAO,CAACO,EAAQC,IAAY,CAC1B,IAAIC,EACFT,GAAWA,EAAQ,MACfA,EAAQ,MAAMO,CAA+B,EAC5CA,EAEHL,IACFI,EAAU,CACR,GAAGA,EACH,GAAGI,EAAcH,EAAQR,CAAa,EAAE,OACtCY,GAAa,CAACL,EAAQ,SAASK,CAAS,CAAA,CAC1C,GAIAV,MAAmBK,EAAQ,UAAe,CAACL,EAAQ,SAASW,CAAI,CAAC,GAEjEN,EAAQ,SAAQG,EAAMI,EAAAA,gBAAgBJ,EAAKH,CAAO,GAEtDR,EAAQW,CAAG,EACR,OAAA,EACA,KAAKK,GAAU,CACVX,GAAMA,EAAKW,EAAQP,EAAQC,CAAO,CACxC,CAAC,EACA,MAAMjB,GAAS,CACVa,GAAQA,EAAOb,EAAOgB,EAAQC,CAAO,EACzChB,EAAcD,EAAOiB,EAAQ,SAAS,CACxC,CAAC,EACA,QAAQ,IAAM,CACTH,GAAUA,EAASE,EAAQC,CAAO,CACxC,CAAC,CACL,CACF,CAEO,SAASO,EACdC,EACAhB,EACgB,CAChB,MAAO,OAAMiB,GAAS,CACpB,GAAI,CACF,MAAMD,EAAO,SAASC,EAAOjB,CAAO,CACtC,OAAST,EAAO,CACd,GAAIA,aAAiB2B,EAAAA,gBACnB,OAAO3B,EAAM,OAAO,KAAK,IAAI,EAG/B,MAAMA,CACR,CACF,CACF,CAIO,SAAS4B,EACdZ,EACAR,EACAqB,EACyB,CACzB,OAAKA,IAAOA,EAAQC,EAAAA,YAAYd,CAAM,GAE/B,OAAO,YACZa,EAAM,IAAIR,GAAQ,CAACA,EAAMU,EAAQf,EAAQR,EAAea,CAAI,CAAC,CAAC,CAAA,CAElE,CAEO,SAASU,EACdf,EACAR,EACAa,EACS,CACT,MAAMK,EAAiBM,EAAAA,kBAAkBhB,EAAQK,CAAI,EAC/CY,EAAwBD,EAAAA,kBAAkBxB,EAAea,CAAI,EAEnE,OAAOK,IAAUO,CACnB,CAEO,SAASd,EACdH,EACAR,EACAqB,EACU,CACV,OAAO,OAAO,QAAQD,EAASZ,EAAQR,EAAeqB,CAAK,CAAC,EACzD,OACC,CAAC,CACCK,EACAH,CAAA,IACI,CAACA,CAAA,EAER,IAAI,CAAC,CAACV,CAAI,IAAMA,CAAI,CACzB"}
1
+ {"version":3,"file":"form.cjs.js","sources":["../../src/utils/form.ts"],"sourcesContent":["import type { FieldValidator, FormikHelpers } from \"formik\"\nimport { type Schema, type ValidateOptions, ValidationError } from \"yup\"\nimport type { TypedMutationTrigger } from \"@reduxjs/toolkit/query/react\"\n\nimport { excludeKeyPaths, getKeyPaths, getNestedProperty } from \"./object\"\n\nexport type FormValues = Record<string, any>\n\nexport function isFormError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n error.status === 400 &&\n \"data\" in error &&\n typeof error.data === \"object\" &&\n error.data !== null\n )\n}\n\nexport function setFormErrors(\n error: unknown,\n setErrors: (errors: object) => void,\n): void {\n if (!isFormError(error)) throw error\n\n const data = Object.fromEntries(\n Object.entries((error as { data: object }).data).map(([field, errors]) => {\n if (Array.isArray(errors)) errors = errors.join(\". \")\n return [field, errors]\n }),\n )\n\n setErrors(data)\n}\n\nexport type SubmitFormOptions<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n> = Partial<{\n exclude: string[]\n include: string[]\n onlyDirtyValues: boolean\n then: (\n result: ResultType,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n catch: (\n error: unknown,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n finally: (values: Values, helpers: FormikHelpers<Values>) => void\n}> &\n (Values extends QueryArg\n ? { clean?: (values: Values) => QueryArg }\n : { clean: (values: Values) => QueryArg })\n\nexport type SubmitFormHandler<Values extends FormValues> = (\n values: Values,\n helpers: FormikHelpers<Values>,\n) => void | Promise<any>\n\nexport function submitForm<\n Values extends QueryArg,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values> {\n const {\n include,\n onlyDirtyValues = false,\n then,\n catch: _catch,\n finally: _finally,\n } = options || {}\n let { exclude = [] } = options || {}\n\n return (values, helpers) => {\n let arg =\n options && options.clean\n ? options.clean(values as QueryArg & FormValues)\n : (values as unknown as QueryArg)\n\n if (onlyDirtyValues) {\n exclude = [\n ...exclude,\n ...getCleanNames(values, initialValues).filter(\n cleanName => !exclude.includes(cleanName),\n ),\n ]\n }\n\n if (include) exclude = exclude.filter(name => !include.includes(name))\n\n if (exclude.length) arg = excludeKeyPaths(arg, exclude) as QueryArg\n\n trigger(arg)\n .unwrap()\n .then(result => {\n if (then) then(result, values, helpers)\n })\n .catch(error => {\n if (_catch) _catch(error, values, helpers)\n setFormErrors(error, helpers.setErrors)\n })\n .finally(() => {\n if (_finally) _finally(values, helpers)\n })\n }\n}\n\nexport function schemaToFieldValidator(\n schema: Schema,\n options?: ValidateOptions,\n): FieldValidator {\n return async value => {\n try {\n await schema.validate(value, options)\n } catch (error) {\n if (error instanceof ValidationError) {\n return error.errors.join(\". \")\n }\n\n throw error\n }\n }\n}\n\n// Checking if individual fields are dirty is not currently supported.\n// https://github.com/jaredpalmer/formik/issues/1421\nexport function getDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): Record<string, boolean> {\n if (!names) names = getKeyPaths(values)\n\n return Object.fromEntries(\n names.map(name => [name, isDirty(values, initialValues, name)]),\n )\n}\n\nexport function isDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n name: string,\n): boolean {\n const value: unknown = getNestedProperty(values, name)\n const initialValue: unknown = getNestedProperty(initialValues, name)\n\n return value !== initialValue\n}\n\nexport function getCleanNames<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): string[] {\n return Object.entries(getDirty(values, initialValues, names))\n .filter(\n ([\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n isDirty,\n ]) => !isDirty,\n )\n .map(([name]) => name)\n}\n"],"names":["isFormError","error","setFormErrors","setErrors","data","field","errors","submitForm","trigger","initialValues","options","include","onlyDirtyValues","then","_catch","_finally","exclude","values","helpers","arg","getCleanNames","cleanName","name","excludeKeyPaths","result","schemaToFieldValidator","schema","value","ValidationError","getDirty","names","getKeyPaths","isDirty","getNestedProperty","initialValue","_"],"mappings":"2IAQO,SAASA,EAAYC,EAAyB,CACnD,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,WAAYA,GACZA,EAAM,SAAW,KACjB,SAAUA,GACV,OAAOA,EAAM,MAAS,UACtBA,EAAM,OAAS,IAEnB,CAEO,SAASC,EACdD,EACAE,EACM,CACN,GAAI,CAACH,EAAYC,CAAK,EAAG,MAAMA,EAE/B,MAAMG,EAAO,OAAO,YAClB,OAAO,QAASH,EAA2B,IAAI,EAAE,IAAI,CAAC,CAACI,EAAOC,CAAM,KAC9D,MAAM,QAAQA,CAAM,IAAGA,EAASA,EAAO,KAAK,IAAI,GAC7C,CAACD,EAAOC,CAAM,EACtB,CAAA,EAGHH,EAAUC,CAAI,CAChB,CAmDO,SAASG,EAKdC,EACAC,EACAC,EAC2B,CAC3B,KAAM,CACJ,QAAAC,EACA,gBAAAC,EAAkB,GAClB,KAAAC,EACA,MAAOC,EACP,QAASC,CAAA,EACPL,GAAW,CAAA,EACf,GAAI,CAAE,QAAAM,EAAU,EAAC,EAAMN,GAAW,CAAA,EAElC,MAAO,CAACO,EAAQC,IAAY,CAC1B,IAAIC,EACFT,GAAWA,EAAQ,MACfA,EAAQ,MAAMO,CAA+B,EAC5CA,EAEHL,IACFI,EAAU,CACR,GAAGA,EACH,GAAGI,EAAcH,EAAQR,CAAa,EAAE,OACtCY,GAAa,CAACL,EAAQ,SAASK,CAAS,CAAA,CAC1C,GAIAV,MAAmBK,EAAQ,UAAe,CAACL,EAAQ,SAASW,CAAI,CAAC,GAEjEN,EAAQ,SAAQG,EAAMI,EAAAA,gBAAgBJ,EAAKH,CAAO,GAEtDR,EAAQW,CAAG,EACR,OAAA,EACA,KAAKK,GAAU,CACVX,GAAMA,EAAKW,EAAQP,EAAQC,CAAO,CACxC,CAAC,EACA,MAAMjB,GAAS,CACVa,GAAQA,EAAOb,EAAOgB,EAAQC,CAAO,EACzChB,EAAcD,EAAOiB,EAAQ,SAAS,CACxC,CAAC,EACA,QAAQ,IAAM,CACTH,GAAUA,EAASE,EAAQC,CAAO,CACxC,CAAC,CACL,CACF,CAEO,SAASO,EACdC,EACAhB,EACgB,CAChB,MAAO,OAAMiB,GAAS,CACpB,GAAI,CACF,MAAMD,EAAO,SAASC,EAAOjB,CAAO,CACtC,OAAST,EAAO,CACd,GAAIA,aAAiB2B,EAAAA,gBACnB,OAAO3B,EAAM,OAAO,KAAK,IAAI,EAG/B,MAAMA,CACR,CACF,CACF,CAIO,SAAS4B,EACdZ,EACAR,EACAqB,EACyB,CACzB,OAAKA,IAAOA,EAAQC,EAAAA,YAAYd,CAAM,GAE/B,OAAO,YACZa,EAAM,IAAIR,GAAQ,CAACA,EAAMU,EAAQf,EAAQR,EAAea,CAAI,CAAC,CAAC,CAAA,CAElE,CAEO,SAASU,EACdf,EACAR,EACAa,EACS,CACT,MAAMK,EAAiBM,EAAAA,kBAAkBhB,EAAQK,CAAI,EAC/CY,EAAwBD,EAAAA,kBAAkBxB,EAAea,CAAI,EAEnE,OAAOK,IAAUO,CACnB,CAEO,SAASd,EACdH,EACAR,EACAqB,EACU,CACV,OAAO,OAAO,QAAQD,EAASZ,EAAQR,EAAeqB,CAAK,CAAC,EACzD,OACC,CAAC,CACCK,EACAH,CAAA,IACI,CAACA,CAAA,EAER,IAAI,CAAC,CAACV,CAAI,IAAMA,CAAI,CACzB"}
@@ -1,37 +1,37 @@
1
1
  import { ValidationError as m } from "yup";
2
- import { excludeKeyPaths as h, getKeyPaths as j, getNestedProperty as s } from "./general.es.js";
2
+ import { e as h, g as j, a as d } from "../object-CcXAH2vY.js";
3
3
  function b(t) {
4
4
  return typeof t == "object" && t !== null && "status" in t && t.status === 400 && "data" in t && typeof t.data == "object" && t.data !== null;
5
5
  }
6
6
  function g(t, a) {
7
7
  if (!b(t)) throw t;
8
8
  const i = Object.fromEntries(
9
- Object.entries(t.data).map(([n, c]) => (Array.isArray(c) && (c = c.join(". ")), [n, c]))
9
+ Object.entries(t.data).map(([n, e]) => (Array.isArray(e) && (e = e.join(". ")), [n, e]))
10
10
  );
11
11
  a(i);
12
12
  }
13
13
  function p(t, a, i) {
14
14
  const {
15
15
  include: n,
16
- onlyDirtyValues: c = !1,
16
+ onlyDirtyValues: e = !1,
17
17
  then: o,
18
- catch: y,
19
- finally: d
18
+ catch: s,
19
+ finally: y
20
20
  } = i || {};
21
21
  let { exclude: f = [] } = i || {};
22
22
  return (r, l) => {
23
23
  let u = i && i.clean ? i.clean(r) : r;
24
- c && (f = [
24
+ e && (f = [
25
25
  ...f,
26
26
  ...F(r, a).filter(
27
- (e) => !f.includes(e)
27
+ (c) => !f.includes(c)
28
28
  )
29
- ]), n && (f = f.filter((e) => !n.includes(e))), f.length && (u = h(u, f)), t(u).unwrap().then((e) => {
30
- o && o(e, r, l);
31
- }).catch((e) => {
32
- y && y(e, r, l), g(e, l.setErrors);
29
+ ]), n && (f = f.filter((c) => !n.includes(c))), f.length && (u = h(u, f)), t(u).unwrap().then((c) => {
30
+ o && o(c, r, l);
31
+ }).catch((c) => {
32
+ s && s(c, r, l), g(c, l.setErrors);
33
33
  }).finally(() => {
34
- d && d(r, l);
34
+ y && y(r, l);
35
35
  });
36
36
  };
37
37
  }
@@ -52,16 +52,16 @@ function E(t, a, i) {
52
52
  );
53
53
  }
54
54
  function w(t, a, i) {
55
- const n = s(t, i), c = s(a, i);
56
- return n !== c;
55
+ const n = d(t, i), e = d(a, i);
56
+ return n !== e;
57
57
  }
58
58
  function F(t, a, i) {
59
59
  return Object.entries(E(t, a, i)).filter(
60
60
  ([
61
61
  n,
62
62
  // eslint-disable-line @typescript-eslint/no-unused-vars
63
- c
64
- ]) => !c
63
+ e
64
+ ]) => !e
65
65
  ).map(([n]) => n);
66
66
  }
67
67
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"form.es.js","sources":["../../src/utils/form.ts"],"sourcesContent":["import type { FieldValidator, FormikHelpers } from \"formik\"\nimport { type Schema, type ValidateOptions, ValidationError } from \"yup\"\nimport type { TypedMutationTrigger } from \"@reduxjs/toolkit/query/react\"\n\nimport { excludeKeyPaths, getKeyPaths, getNestedProperty } from \"./general\"\n\nexport type FormValues = Record<string, any>\n\nexport function isFormError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n error.status === 400 &&\n \"data\" in error &&\n typeof error.data === \"object\" &&\n error.data !== null\n )\n}\n\nexport function setFormErrors(\n error: unknown,\n setErrors: (errors: object) => void,\n): void {\n if (!isFormError(error)) throw error\n\n const data = Object.fromEntries(\n Object.entries((error as { data: object }).data).map(([field, errors]) => {\n if (Array.isArray(errors)) errors = errors.join(\". \")\n return [field, errors]\n }),\n )\n\n setErrors(data)\n}\n\nexport type SubmitFormOptions<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n> = Partial<{\n exclude: string[]\n include: string[]\n onlyDirtyValues: boolean\n then: (\n result: ResultType,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n catch: (\n error: unknown,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n finally: (values: Values, helpers: FormikHelpers<Values>) => void\n}> &\n (Values extends QueryArg\n ? { clean?: (values: Values) => QueryArg }\n : { clean: (values: Values) => QueryArg })\n\nexport type SubmitFormHandler<Values extends FormValues> = (\n values: Values,\n helpers: FormikHelpers<Values>,\n) => void | Promise<any>\n\nexport function submitForm<\n Values extends QueryArg,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values> {\n const {\n include,\n onlyDirtyValues = false,\n then,\n catch: _catch,\n finally: _finally,\n } = options || {}\n let { exclude = [] } = options || {}\n\n return (values, helpers) => {\n let arg =\n options && options.clean\n ? options.clean(values as QueryArg & FormValues)\n : (values as unknown as QueryArg)\n\n if (onlyDirtyValues) {\n exclude = [\n ...exclude,\n ...getCleanNames(values, initialValues).filter(\n cleanName => !exclude.includes(cleanName),\n ),\n ]\n }\n\n if (include) exclude = exclude.filter(name => !include.includes(name))\n\n if (exclude.length) arg = excludeKeyPaths(arg, exclude) as QueryArg\n\n trigger(arg)\n .unwrap()\n .then(result => {\n if (then) then(result, values, helpers)\n })\n .catch(error => {\n if (_catch) _catch(error, values, helpers)\n setFormErrors(error, helpers.setErrors)\n })\n .finally(() => {\n if (_finally) _finally(values, helpers)\n })\n }\n}\n\nexport function schemaToFieldValidator(\n schema: Schema,\n options?: ValidateOptions,\n): FieldValidator {\n return async value => {\n try {\n await schema.validate(value, options)\n } catch (error) {\n if (error instanceof ValidationError) {\n return error.errors.join(\". \")\n }\n\n throw error\n }\n }\n}\n\n// Checking if individual fields are dirty is not currently supported.\n// https://github.com/jaredpalmer/formik/issues/1421\nexport function getDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): Record<string, boolean> {\n if (!names) names = getKeyPaths(values)\n\n return Object.fromEntries(\n names.map(name => [name, isDirty(values, initialValues, name)]),\n )\n}\n\nexport function isDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n name: string,\n): boolean {\n const value: unknown = getNestedProperty(values, name)\n const initialValue: unknown = getNestedProperty(initialValues, name)\n\n return value !== initialValue\n}\n\nexport function getCleanNames<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): string[] {\n return Object.entries(getDirty(values, initialValues, names))\n .filter(\n ([\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n isDirty,\n ]) => !isDirty,\n )\n .map(([name]) => name)\n}\n"],"names":["isFormError","error","setFormErrors","setErrors","data","field","errors","submitForm","trigger","initialValues","options","include","onlyDirtyValues","then","_catch","_finally","exclude","values","helpers","arg","getCleanNames","cleanName","name","excludeKeyPaths","result","schemaToFieldValidator","schema","value","ValidationError","getDirty","names","getKeyPaths","isDirty","getNestedProperty","initialValue","_"],"mappings":";;AAQO,SAASA,EAAYC,GAAyB;AACnD,SACE,OAAOA,KAAU,YACjBA,MAAU,QACV,YAAYA,KACZA,EAAM,WAAW,OACjB,UAAUA,KACV,OAAOA,EAAM,QAAS,YACtBA,EAAM,SAAS;AAEnB;AAEO,SAASC,EACdD,GACAE,GACM;AACN,MAAI,CAACH,EAAYC,CAAK,EAAG,OAAMA;AAE/B,QAAMG,IAAO,OAAO;AAAA,IAClB,OAAO,QAASH,EAA2B,IAAI,EAAE,IAAI,CAAC,CAACI,GAAOC,CAAM,OAC9D,MAAM,QAAQA,CAAM,MAAGA,IAASA,EAAO,KAAK,IAAI,IAC7C,CAACD,GAAOC,CAAM,EACtB;AAAA,EAAA;AAGH,EAAAH,EAAUC,CAAI;AAChB;AAmDO,SAASG,EAKdC,GACAC,GACAC,GAC2B;AAC3B,QAAM;AAAA,IACJ,SAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,MAAAC;AAAA,IACA,OAAOC;AAAA,IACP,SAASC;AAAA,EAAA,IACPL,KAAW,CAAA;AACf,MAAI,EAAE,SAAAM,IAAU,GAAC,IAAMN,KAAW,CAAA;AAElC,SAAO,CAACO,GAAQC,MAAY;AAC1B,QAAIC,IACFT,KAAWA,EAAQ,QACfA,EAAQ,MAAMO,CAA+B,IAC5CA;AAEP,IAAIL,MACFI,IAAU;AAAA,MACR,GAAGA;AAAA,MACH,GAAGI,EAAcH,GAAQR,CAAa,EAAE;AAAA,QACtC,CAAAY,MAAa,CAACL,EAAQ,SAASK,CAAS;AAAA,MAAA;AAAA,IAC1C,IAIAV,UAAmBK,EAAQ,OAAO,OAAQ,CAACL,EAAQ,SAASW,CAAI,CAAC,IAEjEN,EAAQ,WAAQG,IAAMI,EAAgBJ,GAAKH,CAAO,IAEtDR,EAAQW,CAAG,EACR,OAAA,EACA,KAAK,CAAAK,MAAU;AACd,MAAIX,KAAMA,EAAKW,GAAQP,GAAQC,CAAO;AAAA,IACxC,CAAC,EACA,MAAM,CAAAjB,MAAS;AACd,MAAIa,KAAQA,EAAOb,GAAOgB,GAAQC,CAAO,GACzChB,EAAcD,GAAOiB,EAAQ,SAAS;AAAA,IACxC,CAAC,EACA,QAAQ,MAAM;AACb,MAAIH,KAAUA,EAASE,GAAQC,CAAO;AAAA,IACxC,CAAC;AAAA,EACL;AACF;AAEO,SAASO,EACdC,GACAhB,GACgB;AAChB,SAAO,OAAMiB,MAAS;AACpB,QAAI;AACF,YAAMD,EAAO,SAASC,GAAOjB,CAAO;AAAA,IACtC,SAAST,GAAO;AACd,UAAIA,aAAiB2B;AACnB,eAAO3B,EAAM,OAAO,KAAK,IAAI;AAG/B,YAAMA;AAAA,IACR;AAAA,EACF;AACF;AAIO,SAAS4B,EACdZ,GACAR,GACAqB,GACyB;AACzB,SAAKA,MAAOA,IAAQC,EAAYd,CAAM,IAE/B,OAAO;AAAA,IACZa,EAAM,IAAI,CAAAR,MAAQ,CAACA,GAAMU,EAAQf,GAAQR,GAAea,CAAI,CAAC,CAAC;AAAA,EAAA;AAElE;AAEO,SAASU,EACdf,GACAR,GACAa,GACS;AACT,QAAMK,IAAiBM,EAAkBhB,GAAQK,CAAI,GAC/CY,IAAwBD,EAAkBxB,GAAea,CAAI;AAEnE,SAAOK,MAAUO;AACnB;AAEO,SAASd,EACdH,GACAR,GACAqB,GACU;AACV,SAAO,OAAO,QAAQD,EAASZ,GAAQR,GAAeqB,CAAK,CAAC,EACzD;AAAA,IACC,CAAC;AAAA,MACCK;AAAA;AAAA,MACAH;AAAAA,IAAA,MACI,CAACA;AAAAA,EAAA,EAER,IAAI,CAAC,CAACV,CAAI,MAAMA,CAAI;AACzB;"}
1
+ {"version":3,"file":"form.es.js","sources":["../../src/utils/form.ts"],"sourcesContent":["import type { FieldValidator, FormikHelpers } from \"formik\"\nimport { type Schema, type ValidateOptions, ValidationError } from \"yup\"\nimport type { TypedMutationTrigger } from \"@reduxjs/toolkit/query/react\"\n\nimport { excludeKeyPaths, getKeyPaths, getNestedProperty } from \"./object\"\n\nexport type FormValues = Record<string, any>\n\nexport function isFormError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"status\" in error &&\n error.status === 400 &&\n \"data\" in error &&\n typeof error.data === \"object\" &&\n error.data !== null\n )\n}\n\nexport function setFormErrors(\n error: unknown,\n setErrors: (errors: object) => void,\n): void {\n if (!isFormError(error)) throw error\n\n const data = Object.fromEntries(\n Object.entries((error as { data: object }).data).map(([field, errors]) => {\n if (Array.isArray(errors)) errors = errors.join(\". \")\n return [field, errors]\n }),\n )\n\n setErrors(data)\n}\n\nexport type SubmitFormOptions<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n> = Partial<{\n exclude: string[]\n include: string[]\n onlyDirtyValues: boolean\n then: (\n result: ResultType,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n catch: (\n error: unknown,\n values: Values,\n helpers: FormikHelpers<Values>,\n ) => void\n finally: (values: Values, helpers: FormikHelpers<Values>) => void\n}> &\n (Values extends QueryArg\n ? { clean?: (values: Values) => QueryArg }\n : { clean: (values: Values) => QueryArg })\n\nexport type SubmitFormHandler<Values extends FormValues> = (\n values: Values,\n helpers: FormikHelpers<Values>,\n) => void | Promise<any>\n\nexport function submitForm<\n Values extends QueryArg,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values>\n\nexport function submitForm<\n Values extends FormValues,\n QueryArg extends FormValues,\n ResultType,\n>(\n trigger: TypedMutationTrigger<ResultType, QueryArg, any>,\n initialValues: Values,\n options?: SubmitFormOptions<Values, QueryArg, ResultType>,\n): SubmitFormHandler<Values> {\n const {\n include,\n onlyDirtyValues = false,\n then,\n catch: _catch,\n finally: _finally,\n } = options || {}\n let { exclude = [] } = options || {}\n\n return (values, helpers) => {\n let arg =\n options && options.clean\n ? options.clean(values as QueryArg & FormValues)\n : (values as unknown as QueryArg)\n\n if (onlyDirtyValues) {\n exclude = [\n ...exclude,\n ...getCleanNames(values, initialValues).filter(\n cleanName => !exclude.includes(cleanName),\n ),\n ]\n }\n\n if (include) exclude = exclude.filter(name => !include.includes(name))\n\n if (exclude.length) arg = excludeKeyPaths(arg, exclude) as QueryArg\n\n trigger(arg)\n .unwrap()\n .then(result => {\n if (then) then(result, values, helpers)\n })\n .catch(error => {\n if (_catch) _catch(error, values, helpers)\n setFormErrors(error, helpers.setErrors)\n })\n .finally(() => {\n if (_finally) _finally(values, helpers)\n })\n }\n}\n\nexport function schemaToFieldValidator(\n schema: Schema,\n options?: ValidateOptions,\n): FieldValidator {\n return async value => {\n try {\n await schema.validate(value, options)\n } catch (error) {\n if (error instanceof ValidationError) {\n return error.errors.join(\". \")\n }\n\n throw error\n }\n }\n}\n\n// Checking if individual fields are dirty is not currently supported.\n// https://github.com/jaredpalmer/formik/issues/1421\nexport function getDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): Record<string, boolean> {\n if (!names) names = getKeyPaths(values)\n\n return Object.fromEntries(\n names.map(name => [name, isDirty(values, initialValues, name)]),\n )\n}\n\nexport function isDirty<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n name: string,\n): boolean {\n const value: unknown = getNestedProperty(values, name)\n const initialValue: unknown = getNestedProperty(initialValues, name)\n\n return value !== initialValue\n}\n\nexport function getCleanNames<Values extends FormValues>(\n values: Values,\n initialValues: Values,\n names?: string[],\n): string[] {\n return Object.entries(getDirty(values, initialValues, names))\n .filter(\n ([\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n isDirty,\n ]) => !isDirty,\n )\n .map(([name]) => name)\n}\n"],"names":["isFormError","error","setFormErrors","setErrors","data","field","errors","submitForm","trigger","initialValues","options","include","onlyDirtyValues","then","_catch","_finally","exclude","values","helpers","arg","getCleanNames","cleanName","name","excludeKeyPaths","result","schemaToFieldValidator","schema","value","ValidationError","getDirty","names","getKeyPaths","isDirty","getNestedProperty","initialValue","_"],"mappings":";;AAQO,SAASA,EAAYC,GAAyB;AACnD,SACE,OAAOA,KAAU,YACjBA,MAAU,QACV,YAAYA,KACZA,EAAM,WAAW,OACjB,UAAUA,KACV,OAAOA,EAAM,QAAS,YACtBA,EAAM,SAAS;AAEnB;AAEO,SAASC,EACdD,GACAE,GACM;AACN,MAAI,CAACH,EAAYC,CAAK,EAAG,OAAMA;AAE/B,QAAMG,IAAO,OAAO;AAAA,IAClB,OAAO,QAASH,EAA2B,IAAI,EAAE,IAAI,CAAC,CAACI,GAAOC,CAAM,OAC9D,MAAM,QAAQA,CAAM,MAAGA,IAASA,EAAO,KAAK,IAAI,IAC7C,CAACD,GAAOC,CAAM,EACtB;AAAA,EAAA;AAGH,EAAAH,EAAUC,CAAI;AAChB;AAmDO,SAASG,EAKdC,GACAC,GACAC,GAC2B;AAC3B,QAAM;AAAA,IACJ,SAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,MAAAC;AAAA,IACA,OAAOC;AAAA,IACP,SAASC;AAAA,EAAA,IACPL,KAAW,CAAA;AACf,MAAI,EAAE,SAAAM,IAAU,GAAC,IAAMN,KAAW,CAAA;AAElC,SAAO,CAACO,GAAQC,MAAY;AAC1B,QAAIC,IACFT,KAAWA,EAAQ,QACfA,EAAQ,MAAMO,CAA+B,IAC5CA;AAEP,IAAIL,MACFI,IAAU;AAAA,MACR,GAAGA;AAAA,MACH,GAAGI,EAAcH,GAAQR,CAAa,EAAE;AAAA,QACtC,CAAAY,MAAa,CAACL,EAAQ,SAASK,CAAS;AAAA,MAAA;AAAA,IAC1C,IAIAV,UAAmBK,EAAQ,OAAO,OAAQ,CAACL,EAAQ,SAASW,CAAI,CAAC,IAEjEN,EAAQ,WAAQG,IAAMI,EAAgBJ,GAAKH,CAAO,IAEtDR,EAAQW,CAAG,EACR,OAAA,EACA,KAAK,CAAAK,MAAU;AACd,MAAIX,KAAMA,EAAKW,GAAQP,GAAQC,CAAO;AAAA,IACxC,CAAC,EACA,MAAM,CAAAjB,MAAS;AACd,MAAIa,KAAQA,EAAOb,GAAOgB,GAAQC,CAAO,GACzChB,EAAcD,GAAOiB,EAAQ,SAAS;AAAA,IACxC,CAAC,EACA,QAAQ,MAAM;AACb,MAAIH,KAAUA,EAASE,GAAQC,CAAO;AAAA,IACxC,CAAC;AAAA,EACL;AACF;AAEO,SAASO,EACdC,GACAhB,GACgB;AAChB,SAAO,OAAMiB,MAAS;AACpB,QAAI;AACF,YAAMD,EAAO,SAASC,GAAOjB,CAAO;AAAA,IACtC,SAAST,GAAO;AACd,UAAIA,aAAiB2B;AACnB,eAAO3B,EAAM,OAAO,KAAK,IAAI;AAG/B,YAAMA;AAAA,IACR;AAAA,EACF;AACF;AAIO,SAAS4B,EACdZ,GACAR,GACAqB,GACyB;AACzB,SAAKA,MAAOA,IAAQC,EAAYd,CAAM,IAE/B,OAAO;AAAA,IACZa,EAAM,IAAI,CAAAR,MAAQ,CAACA,GAAMU,EAAQf,GAAQR,GAAea,CAAI,CAAC,CAAC;AAAA,EAAA;AAElE;AAEO,SAASU,EACdf,GACAR,GACAa,GACS;AACT,QAAMK,IAAiBM,EAAkBhB,GAAQK,CAAI,GAC/CY,IAAwBD,EAAkBxB,GAAea,CAAI;AAEnE,SAAOK,MAAUO;AACnB;AAEO,SAASd,EACdH,GACAR,GACAqB,GACU;AACV,SAAO,OAAO,QAAQD,EAASZ,GAAQR,GAAeqB,CAAK,CAAC,EACzD;AAAA,IACC,CAAC;AAAA,MACCK;AAAA;AAAA,MACAH;AAAAA,IAAA,MACI,CAACA;AAAAA,EAAA,EAER,IAAI,CAAC,CAACV,CAAI,MAAMA,CAAI;AACzB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function h(n,a="_blank"){window.open(n,a)}function S(n,a){return(...e)=>{n.before!==void 0&&n.before(...e);let i;return a!==void 0&&(i=a(...e)),n.after!==void 0&&n.after(...e),i}}function u(n){Object.entries(n).forEach(([a,e])=>{typeof e=="object"&&u(e);const i=a.replace(/_+[a-z]/g,r=>r[r.length-1].toUpperCase());delete n[a],n[i]=e})}function d(n){Object.entries(n).forEach(([a,e])=>{typeof e=="object"&&d(e);const i=a.replace(/[A-Z]/g,r=>`_${r.toLowerCase()}`);delete n[a],n[i]=e})}const c=new Date(0,0,0),M=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],C=["Andorra","United Arab Emirates (the)","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Åland Islands","Azerbaijan","Bosnia and Herzegovina","Barbados","Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Saint Barthélemy","Bermuda","Brunei Darussalam","Bolivia (Plurinational State of)","Bonaire, Sint Eustatius and Saba","Brazil","Bahamas (the)","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands (the)","Congo (the Democratic Republic of the)","Central African Republic (the)","Congo (the)","Switzerland","Côte d'Ivoire","Cook Islands (the)","Chile","Cameroon","China","Colombia","Costa Rica","Cuba","Cabo Verde","Curaçao","Christmas Island","Cyprus","Czechia","Germany","Djibouti","Denmark","Dominica","Dominican Republic (the","Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji","Falkland Islands (the) [Malvinas]","Micronesia (Federated States of)","Faroe Islands (the)","France","Gabon","United Kingdom of Great Britain and Northern Ireland (the)","Grenada","Georgia","French Guiana","Guernsey","Ghana","Gibraltar","Greenland","Gambia (the)","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala","Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia","Ireland","Israel","Isle of Man","India","British Indian Ocean Territory (the)","Iraq","Iran (Islamic Republic of)","Iceland","Italy","Jersey","Jamaica","Jordan","Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros (the)","Saint Kitts and Nevis","Korea (the Democratic People's Republic of)","Korea (the Republic of)","Kuwait","Cayman Islands (the)","Kazakhstan","Lao People's Democratic Republic (the)","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania","Luxembourg","Latvia","Libya","Morocco","Monaco","Moldova (the Republic of)","Montenegro","Saint Martin (French part)","Madagascar","Marshall Islands (the)","Republic of North Macedonia","Mali","Myanmar","Mongolia","Macao","Northern Mariana Islands (the)","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives","Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger (the)","Norfolk Island","Nigeria","Nicaragua","Netherlands (the)","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia","Papua New Guinea","Philippines (the)","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn","Puerto Rico","Palestine, State of","Portugal","Palau","Paraguay","Qatar","Réunion","Romania","Serbia","Russian Federation (the)","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan (the)","Sweden","Singapore","Saint Helena, Ascension and Tristan da Cunha","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname","South Sudan","Sao Tome and Principe","El Salvador","Sint Maarten (Dutch part)","Syrian Arab Republic","Eswatini","Turks and Caicos Islands (the)","Chad","French Southern Territories (the)","Togo","Thailand","Tajikistan","Tokelau","Timor-Leste","Turkmenistan","Tunisia","Tonga","Turkey","Trinidad and Tobago","Tuvalu","Taiwan (Province of China)","Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands (the)","United States of America (the)","Uruguay","Uzbekistan","Holy See (the)","Saint Vincent and the Grenadines","Venezuela (Bolivarian Republic of)","Virgin Islands (British)","Virgin Islands (U.S.)","Viet Nam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","South Africa","Zambia","Zimbabwe"],I={AD:"Andorra",AE:"United Arab Emirates (the)",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"Åland Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barthélemy",BM:"Bermuda",BN:"Brunei Darussalam",BO:"Bolivia (Plurinational State of)",BQ:"Bonaire, Sint Eustatius and Saba",BR:"Brazil",BS:"Bahamas (the)",BT:"Bhutan",BV:"Bouvet Island",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos (Keeling) Islands (the)",CD:"Congo (the Democratic Republic of the)",CF:"Central African Republic (the)",CG:"Congo (the)",CH:"Switzerland",CI:"Côte d'Ivoire",CK:"Cook Islands (the)",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cabo Verde",CW:"Curaçao",CX:"Christmas Island",CY:"Cyprus",CZ:"Czechia",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic (the",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands (the) [Malvinas]",FM:"Micronesia (Federated States of)",FO:"Faroe Islands (the)",FR:"France",GA:"Gabon",GB:"United Kingdom of Great Britain and Northern Ireland (the)",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia (the)",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory (the)",IQ:"Iraq",IR:"Iran (Islamic Republic of)",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros (the)",KN:"Saint Kitts and Nevis",KP:"Korea (the Democratic People's Republic of)",KR:"Korea (the Republic of)",KW:"Kuwait",KY:"Cayman Islands (the)",KZ:"Kazakhstan",LA:"Lao People's Democratic Republic (the)",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova (the Republic of)",ME:"Montenegro",MF:"Saint Martin (French part)",MG:"Madagascar",MH:"Marshall Islands (the)",MK:"Republic of North Macedonia",ML:"Mali",MM:"Myanmar",MN:"Mongolia",MO:"Macao",MP:"Northern Mariana Islands (the)",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger (the)",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands (the)",NO:"Norway",NP:"Nepal",NR:"Nauru",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines (the)",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn",PR:"Puerto Rico",PS:"Palestine, State of",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"Qatar",RE:"Réunion",RO:"Romania",RS:"Serbia",RU:"Russian Federation (the)",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan (the)",SE:"Sweden",SG:"Singapore",SH:"Saint Helena, Ascension and Tristan da Cunha",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",SS:"South Sudan",ST:"Sao Tome and Principe",SV:"El Salvador",SX:"Sint Maarten (Dutch part)",SY:"Syrian Arab Republic",SZ:"Eswatini",TC:"Turks and Caicos Islands (the)",TD:"Chad",TF:"French Southern Territories (the)",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"Turkey",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan (Province of China)",TZ:"Tanzania, United Republic of",UA:"Ukraine",UG:"Uganda",UM:"United States Minor Outlying Islands (the)",US:"United States of America (the)",UY:"Uruguay",UZ:"Uzbekistan",VA:"Holy See (the)",VC:"Saint Vincent and the Grenadines",VE:"Venezuela (Bolivarian Republic of)",VG:"Virgin Islands (British)",VI:"Virgin Islands (U.S.)",VN:"Viet Nam",VU:"Vanuatu",WF:"Wallis and Futuna",WS:"Samoa",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe"},m=["Aberdeen City","Aberdeenshire","Angus","Argyll and Bute","Bedfordshire","Belfast","Belfast Greater","Berkshire","Blaenau Gwent","Bridgend","Buckinghamshire","Caerphilly","Cambridgeshire","Cardiff","Carmarthenshire","Ceredigion","Channel Islands","Cheshire","City of Edinburgh","Clackmannanshire","Conwy","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","County of Bristol","Cumbria","Denbighshire","Derbyshire","Devon","Dorset","Dumfries and Galloway","Dunbartonshire","Dundee City","Durham","East Ayrshire","East Dunbartonshire","East Lothian","East Renfrewshire","East Riding of Yorkshire","East Sussex","Essex","Falkirk","Fife","Flintshire","Glasgow City","Gloucestershire","Greater London","Greater Manchester","Guernsey Channel Islands","Gwynedd","Hampshire","Hereford and Worcester","Herefordshire","Hertfordshire","Highland","Inverclyde","Inverness","Isle of Anglesey","Isle of Barra","Isle of Man","Isle of Wight","Jersey Channel Islands","Kent","Lancashire","Leicestershire","Lincolnshire","Merseyside","Merthyr Tydfil","Midlothian","Monmouthshire","Moray","Neath Port Talbot","Newport","Norfolk","North Ayrshire","North Lanarkshire","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Orkney","Orkney Islands","Oxfordshire","Pembrokeshire","Perth and Kinross","Powys","Renfrewshire","Rhondda Cynon Taff","Rutland","Scottish Borders","Shetland Islands","Shropshire","Somerset","South Ayrshire","South Lanarkshire","South Yorkshire","Staffordshire","Stirling","Suffolk","Surrey","Swansea","Torfaen","Tyne and Wear","Vale of Glamorgan","Warwickshire","West Dunbart","West Lothian","West Midlands","West Sussex","West Yorkshire","Western Isles","Wiltshire","Worcestershire","Wrexham"];function G(n,a){typeof a=="string"&&(a=a.split("."));let e=n;for(let i=0;i<a.length;i++)if(e=e[a[i]],i!==a.length-1&&(typeof e!="object"||e===null))return;return e}function A(n,a="."){function e(i,r){return Object.fromEntries(Object.entries(i).map(([s,t])=>{const o=[...r,s];return typeof t=="object"&&t!==null&&(t=e(t,o)),[o.join(a),t]}))}return e(n,[])}function T(n,a="."){function e(i,r){return Object.entries(i).map(([s,t])=>{const o=[...r,s],l=o.join(a);return typeof t=="object"&&t!==null?[l,...e(t,o)]:[l]}).flat()}return e(n,[])}function g(n,a,e="."){function i(r,s){return Object.fromEntries(Object.entries(r).map(([t,o])=>{const l=[...s,t];return typeof o=="object"&&o!==null&&!(o instanceof Date)&&(o=i(o,l)),a.includes(l.join(e))?[]:[t,o]}).filter(t=>t.length))}return a.length?i(n,[]):n}function B(n,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"){const e=window.crypto.getRandomValues(new Uint8Array(n));let i="";for(let r=0;r<n;r++)i+=a.charAt(e[r]%a.length);return i}exports.COUNTRIES=C;exports.COUNTRY_ISO_CODES=M;exports.COUNTRY_ISO_CODE_MAPPING=I;exports.MIN_DATE=c;exports.UK_COUNTIES=m;exports.camelCaseToSnakeCase=d;exports.excludeKeyPaths=g;exports.generateSecureRandomString=B;exports.getKeyPaths=T;exports.getNestedProperty=G;exports.openInNewTab=h;exports.snakeCaseToCamelCase=u;exports.withKeyPaths=A;exports.wrap=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function c(e,t="_blank"){window.open(e,t)}function s(e,t){return(...n)=>{e.before!==void 0&&e.before(...n);let o;return t!==void 0&&(o=t(...n)),e.after!==void 0&&e.after(...n),o}}function r(e){Object.entries(e).forEach(([t,n])=>{typeof n=="object"&&r(n);const o=t.replace(/_+[a-z]/g,a=>a[a.length-1].toUpperCase());delete e[t],e[o]=n})}function i(e){Object.entries(e).forEach(([t,n])=>{typeof n=="object"&&i(n);const o=t.replace(/[A-Z]/g,a=>`_${a.toLowerCase()}`);delete e[t],e[o]=n})}const f=new Date(0,0,0);function l(e,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"){const n=window.crypto.getRandomValues(new Uint8Array(e));let o="";for(let a=0;a<e;a++)o+=t.charAt(n[a]%t.length);return o}exports.MIN_DATE=f;exports.camelCaseToSnakeCase=i;exports.generateSecureRandomString=l;exports.openInNewTab=c;exports.snakeCaseToCamelCase=r;exports.wrap=s;
2
2
  //# sourceMappingURL=general.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.cjs.js","sources":["../../src/utils/general.ts"],"sourcesContent":["export type Required<T, K extends keyof T> = { [P in K]-?: T[P] }\nexport type Optional<T, K extends keyof T> = Partial<Pick<T, K>>\nexport type OptionalPropertyNames<T> = {\n [K in keyof T]-?: {} extends { [P in K]: T[K] } ? K : never\n}[keyof T]\nexport type IsOptional<T, K extends keyof T> =\n K extends OptionalPropertyNames<T> ? true : false\n\nexport function openInNewTab(url: string, target = \"_blank\"): void {\n window.open(url, target)\n}\n\nexport function wrap(\n newFn: {\n before?: (...args: any[]) => void\n after?: (...args: any[]) => void\n },\n fn?: (...args: any[]) => any,\n): (...args: any[]) => any {\n return (...args) => {\n if (newFn.before !== undefined) {\n newFn.before(...(args as unknown[]))\n }\n let value\n if (fn !== undefined) {\n value = fn(...(args as unknown[])) as unknown\n }\n if (newFn.after !== undefined) {\n newFn.after(...(args as unknown[]))\n }\n return value\n }\n}\n\nexport function snakeCaseToCamelCase(obj: Record<string, any>): void {\n Object.entries(obj).forEach(([snakeKey, value]) => {\n if (typeof value === \"object\") snakeCaseToCamelCase(value as object)\n\n const camelKey = snakeKey.replace(/_+[a-z]/g, _char =>\n _char[_char.length - 1].toUpperCase(),\n )\n\n delete obj[snakeKey]\n obj[camelKey] = value as unknown\n })\n}\n\nexport function camelCaseToSnakeCase(obj: Record<string, any>): void {\n Object.entries(obj).forEach(([camelKey, value]) => {\n if (typeof value === \"object\") camelCaseToSnakeCase(value as object)\n\n const snakeKey = camelKey.replace(\n /[A-Z]/g,\n char => `_${char.toLowerCase()}`,\n )\n\n delete obj[camelKey]\n obj[snakeKey] = value as unknown\n })\n}\n\nexport const MIN_DATE = new Date(0, 0, 0)\n\nexport const COUNTRY_ISO_CODES = [\n \"AD\",\n \"AE\",\n \"AF\",\n \"AG\",\n \"AI\",\n \"AL\",\n \"AM\",\n \"AO\",\n \"AQ\",\n \"AR\",\n \"AS\",\n \"AT\",\n \"AU\",\n \"AW\",\n \"AX\",\n \"AZ\",\n \"BA\",\n \"BB\",\n \"BD\",\n \"BE\",\n \"BF\",\n \"BG\",\n \"BH\",\n \"BI\",\n \"BJ\",\n \"BL\",\n \"BM\",\n \"BN\",\n \"BO\",\n \"BQ\",\n \"BR\",\n \"BS\",\n \"BT\",\n \"BV\",\n \"BW\",\n \"BY\",\n \"BZ\",\n \"CA\",\n \"CC\",\n \"CD\",\n \"CF\",\n \"CG\",\n \"CH\",\n \"CI\",\n \"CK\",\n \"CL\",\n \"CM\",\n \"CN\",\n \"CO\",\n \"CR\",\n \"CU\",\n \"CV\",\n \"CW\",\n \"CX\",\n \"CY\",\n \"CZ\",\n \"DE\",\n \"DJ\",\n \"DK\",\n \"DM\",\n \"DO\",\n \"DZ\",\n \"EC\",\n \"EE\",\n \"EG\",\n \"EH\",\n \"ER\",\n \"ES\",\n \"ET\",\n \"FI\",\n \"FJ\",\n \"FK\",\n \"FM\",\n \"FO\",\n \"FR\",\n \"GA\",\n \"GB\",\n \"GD\",\n \"GE\",\n \"GF\",\n \"GG\",\n \"GH\",\n \"GI\",\n \"GL\",\n \"GM\",\n \"GN\",\n \"GP\",\n \"GQ\",\n \"GR\",\n \"GS\",\n \"GT\",\n \"GU\",\n \"GW\",\n \"GY\",\n \"HK\",\n \"HM\",\n \"HN\",\n \"HR\",\n \"HT\",\n \"HU\",\n \"ID\",\n \"IE\",\n \"IL\",\n \"IM\",\n \"IN\",\n \"IO\",\n \"IQ\",\n \"IR\",\n \"IS\",\n \"IT\",\n \"JE\",\n \"JM\",\n \"JO\",\n \"JP\",\n \"KE\",\n \"KG\",\n \"KH\",\n \"KI\",\n \"KM\",\n \"KN\",\n \"KP\",\n \"KR\",\n \"KW\",\n \"KY\",\n \"KZ\",\n \"LA\",\n \"LB\",\n \"LC\",\n \"LI\",\n \"LK\",\n \"LR\",\n \"LS\",\n \"LT\",\n \"LU\",\n \"LV\",\n \"LY\",\n \"MA\",\n \"MC\",\n \"MD\",\n \"ME\",\n \"MF\",\n \"MG\",\n \"MH\",\n \"MK\",\n \"ML\",\n \"MM\",\n \"MN\",\n \"MO\",\n \"MP\",\n \"MQ\",\n \"MR\",\n \"MS\",\n \"MT\",\n \"MU\",\n \"MV\",\n \"MW\",\n \"MX\",\n \"MY\",\n \"MZ\",\n \"NA\",\n \"NC\",\n \"NE\",\n \"NF\",\n \"NG\",\n \"NI\",\n \"NL\",\n \"NO\",\n \"NP\",\n \"NR\",\n \"NU\",\n \"NZ\",\n \"OM\",\n \"PA\",\n \"PE\",\n \"PF\",\n \"PG\",\n \"PH\",\n \"PK\",\n \"PL\",\n \"PM\",\n \"PN\",\n \"PR\",\n \"PS\",\n \"PT\",\n \"PW\",\n \"PY\",\n \"QA\",\n \"RE\",\n \"RO\",\n \"RS\",\n \"RU\",\n \"RW\",\n \"SA\",\n \"SB\",\n \"SC\",\n \"SD\",\n \"SE\",\n \"SG\",\n \"SH\",\n \"SI\",\n \"SJ\",\n \"SK\",\n \"SL\",\n \"SM\",\n \"SN\",\n \"SO\",\n \"SR\",\n \"SS\",\n \"ST\",\n \"SV\",\n \"SX\",\n \"SY\",\n \"SZ\",\n \"TC\",\n \"TD\",\n \"TF\",\n \"TG\",\n \"TH\",\n \"TJ\",\n \"TK\",\n \"TL\",\n \"TM\",\n \"TN\",\n \"TO\",\n \"TR\",\n \"TT\",\n \"TV\",\n \"TW\",\n \"TZ\",\n \"UA\",\n \"UG\",\n \"UM\",\n \"US\",\n \"UY\",\n \"UZ\",\n \"VA\",\n \"VC\",\n \"VE\",\n \"VG\",\n \"VI\",\n \"VN\",\n \"VU\",\n \"WF\",\n \"WS\",\n \"YE\",\n \"YT\",\n \"ZA\",\n \"ZM\",\n \"ZW\",\n] as const\n\nexport type CountryIsoCodes = (typeof COUNTRY_ISO_CODES)[number]\n\nexport const COUNTRIES = [\n \"Andorra\",\n \"United Arab Emirates (the)\",\n \"Afghanistan\",\n \"Antigua and Barbuda\",\n \"Anguilla\",\n \"Albania\",\n \"Armenia\",\n \"Angola\",\n \"Antarctica\",\n \"Argentina\",\n \"American Samoa\",\n \"Austria\",\n \"Australia\",\n \"Aruba\",\n \"Åland Islands\",\n \"Azerbaijan\",\n \"Bosnia and Herzegovina\",\n \"Barbados\",\n \"Bangladesh\",\n \"Belgium\",\n \"Burkina Faso\",\n \"Bulgaria\",\n \"Bahrain\",\n \"Burundi\",\n \"Benin\",\n \"Saint Barthélemy\",\n \"Bermuda\",\n \"Brunei Darussalam\",\n \"Bolivia (Plurinational State of)\",\n \"Bonaire, Sint Eustatius and Saba\",\n \"Brazil\",\n \"Bahamas (the)\",\n \"Bhutan\",\n \"Bouvet Island\",\n \"Botswana\",\n \"Belarus\",\n \"Belize\",\n \"Canada\",\n \"Cocos (Keeling) Islands (the)\",\n \"Congo (the Democratic Republic of the)\",\n \"Central African Republic (the)\",\n \"Congo (the)\",\n \"Switzerland\",\n \"Côte d'Ivoire\",\n \"Cook Islands (the)\",\n \"Chile\",\n \"Cameroon\",\n \"China\",\n \"Colombia\",\n \"Costa Rica\",\n \"Cuba\",\n \"Cabo Verde\",\n \"Curaçao\",\n \"Christmas Island\",\n \"Cyprus\",\n \"Czechia\",\n \"Germany\",\n \"Djibouti\",\n \"Denmark\",\n \"Dominica\",\n \"Dominican Republic (the\",\n \"Algeria\",\n \"Ecuador\",\n \"Estonia\",\n \"Egypt\",\n \"Western Sahara\",\n \"Eritrea\",\n \"Spain\",\n \"Ethiopia\",\n \"Finland\",\n \"Fiji\",\n \"Falkland Islands (the) [Malvinas]\",\n \"Micronesia (Federated States of)\",\n \"Faroe Islands (the)\",\n \"France\",\n \"Gabon\",\n \"United Kingdom of Great Britain and Northern Ireland (the)\",\n \"Grenada\",\n \"Georgia\",\n \"French Guiana\",\n \"Guernsey\",\n \"Ghana\",\n \"Gibraltar\",\n \"Greenland\",\n \"Gambia (the)\",\n \"Guinea\",\n \"Guadeloupe\",\n \"Equatorial Guinea\",\n \"Greece\",\n \"South Georgia and the South Sandwich Islands\",\n \"Guatemala\",\n \"Guam\",\n \"Guinea-Bissau\",\n \"Guyana\",\n \"Hong Kong\",\n \"Heard Island and McDonald Islands\",\n \"Honduras\",\n \"Croatia\",\n \"Haiti\",\n \"Hungary\",\n \"Indonesia\",\n \"Ireland\",\n \"Israel\",\n \"Isle of Man\",\n \"India\",\n \"British Indian Ocean Territory (the)\",\n \"Iraq\",\n \"Iran (Islamic Republic of)\",\n \"Iceland\",\n \"Italy\",\n \"Jersey\",\n \"Jamaica\",\n \"Jordan\",\n \"Japan\",\n \"Kenya\",\n \"Kyrgyzstan\",\n \"Cambodia\",\n \"Kiribati\",\n \"Comoros (the)\",\n \"Saint Kitts and Nevis\",\n \"Korea (the Democratic People's Republic of)\",\n \"Korea (the Republic of)\",\n \"Kuwait\",\n \"Cayman Islands (the)\",\n \"Kazakhstan\",\n \"Lao People's Democratic Republic (the)\",\n \"Lebanon\",\n \"Saint Lucia\",\n \"Liechtenstein\",\n \"Sri Lanka\",\n \"Liberia\",\n \"Lesotho\",\n \"Lithuania\",\n \"Luxembourg\",\n \"Latvia\",\n \"Libya\",\n \"Morocco\",\n \"Monaco\",\n \"Moldova (the Republic of)\",\n \"Montenegro\",\n \"Saint Martin (French part)\",\n \"Madagascar\",\n \"Marshall Islands (the)\",\n \"Republic of North Macedonia\",\n \"Mali\",\n \"Myanmar\",\n \"Mongolia\",\n \"Macao\",\n \"Northern Mariana Islands (the)\",\n \"Martinique\",\n \"Mauritania\",\n \"Montserrat\",\n \"Malta\",\n \"Mauritius\",\n \"Maldives\",\n \"Malawi\",\n \"Mexico\",\n \"Malaysia\",\n \"Mozambique\",\n \"Namibia\",\n \"New Caledonia\",\n \"Niger (the)\",\n \"Norfolk Island\",\n \"Nigeria\",\n \"Nicaragua\",\n \"Netherlands (the)\",\n \"Norway\",\n \"Nepal\",\n \"Nauru\",\n \"Niue\",\n \"New Zealand\",\n \"Oman\",\n \"Panama\",\n \"Peru\",\n \"French Polynesia\",\n \"Papua New Guinea\",\n \"Philippines (the)\",\n \"Pakistan\",\n \"Poland\",\n \"Saint Pierre and Miquelon\",\n \"Pitcairn\",\n \"Puerto Rico\",\n \"Palestine, State of\",\n \"Portugal\",\n \"Palau\",\n \"Paraguay\",\n \"Qatar\",\n \"Réunion\",\n \"Romania\",\n \"Serbia\",\n \"Russian Federation (the)\",\n \"Rwanda\",\n \"Saudi Arabia\",\n \"Solomon Islands\",\n \"Seychelles\",\n \"Sudan (the)\",\n \"Sweden\",\n \"Singapore\",\n \"Saint Helena, Ascension and Tristan da Cunha\",\n \"Slovenia\",\n \"Svalbard and Jan Mayen\",\n \"Slovakia\",\n \"Sierra Leone\",\n \"San Marino\",\n \"Senegal\",\n \"Somalia\",\n \"Suriname\",\n \"South Sudan\",\n \"Sao Tome and Principe\",\n \"El Salvador\",\n \"Sint Maarten (Dutch part)\",\n \"Syrian Arab Republic\",\n \"Eswatini\",\n \"Turks and Caicos Islands (the)\",\n \"Chad\",\n \"French Southern Territories (the)\",\n \"Togo\",\n \"Thailand\",\n \"Tajikistan\",\n \"Tokelau\",\n \"Timor-Leste\",\n \"Turkmenistan\",\n \"Tunisia\",\n \"Tonga\",\n \"Turkey\",\n \"Trinidad and Tobago\",\n \"Tuvalu\",\n \"Taiwan (Province of China)\",\n \"Tanzania, United Republic of\",\n \"Ukraine\",\n \"Uganda\",\n \"United States Minor Outlying Islands (the)\",\n \"United States of America (the)\",\n \"Uruguay\",\n \"Uzbekistan\",\n \"Holy See (the)\",\n \"Saint Vincent and the Grenadines\",\n \"Venezuela (Bolivarian Republic of)\",\n \"Virgin Islands (British)\",\n \"Virgin Islands (U.S.)\",\n \"Viet Nam\",\n \"Vanuatu\",\n \"Wallis and Futuna\",\n \"Samoa\",\n \"Yemen\",\n \"Mayotte\",\n \"South Africa\",\n \"Zambia\",\n \"Zimbabwe\",\n] as const\n\nexport type Countries = (typeof COUNTRIES)[number]\n\nexport const COUNTRY_ISO_CODE_MAPPING: Record<CountryIsoCodes, Countries> = {\n AD: \"Andorra\",\n AE: \"United Arab Emirates (the)\",\n AF: \"Afghanistan\",\n AG: \"Antigua and Barbuda\",\n AI: \"Anguilla\",\n AL: \"Albania\",\n AM: \"Armenia\",\n AO: \"Angola\",\n AQ: \"Antarctica\",\n AR: \"Argentina\",\n AS: \"American Samoa\",\n AT: \"Austria\",\n AU: \"Australia\",\n AW: \"Aruba\",\n AX: \"Åland Islands\",\n AZ: \"Azerbaijan\",\n BA: \"Bosnia and Herzegovina\",\n BB: \"Barbados\",\n BD: \"Bangladesh\",\n BE: \"Belgium\",\n BF: \"Burkina Faso\",\n BG: \"Bulgaria\",\n BH: \"Bahrain\",\n BI: \"Burundi\",\n BJ: \"Benin\",\n BL: \"Saint Barthélemy\",\n BM: \"Bermuda\",\n BN: \"Brunei Darussalam\",\n BO: \"Bolivia (Plurinational State of)\",\n BQ: \"Bonaire, Sint Eustatius and Saba\",\n BR: \"Brazil\",\n BS: \"Bahamas (the)\",\n BT: \"Bhutan\",\n BV: \"Bouvet Island\",\n BW: \"Botswana\",\n BY: \"Belarus\",\n BZ: \"Belize\",\n CA: \"Canada\",\n CC: \"Cocos (Keeling) Islands (the)\",\n CD: \"Congo (the Democratic Republic of the)\",\n CF: \"Central African Republic (the)\",\n CG: \"Congo (the)\",\n CH: \"Switzerland\",\n CI: \"Côte d'Ivoire\",\n CK: \"Cook Islands (the)\",\n CL: \"Chile\",\n CM: \"Cameroon\",\n CN: \"China\",\n CO: \"Colombia\",\n CR: \"Costa Rica\",\n CU: \"Cuba\",\n CV: \"Cabo Verde\",\n CW: \"Curaçao\",\n CX: \"Christmas Island\",\n CY: \"Cyprus\",\n CZ: \"Czechia\",\n DE: \"Germany\",\n DJ: \"Djibouti\",\n DK: \"Denmark\",\n DM: \"Dominica\",\n DO: \"Dominican Republic (the\",\n DZ: \"Algeria\",\n EC: \"Ecuador\",\n EE: \"Estonia\",\n EG: \"Egypt\",\n EH: \"Western Sahara\",\n ER: \"Eritrea\",\n ES: \"Spain\",\n ET: \"Ethiopia\",\n FI: \"Finland\",\n FJ: \"Fiji\",\n FK: \"Falkland Islands (the) [Malvinas]\",\n FM: \"Micronesia (Federated States of)\",\n FO: \"Faroe Islands (the)\",\n FR: \"France\",\n GA: \"Gabon\",\n GB: \"United Kingdom of Great Britain and Northern Ireland (the)\",\n GD: \"Grenada\",\n GE: \"Georgia\",\n GF: \"French Guiana\",\n GG: \"Guernsey\",\n GH: \"Ghana\",\n GI: \"Gibraltar\",\n GL: \"Greenland\",\n GM: \"Gambia (the)\",\n GN: \"Guinea\",\n GP: \"Guadeloupe\",\n GQ: \"Equatorial Guinea\",\n GR: \"Greece\",\n GS: \"South Georgia and the South Sandwich Islands\",\n GT: \"Guatemala\",\n GU: \"Guam\",\n GW: \"Guinea-Bissau\",\n GY: \"Guyana\",\n HK: \"Hong Kong\",\n HM: \"Heard Island and McDonald Islands\",\n HN: \"Honduras\",\n HR: \"Croatia\",\n HT: \"Haiti\",\n HU: \"Hungary\",\n ID: \"Indonesia\",\n IE: \"Ireland\",\n IL: \"Israel\",\n IM: \"Isle of Man\",\n IN: \"India\",\n IO: \"British Indian Ocean Territory (the)\",\n IQ: \"Iraq\",\n IR: \"Iran (Islamic Republic of)\",\n IS: \"Iceland\",\n IT: \"Italy\",\n JE: \"Jersey\",\n JM: \"Jamaica\",\n JO: \"Jordan\",\n JP: \"Japan\",\n KE: \"Kenya\",\n KG: \"Kyrgyzstan\",\n KH: \"Cambodia\",\n KI: \"Kiribati\",\n KM: \"Comoros (the)\",\n KN: \"Saint Kitts and Nevis\",\n KP: \"Korea (the Democratic People's Republic of)\",\n KR: \"Korea (the Republic of)\",\n KW: \"Kuwait\",\n KY: \"Cayman Islands (the)\",\n KZ: \"Kazakhstan\",\n LA: \"Lao People's Democratic Republic (the)\",\n LB: \"Lebanon\",\n LC: \"Saint Lucia\",\n LI: \"Liechtenstein\",\n LK: \"Sri Lanka\",\n LR: \"Liberia\",\n LS: \"Lesotho\",\n LT: \"Lithuania\",\n LU: \"Luxembourg\",\n LV: \"Latvia\",\n LY: \"Libya\",\n MA: \"Morocco\",\n MC: \"Monaco\",\n MD: \"Moldova (the Republic of)\",\n ME: \"Montenegro\",\n MF: \"Saint Martin (French part)\",\n MG: \"Madagascar\",\n MH: \"Marshall Islands (the)\",\n MK: \"Republic of North Macedonia\",\n ML: \"Mali\",\n MM: \"Myanmar\",\n MN: \"Mongolia\",\n MO: \"Macao\",\n MP: \"Northern Mariana Islands (the)\",\n MQ: \"Martinique\",\n MR: \"Mauritania\",\n MS: \"Montserrat\",\n MT: \"Malta\",\n MU: \"Mauritius\",\n MV: \"Maldives\",\n MW: \"Malawi\",\n MX: \"Mexico\",\n MY: \"Malaysia\",\n MZ: \"Mozambique\",\n NA: \"Namibia\",\n NC: \"New Caledonia\",\n NE: \"Niger (the)\",\n NF: \"Norfolk Island\",\n NG: \"Nigeria\",\n NI: \"Nicaragua\",\n NL: \"Netherlands (the)\",\n NO: \"Norway\",\n NP: \"Nepal\",\n NR: \"Nauru\",\n NU: \"Niue\",\n NZ: \"New Zealand\",\n OM: \"Oman\",\n PA: \"Panama\",\n PE: \"Peru\",\n PF: \"French Polynesia\",\n PG: \"Papua New Guinea\",\n PH: \"Philippines (the)\",\n PK: \"Pakistan\",\n PL: \"Poland\",\n PM: \"Saint Pierre and Miquelon\",\n PN: \"Pitcairn\",\n PR: \"Puerto Rico\",\n PS: \"Palestine, State of\",\n PT: \"Portugal\",\n PW: \"Palau\",\n PY: \"Paraguay\",\n QA: \"Qatar\",\n RE: \"Réunion\",\n RO: \"Romania\",\n RS: \"Serbia\",\n RU: \"Russian Federation (the)\",\n RW: \"Rwanda\",\n SA: \"Saudi Arabia\",\n SB: \"Solomon Islands\",\n SC: \"Seychelles\",\n SD: \"Sudan (the)\",\n SE: \"Sweden\",\n SG: \"Singapore\",\n SH: \"Saint Helena, Ascension and Tristan da Cunha\",\n SI: \"Slovenia\",\n SJ: \"Svalbard and Jan Mayen\",\n SK: \"Slovakia\",\n SL: \"Sierra Leone\",\n SM: \"San Marino\",\n SN: \"Senegal\",\n SO: \"Somalia\",\n SR: \"Suriname\",\n SS: \"South Sudan\",\n ST: \"Sao Tome and Principe\",\n SV: \"El Salvador\",\n SX: \"Sint Maarten (Dutch part)\",\n SY: \"Syrian Arab Republic\",\n SZ: \"Eswatini\",\n TC: \"Turks and Caicos Islands (the)\",\n TD: \"Chad\",\n TF: \"French Southern Territories (the)\",\n TG: \"Togo\",\n TH: \"Thailand\",\n TJ: \"Tajikistan\",\n TK: \"Tokelau\",\n TL: \"Timor-Leste\",\n TM: \"Turkmenistan\",\n TN: \"Tunisia\",\n TO: \"Tonga\",\n TR: \"Turkey\",\n TT: \"Trinidad and Tobago\",\n TV: \"Tuvalu\",\n TW: \"Taiwan (Province of China)\",\n TZ: \"Tanzania, United Republic of\",\n UA: \"Ukraine\",\n UG: \"Uganda\",\n UM: \"United States Minor Outlying Islands (the)\",\n US: \"United States of America (the)\",\n UY: \"Uruguay\",\n UZ: \"Uzbekistan\",\n VA: \"Holy See (the)\",\n VC: \"Saint Vincent and the Grenadines\",\n VE: \"Venezuela (Bolivarian Republic of)\",\n VG: \"Virgin Islands (British)\",\n VI: \"Virgin Islands (U.S.)\",\n VN: \"Viet Nam\",\n VU: \"Vanuatu\",\n WF: \"Wallis and Futuna\",\n WS: \"Samoa\",\n YE: \"Yemen\",\n YT: \"Mayotte\",\n ZA: \"South Africa\",\n ZM: \"Zambia\",\n ZW: \"Zimbabwe\",\n}\n\nexport const UK_COUNTIES = [\n \"Aberdeen City\",\n \"Aberdeenshire\",\n \"Angus\",\n \"Argyll and Bute\",\n \"Bedfordshire\",\n \"Belfast\",\n \"Belfast Greater\",\n \"Berkshire\",\n \"Blaenau Gwent\",\n \"Bridgend\",\n \"Buckinghamshire\",\n \"Caerphilly\",\n \"Cambridgeshire\",\n \"Cardiff\",\n \"Carmarthenshire\",\n \"Ceredigion\",\n \"Channel Islands\",\n \"Cheshire\",\n \"City of Edinburgh\",\n \"Clackmannanshire\",\n \"Conwy\",\n \"Cornwall\",\n \"County Antrim\",\n \"County Armagh\",\n \"County Down\",\n \"County Fermanagh\",\n \"County Londonderry\",\n \"County Tyrone\",\n \"County of Bristol\",\n \"Cumbria\",\n \"Denbighshire\",\n \"Derbyshire\",\n \"Devon\",\n \"Dorset\",\n \"Dumfries and Galloway\",\n \"Dunbartonshire\",\n \"Dundee City\",\n \"Durham\",\n \"East Ayrshire\",\n \"East Dunbartonshire\",\n \"East Lothian\",\n \"East Renfrewshire\",\n \"East Riding of Yorkshire\",\n \"East Sussex\",\n \"Essex\",\n \"Falkirk\",\n \"Fife\",\n \"Flintshire\",\n \"Glasgow City\",\n \"Gloucestershire\",\n \"Greater London\",\n \"Greater Manchester\",\n \"Guernsey Channel Islands\",\n \"Gwynedd\",\n \"Hampshire\",\n \"Hereford and Worcester\",\n \"Herefordshire\",\n \"Hertfordshire\",\n \"Highland\",\n \"Inverclyde\",\n \"Inverness\",\n \"Isle of Anglesey\",\n \"Isle of Barra\",\n \"Isle of Man\",\n \"Isle of Wight\",\n \"Jersey Channel Islands\",\n \"Kent\",\n \"Lancashire\",\n \"Leicestershire\",\n \"Lincolnshire\",\n \"Merseyside\",\n \"Merthyr Tydfil\",\n \"Midlothian\",\n \"Monmouthshire\",\n \"Moray\",\n \"Neath Port Talbot\",\n \"Newport\",\n \"Norfolk\",\n \"North Ayrshire\",\n \"North Lanarkshire\",\n \"North Yorkshire\",\n \"Northamptonshire\",\n \"Northumberland\",\n \"Nottinghamshire\",\n \"Orkney\",\n \"Orkney Islands\",\n \"Oxfordshire\",\n \"Pembrokeshire\",\n \"Perth and Kinross\",\n \"Powys\",\n \"Renfrewshire\",\n \"Rhondda Cynon Taff\",\n \"Rutland\",\n \"Scottish Borders\",\n \"Shetland Islands\",\n \"Shropshire\",\n \"Somerset\",\n \"South Ayrshire\",\n \"South Lanarkshire\",\n \"South Yorkshire\",\n \"Staffordshire\",\n \"Stirling\",\n \"Suffolk\",\n \"Surrey\",\n \"Swansea\",\n \"Torfaen\",\n \"Tyne and Wear\",\n \"Vale of Glamorgan\",\n \"Warwickshire\",\n \"West Dunbart\",\n \"West Lothian\",\n \"West Midlands\",\n \"West Sussex\",\n \"West Yorkshire\",\n \"Western Isles\",\n \"Wiltshire\",\n \"Worcestershire\",\n \"Wrexham\",\n] as const\n\nexport type UkCounties = (typeof UK_COUNTIES)[number]\n\nexport function getNestedProperty(\n obj: Record<string, any>,\n dotPath: string | string[],\n): any {\n if (typeof dotPath === \"string\") dotPath = dotPath.split(\".\")\n\n let value: unknown = obj\n for (let i = 0; i < dotPath.length; i++) {\n value = (value as Record<string, any>)[dotPath[i]]\n if (\n i !== dotPath.length - 1 &&\n (typeof value !== \"object\" || value === null)\n )\n return\n }\n\n return value\n}\n\nexport function withKeyPaths(obj: object, delimiter: string = \".\"): object {\n function _withKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _withKeyPaths(value as object, _path)\n\n return [_path.join(delimiter), value]\n }),\n )\n }\n\n return _withKeyPaths(obj, [])\n}\n\nexport function getKeyPaths(obj: object, delimiter: string = \".\"): string[] {\n function _getKeyPaths(obj: object, path: string[]): string[] {\n return Object.entries(obj)\n .map(([key, value]) => {\n const _path = [...path, key]\n const keyPath = _path.join(delimiter)\n\n return typeof value === \"object\" && value !== null\n ? [keyPath, ..._getKeyPaths(value as object, _path)]\n : [keyPath]\n })\n .flat()\n }\n\n return _getKeyPaths(obj, [])\n}\n\nexport function excludeKeyPaths(\n obj: object,\n exclude: string[],\n delimiter: string = \".\",\n): any {\n function _excludeKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]: [string, unknown]) => {\n const _path = [...path, key]\n\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Date)\n )\n value = _excludeKeyPaths(value, _path)\n\n return exclude.includes(_path.join(delimiter)) ? [] : [key, value]\n })\n .filter(entry => entry.length),\n ) as object\n }\n\n return exclude.length ? _excludeKeyPaths(obj, []) : obj\n}\n\nexport function generateSecureRandomString(\n length: number,\n charSet: string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",\n) {\n // Create an array of 32-bit unsigned integers\n const randomValues = window.crypto.getRandomValues(new Uint8Array(length))\n\n // Map the random values to characters from our string\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += charSet.charAt(randomValues[i] % charSet.length)\n }\n\n return result\n}\n"],"names":["openInNewTab","url","target","wrap","newFn","fn","args","value","snakeCaseToCamelCase","obj","snakeKey","camelKey","_char","camelCaseToSnakeCase","char","MIN_DATE","COUNTRY_ISO_CODES","COUNTRIES","COUNTRY_ISO_CODE_MAPPING","UK_COUNTIES","getNestedProperty","dotPath","withKeyPaths","delimiter","_withKeyPaths","path","key","_path","getKeyPaths","_getKeyPaths","keyPath","excludeKeyPaths","exclude","_excludeKeyPaths","entry","generateSecureRandomString","length","charSet","randomValues","result","i"],"mappings":"gFAQO,SAASA,EAAaC,EAAaC,EAAS,SAAgB,CACjE,OAAO,KAAKD,EAAKC,CAAM,CACzB,CAEO,SAASC,EACdC,EAIAC,EACyB,CACzB,MAAO,IAAIC,IAAS,CACdF,EAAM,SAAW,QACnBA,EAAM,OAAO,GAAIE,CAAkB,EAErC,IAAIC,EACJ,OAAIF,IAAO,SACTE,EAAQF,EAAG,GAAIC,CAAkB,GAE/BF,EAAM,QAAU,QAClBA,EAAM,MAAM,GAAIE,CAAkB,EAE7BC,CACT,CACF,CAEO,SAASC,EAAqBC,EAAgC,CACnE,OAAO,QAAQA,CAAG,EAAE,QAAQ,CAAC,CAACC,EAAUH,CAAK,IAAM,CAC7C,OAAOA,GAAU,UAAUC,EAAqBD,CAAe,EAEnE,MAAMI,EAAWD,EAAS,QAAQ,cAChCE,EAAMA,EAAM,OAAS,CAAC,EAAE,YAAA,CAAY,EAGtC,OAAOH,EAAIC,CAAQ,EACnBD,EAAIE,CAAQ,EAAIJ,CAClB,CAAC,CACH,CAEO,SAASM,EAAqBJ,EAAgC,CACnE,OAAO,QAAQA,CAAG,EAAE,QAAQ,CAAC,CAACE,EAAUJ,CAAK,IAAM,CAC7C,OAAOA,GAAU,UAAUM,EAAqBN,CAAe,EAEnE,MAAMG,EAAWC,EAAS,QACxB,SACAG,GAAQ,IAAIA,EAAK,YAAA,CAAa,EAAA,EAGhC,OAAOL,EAAIE,CAAQ,EACnBF,EAAIC,CAAQ,EAAIH,CAClB,CAAC,CACH,CAEO,MAAMQ,EAAW,IAAI,KAAK,EAAG,EAAG,CAAC,EAE3BC,EAAoB,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACF,EAIaC,EAAY,CACvB,UACA,6BACA,cACA,sBACA,WACA,UACA,UACA,SACA,aACA,YACA,iBACA,UACA,YACA,QACA,gBACA,aACA,yBACA,WACA,aACA,UACA,eACA,WACA,UACA,UACA,QACA,mBACA,UACA,oBACA,mCACA,mCACA,SACA,gBACA,SACA,gBACA,WACA,UACA,SACA,SACA,gCACA,yCACA,iCACA,cACA,cACA,gBACA,qBACA,QACA,WACA,QACA,WACA,aACA,OACA,aACA,UACA,mBACA,SACA,UACA,UACA,WACA,UACA,WACA,0BACA,UACA,UACA,UACA,QACA,iBACA,UACA,QACA,WACA,UACA,OACA,oCACA,mCACA,sBACA,SACA,QACA,6DACA,UACA,UACA,gBACA,WACA,QACA,YACA,YACA,eACA,SACA,aACA,oBACA,SACA,+CACA,YACA,OACA,gBACA,SACA,YACA,oCACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,cACA,QACA,uCACA,OACA,6BACA,UACA,QACA,SACA,UACA,SACA,QACA,QACA,aACA,WACA,WACA,gBACA,wBACA,8CACA,0BACA,SACA,uBACA,aACA,yCACA,UACA,cACA,gBACA,YACA,UACA,UACA,YACA,aACA,SACA,QACA,UACA,SACA,4BACA,aACA,6BACA,aACA,yBACA,8BACA,OACA,UACA,WACA,QACA,iCACA,aACA,aACA,aACA,QACA,YACA,WACA,SACA,SACA,WACA,aACA,UACA,gBACA,cACA,iBACA,UACA,YACA,oBACA,SACA,QACA,QACA,OACA,cACA,OACA,SACA,OACA,mBACA,mBACA,oBACA,WACA,SACA,4BACA,WACA,cACA,sBACA,WACA,QACA,WACA,QACA,UACA,UACA,SACA,2BACA,SACA,eACA,kBACA,aACA,cACA,SACA,YACA,+CACA,WACA,yBACA,WACA,eACA,aACA,UACA,UACA,WACA,cACA,wBACA,cACA,4BACA,uBACA,WACA,iCACA,OACA,oCACA,OACA,WACA,aACA,UACA,cACA,eACA,UACA,QACA,SACA,sBACA,SACA,6BACA,+BACA,UACA,SACA,6CACA,iCACA,UACA,aACA,iBACA,mCACA,qCACA,2BACA,wBACA,WACA,UACA,oBACA,QACA,QACA,UACA,eACA,SACA,UACF,EAIaC,EAA+D,CAC1E,GAAI,UACJ,GAAI,6BACJ,GAAI,cACJ,GAAI,sBACJ,GAAI,WACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACJ,GAAI,aACJ,GAAI,YACJ,GAAI,iBACJ,GAAI,UACJ,GAAI,YACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,aACJ,GAAI,yBACJ,GAAI,WACJ,GAAI,aACJ,GAAI,UACJ,GAAI,eACJ,GAAI,WACJ,GAAI,UACJ,GAAI,UACJ,GAAI,QACJ,GAAI,mBACJ,GAAI,UACJ,GAAI,oBACJ,GAAI,mCACJ,GAAI,mCACJ,GAAI,SACJ,GAAI,gBACJ,GAAI,SACJ,GAAI,gBACJ,GAAI,WACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,gCACJ,GAAI,yCACJ,GAAI,iCACJ,GAAI,cACJ,GAAI,cACJ,GAAI,gBACJ,GAAI,qBACJ,GAAI,QACJ,GAAI,WACJ,GAAI,QACJ,GAAI,WACJ,GAAI,aACJ,GAAI,OACJ,GAAI,aACJ,GAAI,UACJ,GAAI,mBACJ,GAAI,SACJ,GAAI,UACJ,GAAI,UACJ,GAAI,WACJ,GAAI,UACJ,GAAI,WACJ,GAAI,0BACJ,GAAI,UACJ,GAAI,UACJ,GAAI,UACJ,GAAI,QACJ,GAAI,iBACJ,GAAI,UACJ,GAAI,QACJ,GAAI,WACJ,GAAI,UACJ,GAAI,OACJ,GAAI,oCACJ,GAAI,mCACJ,GAAI,sBACJ,GAAI,SACJ,GAAI,QACJ,GAAI,6DACJ,GAAI,UACJ,GAAI,UACJ,GAAI,gBACJ,GAAI,WACJ,GAAI,QACJ,GAAI,YACJ,GAAI,YACJ,GAAI,eACJ,GAAI,SACJ,GAAI,aACJ,GAAI,oBACJ,GAAI,SACJ,GAAI,+CACJ,GAAI,YACJ,GAAI,OACJ,GAAI,gBACJ,GAAI,SACJ,GAAI,YACJ,GAAI,oCACJ,GAAI,WACJ,GAAI,UACJ,GAAI,QACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,SACJ,GAAI,cACJ,GAAI,QACJ,GAAI,uCACJ,GAAI,OACJ,GAAI,6BACJ,GAAI,UACJ,GAAI,QACJ,GAAI,SACJ,GAAI,UACJ,GAAI,SACJ,GAAI,QACJ,GAAI,QACJ,GAAI,aACJ,GAAI,WACJ,GAAI,WACJ,GAAI,gBACJ,GAAI,wBACJ,GAAI,8CACJ,GAAI,0BACJ,GAAI,SACJ,GAAI,uBACJ,GAAI,aACJ,GAAI,yCACJ,GAAI,UACJ,GAAI,cACJ,GAAI,gBACJ,GAAI,YACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,aACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,4BACJ,GAAI,aACJ,GAAI,6BACJ,GAAI,aACJ,GAAI,yBACJ,GAAI,8BACJ,GAAI,OACJ,GAAI,UACJ,GAAI,WACJ,GAAI,QACJ,GAAI,iCACJ,GAAI,aACJ,GAAI,aACJ,GAAI,aACJ,GAAI,QACJ,GAAI,YACJ,GAAI,WACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,aACJ,GAAI,UACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,UACJ,GAAI,YACJ,GAAI,oBACJ,GAAI,SACJ,GAAI,QACJ,GAAI,QACJ,GAAI,OACJ,GAAI,cACJ,GAAI,OACJ,GAAI,SACJ,GAAI,OACJ,GAAI,mBACJ,GAAI,mBACJ,GAAI,oBACJ,GAAI,WACJ,GAAI,SACJ,GAAI,4BACJ,GAAI,WACJ,GAAI,cACJ,GAAI,sBACJ,GAAI,WACJ,GAAI,QACJ,GAAI,WACJ,GAAI,QACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACJ,GAAI,2BACJ,GAAI,SACJ,GAAI,eACJ,GAAI,kBACJ,GAAI,aACJ,GAAI,cACJ,GAAI,SACJ,GAAI,YACJ,GAAI,+CACJ,GAAI,WACJ,GAAI,yBACJ,GAAI,WACJ,GAAI,eACJ,GAAI,aACJ,GAAI,UACJ,GAAI,UACJ,GAAI,WACJ,GAAI,cACJ,GAAI,wBACJ,GAAI,cACJ,GAAI,4BACJ,GAAI,uBACJ,GAAI,WACJ,GAAI,iCACJ,GAAI,OACJ,GAAI,oCACJ,GAAI,OACJ,GAAI,WACJ,GAAI,aACJ,GAAI,UACJ,GAAI,cACJ,GAAI,eACJ,GAAI,UACJ,GAAI,QACJ,GAAI,SACJ,GAAI,sBACJ,GAAI,SACJ,GAAI,6BACJ,GAAI,+BACJ,GAAI,UACJ,GAAI,SACJ,GAAI,6CACJ,GAAI,iCACJ,GAAI,UACJ,GAAI,aACJ,GAAI,iBACJ,GAAI,mCACJ,GAAI,qCACJ,GAAI,2BACJ,GAAI,wBACJ,GAAI,WACJ,GAAI,UACJ,GAAI,oBACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,eACJ,GAAI,SACJ,GAAI,UACN,EAEaC,EAAc,CACzB,gBACA,gBACA,QACA,kBACA,eACA,UACA,kBACA,YACA,gBACA,WACA,kBACA,aACA,iBACA,UACA,kBACA,aACA,kBACA,WACA,oBACA,mBACA,QACA,WACA,gBACA,gBACA,cACA,mBACA,qBACA,gBACA,oBACA,UACA,eACA,aACA,QACA,SACA,wBACA,iBACA,cACA,SACA,gBACA,sBACA,eACA,oBACA,2BACA,cACA,QACA,UACA,OACA,aACA,eACA,kBACA,iBACA,qBACA,2BACA,UACA,YACA,yBACA,gBACA,gBACA,WACA,aACA,YACA,mBACA,gBACA,cACA,gBACA,yBACA,OACA,aACA,iBACA,eACA,aACA,iBACA,aACA,gBACA,QACA,oBACA,UACA,UACA,iBACA,oBACA,kBACA,mBACA,iBACA,kBACA,SACA,iBACA,cACA,gBACA,oBACA,QACA,eACA,qBACA,UACA,mBACA,mBACA,aACA,WACA,iBACA,oBACA,kBACA,gBACA,WACA,UACA,SACA,UACA,UACA,gBACA,oBACA,eACA,eACA,eACA,gBACA,cACA,iBACA,gBACA,YACA,iBACA,SACF,EAIO,SAASC,EACdX,EACAY,EACK,CACD,OAAOA,GAAY,WAAUA,EAAUA,EAAQ,MAAM,GAAG,GAE5D,IAAId,EAAiBE,EACrB,QAAS,EAAI,EAAG,EAAIY,EAAQ,OAAQ,IAElC,GADAd,EAASA,EAA8Bc,EAAQ,CAAC,CAAC,EAE/C,IAAMA,EAAQ,OAAS,IACtB,OAAOd,GAAU,UAAYA,IAAU,MAExC,OAGJ,OAAOA,CACT,CAEO,SAASe,EAAab,EAAac,EAAoB,IAAa,CACzE,SAASC,EAAcf,EAAagB,EAAgB,CAClD,OAAO,OAAO,YACZ,OAAO,QAAQhB,CAAG,EAAE,IAAI,CAAC,CAACiB,EAAKnB,CAAK,IAAM,CACxC,MAAMoB,EAAQ,CAAC,GAAGF,EAAMC,CAAG,EAE3B,OAAI,OAAOnB,GAAU,UAAYA,IAAU,OACzCA,EAAQiB,EAAcjB,EAAiBoB,CAAK,GAEvC,CAACA,EAAM,KAAKJ,CAAS,EAAGhB,CAAK,CACtC,CAAC,CAAA,CAEL,CAEA,OAAOiB,EAAcf,EAAK,EAAE,CAC9B,CAEO,SAASmB,EAAYnB,EAAac,EAAoB,IAAe,CAC1E,SAASM,EAAapB,EAAagB,EAA0B,CAC3D,OAAO,OAAO,QAAQhB,CAAG,EACtB,IAAI,CAAC,CAACiB,EAAKnB,CAAK,IAAM,CACrB,MAAMoB,EAAQ,CAAC,GAAGF,EAAMC,CAAG,EACrBI,EAAUH,EAAM,KAAKJ,CAAS,EAEpC,OAAO,OAAOhB,GAAU,UAAYA,IAAU,KAC1C,CAACuB,EAAS,GAAGD,EAAatB,EAAiBoB,CAAK,CAAC,EACjD,CAACG,CAAO,CACd,CAAC,EACA,KAAA,CACL,CAEA,OAAOD,EAAapB,EAAK,EAAE,CAC7B,CAEO,SAASsB,EACdtB,EACAuB,EACAT,EAAoB,IACf,CACL,SAASU,EAAiBxB,EAAagB,EAAgB,CACrD,OAAO,OAAO,YACZ,OAAO,QAAQhB,CAAG,EACf,IAAI,CAAC,CAACiB,EAAKnB,CAAK,IAAyB,CACxC,MAAMoB,EAAQ,CAAC,GAAGF,EAAMC,CAAG,EAE3B,OACE,OAAOnB,GAAU,UACjBA,IAAU,MACV,EAAEA,aAAiB,QAEnBA,EAAQ0B,EAAiB1B,EAAOoB,CAAK,GAEhCK,EAAQ,SAASL,EAAM,KAAKJ,CAAS,CAAC,EAAI,CAAA,EAAK,CAACG,EAAKnB,CAAK,CACnE,CAAC,EACA,OAAO2B,GAASA,EAAM,MAAM,CAAA,CAEnC,CAEA,OAAOF,EAAQ,OAASC,EAAiBxB,EAAK,CAAA,CAAE,EAAIA,CACtD,CAEO,SAAS0B,EACdC,EACAC,EAAkB,iEAClB,CAEA,MAAMC,EAAe,OAAO,OAAO,gBAAgB,IAAI,WAAWF,CAAM,CAAC,EAGzE,IAAIG,EAAS,GACb,QAASC,EAAI,EAAGA,EAAIJ,EAAQI,IAC1BD,GAAUF,EAAQ,OAAOC,EAAaE,CAAC,EAAIH,EAAQ,MAAM,EAG3D,OAAOE,CACT"}
1
+ {"version":3,"file":"general.cjs.js","sources":["../../src/utils/general.ts"],"sourcesContent":["export type Required<T, K extends keyof T> = { [P in K]-?: T[P] }\nexport type Optional<T, K extends keyof T> = Partial<Pick<T, K>>\nexport type OptionalPropertyNames<T> = {\n [K in keyof T]-?: {} extends { [P in K]: T[K] } ? K : never\n}[keyof T]\nexport type IsOptional<T, K extends keyof T> =\n K extends OptionalPropertyNames<T> ? true : false\n\nexport function openInNewTab(url: string, target = \"_blank\"): void {\n window.open(url, target)\n}\n\nexport function wrap(\n newFn: {\n before?: (...args: any[]) => void\n after?: (...args: any[]) => void\n },\n fn?: (...args: any[]) => any,\n): (...args: any[]) => any {\n return (...args) => {\n if (newFn.before !== undefined) {\n newFn.before(...(args as unknown[]))\n }\n let value\n if (fn !== undefined) {\n value = fn(...(args as unknown[])) as unknown\n }\n if (newFn.after !== undefined) {\n newFn.after(...(args as unknown[]))\n }\n return value\n }\n}\n\nexport function snakeCaseToCamelCase(obj: Record<string, any>): void {\n Object.entries(obj).forEach(([snakeKey, value]) => {\n if (typeof value === \"object\") snakeCaseToCamelCase(value as object)\n\n const camelKey = snakeKey.replace(/_+[a-z]/g, _char =>\n _char[_char.length - 1].toUpperCase(),\n )\n\n delete obj[snakeKey]\n obj[camelKey] = value as unknown\n })\n}\n\nexport function camelCaseToSnakeCase(obj: Record<string, any>): void {\n Object.entries(obj).forEach(([camelKey, value]) => {\n if (typeof value === \"object\") camelCaseToSnakeCase(value as object)\n\n const snakeKey = camelKey.replace(\n /[A-Z]/g,\n char => `_${char.toLowerCase()}`,\n )\n\n delete obj[camelKey]\n obj[snakeKey] = value as unknown\n })\n}\n\nexport const MIN_DATE = new Date(0, 0, 0)\n\nexport function generateSecureRandomString(\n length: number,\n charSet: string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",\n) {\n // Create an array of 32-bit unsigned integers\n const randomValues = window.crypto.getRandomValues(new Uint8Array(length))\n\n // Map the random values to characters from our string\n let result = \"\"\n for (let i = 0; i < length; i++) {\n result += charSet.charAt(randomValues[i] % charSet.length)\n }\n\n return result\n}\n"],"names":["openInNewTab","url","target","wrap","newFn","fn","args","value","snakeCaseToCamelCase","obj","snakeKey","camelKey","_char","camelCaseToSnakeCase","char","MIN_DATE","generateSecureRandomString","length","charSet","randomValues","result","i"],"mappings":"gFAQO,SAASA,EAAaC,EAAaC,EAAS,SAAgB,CACjE,OAAO,KAAKD,EAAKC,CAAM,CACzB,CAEO,SAASC,EACdC,EAIAC,EACyB,CACzB,MAAO,IAAIC,IAAS,CACdF,EAAM,SAAW,QACnBA,EAAM,OAAO,GAAIE,CAAkB,EAErC,IAAIC,EACJ,OAAIF,IAAO,SACTE,EAAQF,EAAG,GAAIC,CAAkB,GAE/BF,EAAM,QAAU,QAClBA,EAAM,MAAM,GAAIE,CAAkB,EAE7BC,CACT,CACF,CAEO,SAASC,EAAqBC,EAAgC,CACnE,OAAO,QAAQA,CAAG,EAAE,QAAQ,CAAC,CAACC,EAAUH,CAAK,IAAM,CAC7C,OAAOA,GAAU,UAAUC,EAAqBD,CAAe,EAEnE,MAAMI,EAAWD,EAAS,QAAQ,cAChCE,EAAMA,EAAM,OAAS,CAAC,EAAE,YAAA,CAAY,EAGtC,OAAOH,EAAIC,CAAQ,EACnBD,EAAIE,CAAQ,EAAIJ,CAClB,CAAC,CACH,CAEO,SAASM,EAAqBJ,EAAgC,CACnE,OAAO,QAAQA,CAAG,EAAE,QAAQ,CAAC,CAACE,EAAUJ,CAAK,IAAM,CAC7C,OAAOA,GAAU,UAAUM,EAAqBN,CAAe,EAEnE,MAAMG,EAAWC,EAAS,QACxB,SACAG,GAAQ,IAAIA,EAAK,YAAA,CAAa,EAAA,EAGhC,OAAOL,EAAIE,CAAQ,EACnBF,EAAIC,CAAQ,EAAIH,CAClB,CAAC,CACH,CAEO,MAAMQ,EAAW,IAAI,KAAK,EAAG,EAAG,CAAC,EAEjC,SAASC,EACdC,EACAC,EAAkB,iEAClB,CAEA,MAAMC,EAAe,OAAO,OAAO,gBAAgB,IAAI,WAAWF,CAAM,CAAC,EAGzE,IAAIG,EAAS,GACb,QAASC,EAAI,EAAGA,EAAIJ,EAAQI,IAC1BD,GAAUF,EAAQ,OAAOC,EAAaE,CAAC,EAAIH,EAAQ,MAAM,EAG3D,OAAOE,CACT"}