mikroconf
Version:
A flexible, zero-dependency, type-safe configuration manager that just makes sense.
81 lines (79 loc) • 2.76 kB
JavaScript
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/parsers.ts
var parsers_exports = {};
__export(parsers_exports, {
parsers: () => parsers
});
module.exports = __toCommonJS(parsers_exports);
var parsers = {
/**
* @description Parses a string to an integer.
*/
int: (value) => {
const trimmedValue = value.trim();
if (!/^[+-]?\d+$/.test(trimmedValue)) throw new Error(`Cannot parse "${value}" as an integer`);
const parsed = Number.parseInt(trimmedValue, 10);
if (Number.isNaN(parsed)) throw new Error(`Cannot parse "${value}" as an integer`);
return parsed;
},
/**
* @description Parses a string to a float.
*/
float: (value) => {
const trimmedValue = value.trim();
if (!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(trimmedValue)) {
if (trimmedValue === "Infinity" || trimmedValue === "-Infinity")
return trimmedValue === "Infinity" ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
throw new Error(`Cannot parse "${value}" as a number`);
}
const parsed = Number.parseFloat(trimmedValue);
if (Number.isNaN(parsed)) throw new Error(`Cannot parse "${value}" as a number`);
return parsed;
},
/**
* @description Parses a string to a boolean.
*/
boolean: (value) => {
const lowerValue = value.trim().toLowerCase();
if (["true", "yes", "1", "y"].includes(lowerValue)) return true;
if (["false", "no", "0", "n"].includes(lowerValue)) return false;
throw new Error(`Cannot parse "${value}" as a boolean`);
},
/**
* @description Parses a comma-separated string to an array.
*/
array: (value) => {
return value.split(",").map((item) => item.trim());
},
/**
* @description Parses a JSON string.
*/
json: (value) => {
try {
return JSON.parse(value);
} catch (_error) {
throw new Error(`Cannot parse "${value}" as JSON`);
}
}
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
parsers
});
;