@hello-pangea/dnd
Version:
Beautiful and accessible drag and drop for lists with React
33 lines (28 loc) • 1.03 kB
text/typescript
/* eslint-disable no-restricted-syntax */
const isProduction: boolean = process.env.NODE_ENV === 'production';
const prefix = 'Invariant failed';
export class RbdInvariant extends Error {}
RbdInvariant.prototype.toString = function toString() {
return this.message;
};
// A copy-paste of tiny-invariant but with a custom error type
// Throw an error if the condition fails
export function invariant(condition: false, message?: string): never;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function invariant(condition: any, message?: string): asserts condition;
export function invariant(
condition: unknown,
message?: string,
): asserts condition {
if (condition) {
return;
}
if (isProduction) {
// In production we strip the message but still throw
throw new RbdInvariant(prefix);
} else {
// When not in production we allow the message to pass through
// *This block will be removed in production builds*
throw new RbdInvariant(`${prefix}: ${message || ''}`);
}
}