Files
klz-cables.com/.pnpm-store/v10/files/ed/89797da15a5f4978bea362cbbee1530b89d2b0ffa3ccb3613a39f603180597057644dc23cd54ec80cfed20dd4ab2ab3b1b1bec37dac123a9c26ce6ea3cf5d2
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

50 lines
1.6 KiB
Plaintext

import { normalizeDates } from "./_lib/normalizeDates.js";
/**
* The {@link interval} function options.
*/
/**
* The {@link interval} function result type. It resolves the proper data type.
* It uses the first argument date object type, starting from the start argument,
* then the end interval date. If a context function is passed, it uses the context
* function return type.
*/
/**
* @name interval
* @category Interval Helpers
* @summary Creates an interval object and validates its values.
*
* @description
* Creates a normalized interval object and validates its values. If the interval is invalid, an exception is thrown.
*
* @typeParam StartDate - Start date type.
* @typeParam EndDate - End date type.
* @typeParam Options - Options type.
*
* @param start - The start of the interval.
* @param end - The end of the interval.
* @param options - The options object.
*
* @throws `Start date is invalid` when `start` is invalid.
* @throws `End date is invalid` when `end` is invalid.
* @throws `End date must be after start date` when end is before `start` and `options.assertPositive` is true.
*
* @returns The normalized and validated interval object.
*/
export function interval(start, end, options) {
const [_start, _end] = normalizeDates(options?.in, start, end);
if (isNaN(+_start)) throw new TypeError("Start date is invalid");
if (isNaN(+_end)) throw new TypeError("End date is invalid");
if (options?.assertPositive && +_start > +_end)
throw new TypeError("End date must be after start date");
return { start: _start, end: _end };
}
// Fallback for modularized imports:
export default interval;