Spaces:
Running
Running
// src/format.ts | |
var POSITIONALS_EXP = /(%?)(%([sdijo]))/g; | |
function serializePositional(positional, flag) { | |
switch (flag) { | |
case "s": | |
return positional; | |
case "d": | |
case "i": | |
return Number(positional); | |
case "j": | |
return JSON.stringify(positional); | |
case "o": { | |
if (typeof positional === "string") { | |
return positional; | |
} | |
const json = JSON.stringify(positional); | |
if (json === "{}" || json === "[]" || /^\[object .+?\]$/.test(json)) { | |
return positional; | |
} | |
return json; | |
} | |
} | |
} | |
function format(message, ...positionals) { | |
if (positionals.length === 0) { | |
return message; | |
} | |
let positionalIndex = 0; | |
let formattedMessage = message.replace( | |
POSITIONALS_EXP, | |
(match, isEscaped, _, flag) => { | |
const positional = positionals[positionalIndex]; | |
const value = serializePositional(positional, flag); | |
if (!isEscaped) { | |
positionalIndex++; | |
return value; | |
} | |
return match; | |
} | |
); | |
if (positionalIndex < positionals.length) { | |
formattedMessage += ` ${positionals.slice(positionalIndex).join(" ")}`; | |
} | |
formattedMessage = formattedMessage.replace(/%{2,2}/g, "%"); | |
return formattedMessage; | |
} | |
// src/invariant.ts | |
var STACK_FRAMES_TO_IGNORE = 2; | |
function cleanErrorStack(error) { | |
if (!error.stack) { | |
return; | |
} | |
const nextStack = error.stack.split("\n"); | |
nextStack.splice(1, STACK_FRAMES_TO_IGNORE); | |
error.stack = nextStack.join("\n"); | |
} | |
var InvariantError = class extends Error { | |
constructor(message, ...positionals) { | |
super(message); | |
this.message = message; | |
this.name = "Invariant Violation"; | |
this.message = format(message, ...positionals); | |
cleanErrorStack(this); | |
} | |
}; | |
var invariant = (predicate, message, ...positionals) => { | |
if (!predicate) { | |
throw new InvariantError(message, ...positionals); | |
} | |
}; | |
invariant.as = (ErrorConstructor, predicate, message, ...positionals) => { | |
if (!predicate) { | |
const formatMessage = positionals.length === 0 ? message : format(message, ...positionals); | |
let error; | |
try { | |
error = Reflect.construct(ErrorConstructor, [ | |
formatMessage | |
]); | |
} catch (err) { | |
error = ErrorConstructor(formatMessage); | |
} | |
throw error; | |
} | |
}; | |
export { | |
InvariantError, | |
format, | |
invariant | |
}; | |
//# sourceMappingURL=index.mjs.map |