@economic/taco 14.1.0 → 14.1.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.
@@ -57,9 +57,10 @@ const parseFromCustomString = (date = "", mask = "dd.mm.yy", defaultMonth = void
57
57
  month = inputParts[mm];
58
58
  year = getFullYear(inputParts[yy]);
59
59
  }
60
- const parsedDay = Math.trunc(Number(day ?? ""));
61
- const parsedMonth = Math.trunc(Number(month ?? ""));
62
- const parsedYear = Math.trunc(Number(year ?? ""));
60
+ const toNumber = (value) => value ? Math.trunc(Number(value)) : Number.NaN;
61
+ const parsedDay = toNumber(day);
62
+ const parsedMonth = toNumber(month);
63
+ const parsedYear = toNumber(year);
63
64
  const currentDate = /* @__PURE__ */ new Date();
64
65
  return new Date(
65
66
  // Year
@@ -1 +1 @@
1
- {"version":3,"file":"date.cjs","sources":["../../src/utils/date.ts"],"sourcesContent":["import { isDate, isValid } from 'date-fns';\n\nexport const isWeakEqual = (leftDate: Date, rightDate: Date) => {\n return (\n leftDate.getFullYear() === rightDate.getFullYear() &&\n leftDate.getMonth() === rightDate.getMonth() &&\n leftDate.getDate() === rightDate.getDate()\n );\n};\n\nexport function parse(date: string | Date | undefined) {\n let value: Date | undefined;\n\n if (isDate(date)) {\n value = date as Date;\n } else if (typeof date === 'string') {\n value = parseFromISOString(date);\n }\n\n if (!isValid(value)) {\n return undefined;\n }\n\n return value;\n}\n\nexport function format(date: string | Date | undefined, mask = 'dd.mm.yy'): string | undefined {\n if (date === undefined) {\n return undefined;\n }\n\n const value = parse(date);\n\n if (!isValid(value) || value === undefined) {\n return undefined;\n }\n\n const pad = (v: number): string => String(v).padStart(2, '0');\n\n return mask\n .replace('dd', pad(value.getDate()))\n .replace('mm', pad(value.getMonth() + 1))\n .replace('yy', String(value.getFullYear()).slice(2));\n}\n\nexport const parseFromCustomString = (\n date = '',\n mask = 'dd.mm.yy',\n defaultMonth: number | undefined = undefined,\n defaultYear: number | undefined = undefined\n): Date | undefined => {\n if (!date || !date.length) {\n return undefined;\n }\n\n const sanitizedMask = mask.split(/[^dmy]/u);\n const dd = sanitizedMask.findIndex(x => x === 'dd');\n const mm = sanitizedMask.findIndex(x => x === 'mm');\n const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');\n\n let day: string | undefined;\n let month: string | undefined;\n let year: string | undefined;\n\n const getFullYear = (y: string | undefined) => {\n if (y && y.length === 2) {\n const z = Math.trunc(Number(y));\n\n return z > 50 ? `19${y}` : `20${y}`;\n }\n\n return y;\n };\n\n const inputParts = date.split(/\\D/u);\n\n if (inputParts.length === 1 && inputParts[0]) {\n const fullDate = inputParts[0];\n const unseparatedMask = mask.replaceAll(/[^dmy]/gu, '');\n\n day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);\n month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);\n // account for full years\n year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3));\n } else {\n day = inputParts[dd];\n month = inputParts[mm];\n year = getFullYear(inputParts[yy]);\n }\n\n const parsedDay = Math.trunc(Number(day ?? ''));\n const parsedMonth = Math.trunc(Number(month ?? ''));\n const parsedYear = Math.trunc(Number(year ?? ''));\n\n const currentDate = new Date();\n\n return new Date(\n // Year\n Object.is(parsedYear, Number.NaN) ? (defaultYear ?? currentDate.getFullYear()) : parsedYear,\n // Month - months are zero based in javascript, so subtract a day\n Object.is(parsedMonth, Number.NaN) ? (defaultMonth ?? currentDate.getMonth()) : parsedMonth - 1,\n // Day\n Object.is(parsedDay, Number.NaN) ? currentDate.getDate() : parsedDay,\n // Hours\n 12,\n // Minutes - set to midday to avoid UTC offset causing dates to be mismatched server side\n 0\n );\n};\n\nexport const parseFromISOString = (date: string): Date | undefined => {\n const tempDate = new Date(date);\n return isValid(tempDate) ? parseFromCustomString(format(tempDate)) : undefined;\n};\n"],"names":["isDate","isValid"],"mappings":"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"}
1
+ {"version":3,"file":"date.cjs","sources":["../../src/utils/date.ts"],"sourcesContent":["import { isDate, isValid } from 'date-fns';\n\nexport const isWeakEqual = (leftDate: Date, rightDate: Date) => {\n return (\n leftDate.getFullYear() === rightDate.getFullYear() &&\n leftDate.getMonth() === rightDate.getMonth() &&\n leftDate.getDate() === rightDate.getDate()\n );\n};\n\nexport function parse(date: string | Date | undefined) {\n let value: Date | undefined;\n\n if (isDate(date)) {\n value = date as Date;\n } else if (typeof date === 'string') {\n value = parseFromISOString(date);\n }\n\n if (!isValid(value)) {\n return undefined;\n }\n\n return value;\n}\n\nexport function format(date: string | Date | undefined, mask = 'dd.mm.yy'): string | undefined {\n if (date === undefined) {\n return undefined;\n }\n\n const value = parse(date);\n\n if (!isValid(value) || value === undefined) {\n return undefined;\n }\n\n const pad = (v: number): string => String(v).padStart(2, '0');\n\n return mask\n .replace('dd', pad(value.getDate()))\n .replace('mm', pad(value.getMonth() + 1))\n .replace('yy', String(value.getFullYear()).slice(2));\n}\n\nexport const parseFromCustomString = (\n date = '',\n mask = 'dd.mm.yy',\n defaultMonth: number | undefined = undefined,\n defaultYear: number | undefined = undefined\n): Date | undefined => {\n if (!date || !date.length) {\n return undefined;\n }\n\n const sanitizedMask = mask.split(/[^dmy]/u);\n const dd = sanitizedMask.findIndex(x => x === 'dd');\n const mm = sanitizedMask.findIndex(x => x === 'mm');\n const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');\n\n let day: string | undefined;\n let month: string | undefined;\n let year: string | undefined;\n\n const getFullYear = (y: string | undefined) => {\n if (y && y.length === 2) {\n const z = Math.trunc(Number(y));\n\n return z > 50 ? `19${y}` : `20${y}`;\n }\n\n return y;\n };\n\n const inputParts = date.split(/\\D/u);\n\n if (inputParts.length === 1 && inputParts[0]) {\n const fullDate = inputParts[0];\n const unseparatedMask = mask.replaceAll(/[^dmy]/gu, '');\n\n day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);\n month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);\n // account for full years\n year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3));\n } else {\n day = inputParts[dd];\n month = inputParts[mm];\n year = getFullYear(inputParts[yy]);\n }\n\n // Missing parts must be NaN (not 0, which Number('') gives) so they fall back to the current/default values\n const toNumber = (value: string | undefined) => (value ? Math.trunc(Number(value)) : Number.NaN);\n const parsedDay = toNumber(day);\n const parsedMonth = toNumber(month);\n const parsedYear = toNumber(year);\n\n const currentDate = new Date();\n\n return new Date(\n // Year\n Object.is(parsedYear, Number.NaN) ? (defaultYear ?? currentDate.getFullYear()) : parsedYear,\n // Month - months are zero based in javascript, so subtract a day\n Object.is(parsedMonth, Number.NaN) ? (defaultMonth ?? currentDate.getMonth()) : parsedMonth - 1,\n // Day\n Object.is(parsedDay, Number.NaN) ? currentDate.getDate() : parsedDay,\n // Hours\n 12,\n // Minutes - set to midday to avoid UTC offset causing dates to be mismatched server side\n 0\n );\n};\n\nexport const parseFromISOString = (date: string): Date | undefined => {\n const tempDate = new Date(date);\n return isValid(tempDate) ? parseFromCustomString(format(tempDate)) : undefined;\n};\n"],"names":["isDate","isValid"],"mappings":"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"}
@@ -55,9 +55,10 @@ const parseFromCustomString = (date = "", mask = "dd.mm.yy", defaultMonth = void
55
55
  month = inputParts[mm];
56
56
  year = getFullYear(inputParts[yy]);
57
57
  }
58
- const parsedDay = Math.trunc(Number(day ?? ""));
59
- const parsedMonth = Math.trunc(Number(month ?? ""));
60
- const parsedYear = Math.trunc(Number(year ?? ""));
58
+ const toNumber = (value) => value ? Math.trunc(Number(value)) : Number.NaN;
59
+ const parsedDay = toNumber(day);
60
+ const parsedMonth = toNumber(month);
61
+ const parsedYear = toNumber(year);
61
62
  const currentDate = /* @__PURE__ */ new Date();
62
63
  return new Date(
63
64
  // Year
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sources":["../../src/utils/date.ts"],"sourcesContent":["import { isDate, isValid } from 'date-fns';\n\nexport const isWeakEqual = (leftDate: Date, rightDate: Date) => {\n return (\n leftDate.getFullYear() === rightDate.getFullYear() &&\n leftDate.getMonth() === rightDate.getMonth() &&\n leftDate.getDate() === rightDate.getDate()\n );\n};\n\nexport function parse(date: string | Date | undefined) {\n let value: Date | undefined;\n\n if (isDate(date)) {\n value = date as Date;\n } else if (typeof date === 'string') {\n value = parseFromISOString(date);\n }\n\n if (!isValid(value)) {\n return undefined;\n }\n\n return value;\n}\n\nexport function format(date: string | Date | undefined, mask = 'dd.mm.yy'): string | undefined {\n if (date === undefined) {\n return undefined;\n }\n\n const value = parse(date);\n\n if (!isValid(value) || value === undefined) {\n return undefined;\n }\n\n const pad = (v: number): string => String(v).padStart(2, '0');\n\n return mask\n .replace('dd', pad(value.getDate()))\n .replace('mm', pad(value.getMonth() + 1))\n .replace('yy', String(value.getFullYear()).slice(2));\n}\n\nexport const parseFromCustomString = (\n date = '',\n mask = 'dd.mm.yy',\n defaultMonth: number | undefined = undefined,\n defaultYear: number | undefined = undefined\n): Date | undefined => {\n if (!date || !date.length) {\n return undefined;\n }\n\n const sanitizedMask = mask.split(/[^dmy]/u);\n const dd = sanitizedMask.findIndex(x => x === 'dd');\n const mm = sanitizedMask.findIndex(x => x === 'mm');\n const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');\n\n let day: string | undefined;\n let month: string | undefined;\n let year: string | undefined;\n\n const getFullYear = (y: string | undefined) => {\n if (y && y.length === 2) {\n const z = Math.trunc(Number(y));\n\n return z > 50 ? `19${y}` : `20${y}`;\n }\n\n return y;\n };\n\n const inputParts = date.split(/\\D/u);\n\n if (inputParts.length === 1 && inputParts[0]) {\n const fullDate = inputParts[0];\n const unseparatedMask = mask.replaceAll(/[^dmy]/gu, '');\n\n day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);\n month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);\n // account for full years\n year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3));\n } else {\n day = inputParts[dd];\n month = inputParts[mm];\n year = getFullYear(inputParts[yy]);\n }\n\n const parsedDay = Math.trunc(Number(day ?? ''));\n const parsedMonth = Math.trunc(Number(month ?? ''));\n const parsedYear = Math.trunc(Number(year ?? ''));\n\n const currentDate = new Date();\n\n return new Date(\n // Year\n Object.is(parsedYear, Number.NaN) ? (defaultYear ?? currentDate.getFullYear()) : parsedYear,\n // Month - months are zero based in javascript, so subtract a day\n Object.is(parsedMonth, Number.NaN) ? (defaultMonth ?? currentDate.getMonth()) : parsedMonth - 1,\n // Day\n Object.is(parsedDay, Number.NaN) ? currentDate.getDate() : parsedDay,\n // Hours\n 12,\n // Minutes - set to midday to avoid UTC offset causing dates to be mismatched server side\n 0\n );\n};\n\nexport const parseFromISOString = (date: string): Date | undefined => {\n const tempDate = new Date(date);\n return isValid(tempDate) ? parseFromCustomString(format(tempDate)) : undefined;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date.js","sources":["../../src/utils/date.ts"],"sourcesContent":["import { isDate, isValid } from 'date-fns';\n\nexport const isWeakEqual = (leftDate: Date, rightDate: Date) => {\n return (\n leftDate.getFullYear() === rightDate.getFullYear() &&\n leftDate.getMonth() === rightDate.getMonth() &&\n leftDate.getDate() === rightDate.getDate()\n );\n};\n\nexport function parse(date: string | Date | undefined) {\n let value: Date | undefined;\n\n if (isDate(date)) {\n value = date as Date;\n } else if (typeof date === 'string') {\n value = parseFromISOString(date);\n }\n\n if (!isValid(value)) {\n return undefined;\n }\n\n return value;\n}\n\nexport function format(date: string | Date | undefined, mask = 'dd.mm.yy'): string | undefined {\n if (date === undefined) {\n return undefined;\n }\n\n const value = parse(date);\n\n if (!isValid(value) || value === undefined) {\n return undefined;\n }\n\n const pad = (v: number): string => String(v).padStart(2, '0');\n\n return mask\n .replace('dd', pad(value.getDate()))\n .replace('mm', pad(value.getMonth() + 1))\n .replace('yy', String(value.getFullYear()).slice(2));\n}\n\nexport const parseFromCustomString = (\n date = '',\n mask = 'dd.mm.yy',\n defaultMonth: number | undefined = undefined,\n defaultYear: number | undefined = undefined\n): Date | undefined => {\n if (!date || !date.length) {\n return undefined;\n }\n\n const sanitizedMask = mask.split(/[^dmy]/u);\n const dd = sanitizedMask.findIndex(x => x === 'dd');\n const mm = sanitizedMask.findIndex(x => x === 'mm');\n const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');\n\n let day: string | undefined;\n let month: string | undefined;\n let year: string | undefined;\n\n const getFullYear = (y: string | undefined) => {\n if (y && y.length === 2) {\n const z = Math.trunc(Number(y));\n\n return z > 50 ? `19${y}` : `20${y}`;\n }\n\n return y;\n };\n\n const inputParts = date.split(/\\D/u);\n\n if (inputParts.length === 1 && inputParts[0]) {\n const fullDate = inputParts[0];\n const unseparatedMask = mask.replaceAll(/[^dmy]/gu, '');\n\n day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);\n month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);\n // account for full years\n year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3));\n } else {\n day = inputParts[dd];\n month = inputParts[mm];\n year = getFullYear(inputParts[yy]);\n }\n\n // Missing parts must be NaN (not 0, which Number('') gives) so they fall back to the current/default values\n const toNumber = (value: string | undefined) => (value ? Math.trunc(Number(value)) : Number.NaN);\n const parsedDay = toNumber(day);\n const parsedMonth = toNumber(month);\n const parsedYear = toNumber(year);\n\n const currentDate = new Date();\n\n return new Date(\n // Year\n Object.is(parsedYear, Number.NaN) ? (defaultYear ?? currentDate.getFullYear()) : parsedYear,\n // Month - months are zero based in javascript, so subtract a day\n Object.is(parsedMonth, Number.NaN) ? (defaultMonth ?? currentDate.getMonth()) : parsedMonth - 1,\n // Day\n Object.is(parsedDay, Number.NaN) ? currentDate.getDate() : parsedDay,\n // Hours\n 12,\n // Minutes - set to midday to avoid UTC offset causing dates to be mismatched server side\n 0\n );\n};\n\nexport const parseFromISOString = (date: string): Date | undefined => {\n const tempDate = new Date(date);\n return isValid(tempDate) ? parseFromCustomString(format(tempDate)) : undefined;\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@economic/taco",
3
- "version": "14.1.0",
3
+ "version": "14.1.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -95,5 +95,5 @@
95
95
  "optionalDependencies": {
96
96
  "@rollup/rollup-linux-x64-gnu": "^4.63.4"
97
97
  },
98
- "gitHead": "d733de8694b838f5adef2658d4337a081683190f"
98
+ "gitHead": "a6870b0b611e53cfb1bba68a072bf09ff35f286c"
99
99
  }