120 lines
3.4 KiB
JavaScript
120 lines
3.4 KiB
JavaScript
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/index.ts
|
|
var src_exports = {};
|
|
__export(src_exports, {
|
|
InvariantError: () => InvariantError,
|
|
format: () => format,
|
|
invariant: () => invariant
|
|
});
|
|
module.exports = __toCommonJS(src_exports);
|
|
|
|
// 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;
|
|
}
|
|
};
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
InvariantError,
|
|
format,
|
|
invariant
|
|
});
|
|
//# sourceMappingURL=index.js.map
|