UNPKG

clefairy

Version:

Typed CLI argv parser and main function wrapper

48 lines (47 loc) 1.94 kB
"use strict"; 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; } } }