@mrshmllw/smores-react 11.0.1-crumbs-feature-adjust-package.2 → 11.0.1-crumbs-feature-adjust-package-2.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.
package/dist/index.d.ts CHANGED
@@ -46,6 +46,6 @@ export * from './theme';
46
46
  export * from './Toggle';
47
47
  export * from './Tooltip';
48
48
  export * from './utils/dateOfBirth/dateOfBirthValidator';
49
- export * from './utils/dateOfBirth/dateOfBirthValidatorUtils';
49
+ export * from './utils/dateOfBirth/dateOfBirthValidator.utils';
50
50
  export * from './utils/dateOfBirth/schema';
51
51
  export * from './utils/space';
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@ export * from './theme';
46
46
  export * from './Toggle';
47
47
  export * from './Tooltip';
48
48
  export * from './utils/dateOfBirth/dateOfBirthValidator';
49
- export * from './utils/dateOfBirth/dateOfBirthValidatorUtils';
49
+ export * from './utils/dateOfBirth/dateOfBirthValidator.utils';
50
50
  export * from './utils/dateOfBirth/schema';
51
51
  export * from './utils/space';
52
52
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,0CAA0C,CAAA;AACxD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA","sourcesContent":["export * from './Accordion'\nexport * from './ActionDropdown'\nexport * from './Badge'\nexport * from './BadgeList'\nexport * from './Banner'\nexport * from './Box'\nexport * from './Button'\nexport * from './Card'\nexport * from './CheckBox'\nexport * from './CheckBoxGroup'\nexport * from './Chip'\nexport * from './CurrencyInput'\nexport * from './Datepicker'\nexport * from './Divider'\nexport * from './Dropdown'\nexport * from './fields/Field'\nexport * from './fields/Fieldset'\nexport * from './fontStyle'\nexport * from './hooks'\nexport * from './Icon'\nexport * from './IconStrict'\nexport * from './IconWrapper'\nexport * from './LabelledText'\nexport * from './Link'\nexport * from './Loader'\nexport * from './Logo'\nexport * from './Modal'\nexport * from './NumberInput'\nexport * from './Pagination'\nexport * from './RadioGroup'\nexport * from './RichText'\nexport * from './RichTextEditor'\nexport * from './Row'\nexport * from './SearchInput'\nexport * from './SegmentedControl'\nexport * from './SliderInput'\nexport * from './Snackbar'\nexport * from './SupportMessage'\nexport * from './Table'\nexport * from './Tag'\nexport * from './Text'\nexport * from './Textarea'\nexport * from './TextDateOfBirthInput'\nexport * from './TextInput'\nexport * from './theme'\nexport * from './Toggle'\nexport * from './Tooltip'\nexport * from './utils/dateOfBirth/dateOfBirthValidator'\nexport * from './utils/dateOfBirth/dateOfBirthValidatorUtils'\nexport * from './utils/dateOfBirth/schema'\nexport * from './utils/space'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,0CAA0C,CAAA;AACxD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA","sourcesContent":["export * from './Accordion'\nexport * from './ActionDropdown'\nexport * from './Badge'\nexport * from './BadgeList'\nexport * from './Banner'\nexport * from './Box'\nexport * from './Button'\nexport * from './Card'\nexport * from './CheckBox'\nexport * from './CheckBoxGroup'\nexport * from './Chip'\nexport * from './CurrencyInput'\nexport * from './Datepicker'\nexport * from './Divider'\nexport * from './Dropdown'\nexport * from './fields/Field'\nexport * from './fields/Fieldset'\nexport * from './fontStyle'\nexport * from './hooks'\nexport * from './Icon'\nexport * from './IconStrict'\nexport * from './IconWrapper'\nexport * from './LabelledText'\nexport * from './Link'\nexport * from './Loader'\nexport * from './Logo'\nexport * from './Modal'\nexport * from './NumberInput'\nexport * from './Pagination'\nexport * from './RadioGroup'\nexport * from './RichText'\nexport * from './RichTextEditor'\nexport * from './Row'\nexport * from './SearchInput'\nexport * from './SegmentedControl'\nexport * from './SliderInput'\nexport * from './Snackbar'\nexport * from './SupportMessage'\nexport * from './Table'\nexport * from './Tag'\nexport * from './Text'\nexport * from './Textarea'\nexport * from './TextDateOfBirthInput'\nexport * from './TextInput'\nexport * from './theme'\nexport * from './Toggle'\nexport * from './Tooltip'\nexport * from './utils/dateOfBirth/dateOfBirthValidator'\nexport * from './utils/dateOfBirth/dateOfBirthValidator.utils'\nexport * from './utils/dateOfBirth/schema'\nexport * from './utils/space'\n"]}
@@ -1,5 +1,5 @@
1
1
  import { isValid, parse } from 'date-fns';
2
- import { error, getImpossibleFields, getInvalidInputFields, getMissingFields, is17YearsOld, } from './dateOfBirthValidatorUtils';
2
+ import { error, getImpossibleFields, getInvalidInputFields, getMissingFields, is17YearsOld, } from './dateOfBirthValidator.utils';
3
3
  import { FieldValidationError, InputValidationError } from './schema';
4
4
  export const dateOfBirthValidator = (dateObject) => {
5
5
  const invalidFields = getInvalidInputFields(dateObject);
@@ -1 +1 @@
1
- {"version":3,"file":"dateOfBirthValidator.js","sourceRoot":"","sources":["../../../src/utils/dateOfBirth/dateOfBirthValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEzC,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,GACb,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAsB,EAAE,EAAE;IAC7D,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAEvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAElD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAExD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CACV,oBAAoB,CAAC,yBAAyB,EAC9C,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAChB,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAC1D,YAAY,EACZ,IAAI,IAAI,EAAE,CACX,CAAA;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;QACxD,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;AAClD,CAAC,CAAA","sourcesContent":["import { isValid, parse } from 'date-fns'\n\nimport {\n error,\n getImpossibleFields,\n getInvalidInputFields,\n getMissingFields,\n is17YearsOld,\n} from './dateOfBirthValidatorUtils'\nimport { FieldValidationError, InputValidationError } from './schema'\n\nimport { DateObject } from '../../TextDateOfBirthInput'\n\nexport const dateOfBirthValidator = (dateObject: DateObject) => {\n const invalidFields = getInvalidInputFields(dateObject)\n\n if (invalidFields.length !== 0) {\n return error(FieldValidationError.InvalidInputValueError, invalidFields)\n }\n\n const missingFields = getMissingFields(dateObject)\n\n if (missingFields.length !== 0) {\n return error(FieldValidationError.MissingFieldError, missingFields)\n }\n\n const impossibleValues = getImpossibleFields(dateObject)\n\n if (impossibleValues.length !== 0) {\n return error(\n FieldValidationError.ImpossibleFieldValueError,\n impossibleValues,\n )\n }\n\n const date = parse(\n `${dateObject.year}-${dateObject.month}-${dateObject.day}`,\n 'yyyy-MM-dd',\n new Date(),\n )\n\n if (isValid(date)) {\n if (!is17YearsOld(date)) {\n return error(InputValidationError.YoungerThan17)\n }\n\n if (date.getFullYear() < 1900) {\n return error(InputValidationError.DateBefore1900Error)\n }\n return { isSuccess: true }\n }\n return error(InputValidationError.RealDateError)\n}\n"]}
1
+ {"version":3,"file":"dateOfBirthValidator.js","sourceRoot":"","sources":["../../../src/utils/dateOfBirth/dateOfBirthValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEzC,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,GACb,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAsB,EAAE,EAAE;IAC7D,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAEvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAElD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAExD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CACV,oBAAoB,CAAC,yBAAyB,EAC9C,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAChB,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAC1D,YAAY,EACZ,IAAI,IAAI,EAAE,CACX,CAAA;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;QACxD,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;AAClD,CAAC,CAAA","sourcesContent":["import { isValid, parse } from 'date-fns'\n\nimport {\n error,\n getImpossibleFields,\n getInvalidInputFields,\n getMissingFields,\n is17YearsOld,\n} from './dateOfBirthValidator.utils'\nimport { FieldValidationError, InputValidationError } from './schema'\n\nimport { DateObject } from '../../TextDateOfBirthInput'\n\nexport const dateOfBirthValidator = (dateObject: DateObject) => {\n const invalidFields = getInvalidInputFields(dateObject)\n\n if (invalidFields.length !== 0) {\n return error(FieldValidationError.InvalidInputValueError, invalidFields)\n }\n\n const missingFields = getMissingFields(dateObject)\n\n if (missingFields.length !== 0) {\n return error(FieldValidationError.MissingFieldError, missingFields)\n }\n\n const impossibleValues = getImpossibleFields(dateObject)\n\n if (impossibleValues.length !== 0) {\n return error(\n FieldValidationError.ImpossibleFieldValueError,\n impossibleValues,\n )\n }\n\n const date = parse(\n `${dateObject.year}-${dateObject.month}-${dateObject.day}`,\n 'yyyy-MM-dd',\n new Date(),\n )\n\n if (isValid(date)) {\n if (!is17YearsOld(date)) {\n return error(InputValidationError.YoungerThan17)\n }\n\n if (date.getFullYear() < 1900) {\n return error(InputValidationError.DateBefore1900Error)\n }\n return { isSuccess: true }\n }\n return error(InputValidationError.RealDateError)\n}\n"]}
@@ -1,4 +1,8 @@
1
- import { DateObject } from '../../TextDateOfBirthInput';
1
+ type DateObject = {
2
+ day?: string | null;
3
+ month?: string | null;
4
+ year?: string | null;
5
+ };
2
6
  declare const dateFields: readonly ["day", "month", "year"];
3
7
  export declare const monthsArray: string[];
4
8
  export declare const validators: Record<(typeof dateFields)[number], (dateField: string | undefined | null) => boolean>;
@@ -86,4 +86,4 @@ export const is17YearsOld = (date) => {
86
86
  const comparisonDate = subYears(new Date(), 17);
87
87
  return !isAfter(date, comparisonDate);
88
88
  };
89
- //# sourceMappingURL=dateOfBirthValidatorUtils.js.map
89
+ //# sourceMappingURL=dateOfBirthValidator.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateOfBirthValidator.utils.js","sourceRoot":"","sources":["../../../src/utils/dateOfBirth/dateOfBirthValidator.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAfter, subYears } from 'date-fns'\n\ntype DateObject = {\n day?: string | null\n month?: string | null\n year?: string | null\n}\n\nconst dateFields = ['day', 'month', 'year'] as const\n\nexport const monthsArray = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nexport const validators: Record<\n (typeof dateFields)[number],\n (dateField: string | undefined | null) => boolean\n> = {\n day: (day) => {\n const dayNumber = Number(day)\n return Boolean(day && dayNumber >= 1 && dayNumber <= 31)\n },\n month: (month) => {\n const monthNumber = Number(month)\n return Boolean(month && monthNumber >= 1 && monthNumber <= 12)\n },\n year: (year) => {\n const yearNumber = Number(year)\n return Boolean(year && yearNumber && year.length === 4 && yearNumber > 0)\n },\n}\n\nexport const isAllowedValue = (value: string | null | undefined) => {\n return value === null || (value && /^\\d+$/.test(value)) || value === ''\n}\n\nexport const getInvalidInputFields = (dateObject: DateObject) => {\n const invalidValues = dateFields.filter((field) => {\n const value = dateObject[field]\n return !isAllowedValue(value)\n })\n\n return invalidValues\n}\n\nexport const getMissingFields = (dateObject: DateObject) => {\n const missingFields = dateFields.filter((field) => {\n return !dateObject[field]\n })\n\n return missingFields\n}\n\nexport const getImpossibleFields = (dateObject: DateObject) => {\n const impossibleValues = dateFields.filter((field) => {\n return !validators[field](dateObject[field])\n })\n\n return impossibleValues\n}\n\nexport const humanReadableJoin = (arr: string[]): string => {\n if (arr.length === 0) {\n return ''\n } else if (arr.length === 1) {\n return arr[0]\n } else if (arr.length === 2) {\n return `${arr[0]} and ${arr[1]}`\n } else {\n const last = arr.pop()\n return `${arr.join(', ')} and ${last}`\n }\n}\n\nexport const createMissingFieldErrorMessage = (missingFields: string[]) => {\n const beginning = 'Date of birth must include '\n const orderedMissingFields = ['day', 'month', 'year'].filter((field) =>\n missingFields.includes(field),\n )\n\n return beginning + humanReadableJoin(orderedMissingFields)\n}\n\nexport const createImpossibleFieldErrorMessage = (\n impossibleFields: string[],\n) => {\n const beginning = 'Please enter a valid '\n const orderedImpossibleFields = ['day', 'month', 'year'].filter((field) =>\n impossibleFields.includes(field),\n )\n\n return beginning + humanReadableJoin(orderedImpossibleFields)\n}\n\nexport const createYoungerThan17ErrorMessage = () => {\n const comparisonDate = subYears(new Date(), 17)\n\n return `Please enter a date of birth on or before ${comparisonDate.getDate()} ${monthsArray[comparisonDate.getMonth()]} ${comparisonDate.getFullYear()}`\n}\n\nexport const error = <T>(\n type: T,\n fields?: string[],\n): {\n error: T\n fields?: string[]\n} => {\n return { error: type, fields }\n}\n\nexport const is17YearsOld = (date: Date) => {\n const comparisonDate = subYears(new Date(), 17)\n\n return !isAfter(date, comparisonDate)\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { createImpossibleFieldErrorMessage, createMissingFieldErrorMessage, createYoungerThan17ErrorMessage, } from './dateOfBirthValidatorUtils';
1
+ import { createImpossibleFieldErrorMessage, createMissingFieldErrorMessage, createYoungerThan17ErrorMessage, } from './dateOfBirthValidator.utils';
2
2
  export var InputValidationError;
3
3
  (function (InputValidationError) {
4
4
  InputValidationError["RealDateError"] = "realDateError";
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/dateOfBirth/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,6BAA6B,CAAA;AAEpC,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,uDAA+B,CAAA;IAC/B,mEAA2C,CAAA;IAC3C,uDAA+B,CAAA;AACjC,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,+DAAuC,CAAA;IACvC,yEAAiD,CAAA;IACjD,+EAAuD,CAAA;AACzD,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CACzC,oCAAoC;IACtC,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAC/C,yCAAyC;IAC3C,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,8BAA8B;IACxE,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,EAAE,GAAG,EAAE,CAClD,8BAA8B;IAChC,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,EAC9C,iCAAiC;IACnC,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,+BAA+B;CACtE,CAAA","sourcesContent":["import {\n createImpossibleFieldErrorMessage,\n createMissingFieldErrorMessage,\n createYoungerThan17ErrorMessage,\n} from './dateOfBirthValidatorUtils'\n\nexport enum InputValidationError {\n RealDateError = 'realDateError',\n DateBefore1900Error = 'dateBefore1900Error',\n YoungerThan17 = 'youngerThan17',\n}\n\nexport enum FieldValidationError {\n MissingFieldError = 'missingFieldError',\n InvalidInputValueError = 'invalidInputValueError',\n ImpossibleFieldValueError = 'impossibleFieldValueError',\n}\n\nexport const dateOfBirthErrorMessages: Record<\n InputValidationError | FieldValidationError,\n (value: string[]) => string\n> = {\n [InputValidationError.RealDateError]: () =>\n 'Please enter a valid date of birth',\n [InputValidationError.DateBefore1900Error]: () =>\n 'Please enter a date of birth after 1900',\n [FieldValidationError.MissingFieldError]: createMissingFieldErrorMessage,\n [FieldValidationError.InvalidInputValueError]: () =>\n 'Please enter a numeric value',\n [FieldValidationError.ImpossibleFieldValueError]:\n createImpossibleFieldErrorMessage,\n [InputValidationError.YoungerThan17]: createYoungerThan17ErrorMessage,\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/utils/dateOfBirth/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AAErC,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,uDAA+B,CAAA;IAC/B,mEAA2C,CAAA;IAC3C,uDAA+B,CAAA;AACjC,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,+DAAuC,CAAA;IACvC,yEAAiD,CAAA;IACjD,+EAAuD,CAAA;AACzD,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CACzC,oCAAoC;IACtC,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAC/C,yCAAyC;IAC3C,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,8BAA8B;IACxE,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,EAAE,GAAG,EAAE,CAClD,8BAA8B;IAChC,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,EAC9C,iCAAiC;IACnC,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,+BAA+B;CACtE,CAAA","sourcesContent":["import {\n createImpossibleFieldErrorMessage,\n createMissingFieldErrorMessage,\n createYoungerThan17ErrorMessage,\n} from './dateOfBirthValidator.utils'\n\nexport enum InputValidationError {\n RealDateError = 'realDateError',\n DateBefore1900Error = 'dateBefore1900Error',\n YoungerThan17 = 'youngerThan17',\n}\n\nexport enum FieldValidationError {\n MissingFieldError = 'missingFieldError',\n InvalidInputValueError = 'invalidInputValueError',\n ImpossibleFieldValueError = 'impossibleFieldValueError',\n}\n\nexport const dateOfBirthErrorMessages: Record<\n InputValidationError | FieldValidationError,\n (value: string[]) => string\n> = {\n [InputValidationError.RealDateError]: () =>\n 'Please enter a valid date of birth',\n [InputValidationError.DateBefore1900Error]: () =>\n 'Please enter a date of birth after 1900',\n [FieldValidationError.MissingFieldError]: createMissingFieldErrorMessage,\n [FieldValidationError.InvalidInputValueError]: () =>\n 'Please enter a numeric value',\n [FieldValidationError.ImpossibleFieldValueError]:\n createImpossibleFieldErrorMessage,\n [InputValidationError.YoungerThan17]: createYoungerThan17ErrorMessage,\n}\n"]}
package/package.json CHANGED
@@ -1,14 +1,7 @@
1
1
  {
2
2
  "name": "@mrshmllw/smores-react",
3
- "version": "11.0.1-crumbs-feature-adjust-package.2",
3
+ "version": "11.0.1-crumbs-feature-adjust-package-2.1",
4
4
  "main": "./dist/index.js",
5
- "module": "./dist/index.js",
6
- "types": "./dist/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "import": "./dist/index.js"
10
- }
11
- },
12
5
  "description": "Collection of React components used by Marshmallow Technology",
13
6
  "type": "module",
14
7
  "keywords": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"dateOfBirthValidatorUtils.js","sourceRoot":"","sources":["../../../src/utils/dateOfBirth/dateOfBirthValidatorUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAfter, subYears } from 'date-fns'\n\nimport { DateObject } from '../../TextDateOfBirthInput'\n\nconst dateFields = ['day', 'month', 'year'] as const\n\nexport const monthsArray = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nexport const validators: Record<\n (typeof dateFields)[number],\n (dateField: string | undefined | null) => boolean\n> = {\n day: (day) => {\n const dayNumber = Number(day)\n return Boolean(day && dayNumber >= 1 && dayNumber <= 31)\n },\n month: (month) => {\n const monthNumber = Number(month)\n return Boolean(month && monthNumber >= 1 && monthNumber <= 12)\n },\n year: (year) => {\n const yearNumber = Number(year)\n return Boolean(year && yearNumber && year.length === 4 && yearNumber > 0)\n },\n}\n\nexport const isAllowedValue = (value: string | null | undefined) => {\n return value === null || (value && /^\\d+$/.test(value)) || value === ''\n}\n\nexport const getInvalidInputFields = (dateObject: DateObject) => {\n const invalidValues = dateFields.filter((field) => {\n const value = dateObject[field]\n return !isAllowedValue(value)\n })\n\n return invalidValues\n}\n\nexport const getMissingFields = (dateObject: DateObject) => {\n const missingFields = dateFields.filter((field) => {\n return !dateObject[field]\n })\n\n return missingFields\n}\n\nexport const getImpossibleFields = (dateObject: DateObject) => {\n const impossibleValues = dateFields.filter((field) => {\n return !validators[field](dateObject[field])\n })\n\n return impossibleValues\n}\n\nexport const humanReadableJoin = (arr: string[]): string => {\n if (arr.length === 0) {\n return ''\n } else if (arr.length === 1) {\n return arr[0]\n } else if (arr.length === 2) {\n return `${arr[0]} and ${arr[1]}`\n } else {\n const last = arr.pop()\n return `${arr.join(', ')} and ${last}`\n }\n}\n\nexport const createMissingFieldErrorMessage = (missingFields: string[]) => {\n const beginning = 'Date of birth must include '\n const orderedMissingFields = ['day', 'month', 'year'].filter((field) =>\n missingFields.includes(field),\n )\n\n return beginning + humanReadableJoin(orderedMissingFields)\n}\n\nexport const createImpossibleFieldErrorMessage = (\n impossibleFields: string[],\n) => {\n const beginning = 'Please enter a valid '\n const orderedImpossibleFields = ['day', 'month', 'year'].filter((field) =>\n impossibleFields.includes(field),\n )\n\n return beginning + humanReadableJoin(orderedImpossibleFields)\n}\n\nexport const createYoungerThan17ErrorMessage = () => {\n const comparisonDate = subYears(new Date(), 17)\n\n return `Please enter a date of birth on or before ${comparisonDate.getDate()} ${monthsArray[comparisonDate.getMonth()]} ${comparisonDate.getFullYear()}`\n}\n\nexport const error = <T>(\n type: T,\n fields?: string[],\n): {\n error: T\n fields?: string[]\n} => {\n return { error: type, fields }\n}\n\nexport const is17YearsOld = (date: Date) => {\n const comparisonDate = subYears(new Date(), 17)\n\n return !isAfter(date, comparisonDate)\n}\n"]}