clefairy
Version:
Typed CLI argv parser and main function wrapper
48 lines (47 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.optionalPath = exports.optionalBoolean = exports.optionalNumber = exports.optionalString = exports.requiredSymbols = exports.requiredPath = exports.requiredBoolean = exports.requiredNumber = exports.requiredString = void 0;
exports.valueMatchesSymbolType = valueMatchesSymbolType;
const clef_parse_1 = require("clef-parse");
exports.requiredString = Symbol("requiredString");
exports.requiredNumber = Symbol("requiredNumber");
exports.requiredBoolean = Symbol("requiredBoolean");
exports.requiredPath = Symbol("requiredPath");
exports.requiredSymbols = new Set([
exports.requiredString,
exports.requiredNumber,
exports.requiredBoolean,
exports.requiredPath,
]);
exports.optionalString = Symbol("optionalString");
exports.optionalNumber = Symbol("optionalNumber");
exports.optionalBoolean = Symbol("optionalBoolean");
exports.optionalPath = Symbol("optionalPath");
function valueMatchesSymbolType(value, symbol) {
switch (symbol) {
case exports.requiredPath: {
return value instanceof clef_parse_1.Path;
}
case exports.requiredString: {
return typeof value === "string";
}
case exports.optionalPath: {
return value instanceof clef_parse_1.Path || value == null;
}
case exports.optionalString: {
return typeof value === "string" || value == null;
}
case exports.requiredNumber: {
return typeof value === "number" && !Number.isNaN(value);
}
case exports.optionalNumber: {
return ((typeof value === "number" && !Number.isNaN(value)) || value == null);
}
case exports.requiredBoolean: {
return typeof value === "boolean";
}
case exports.optionalBoolean: {
return typeof value === "boolean" || value == null;
}
}
}