alwz
Version:
Extendable library for typecasting
181 lines • 7.89 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.promise = exports.weakset = exports.set = exports.weakmap = exports.map = exports.object = exports.date = exports.fn = exports.array = exports.symbol = exports.string = exports.bigint = exports.double = exports.ulong = exports.uint = exports.ushort = exports.ubyte = exports.long = exports.int = exports.short = exports.byte = exports.number = exports.boolean = void 0;
const Converter_js_1 = __importDefault(require("./models/Converter.cjs"));
const numbers = __importStar(require("./constants/numbers.cjs"));
const is_js_1 = __importStar(require("./is.cjs"));
exports.boolean = new Converter_js_1.default(is_js_1.default.boolean, Boolean)
.undefined(Boolean)
.number(Boolean)
.bigint(Boolean)
.string(Boolean)
.symbol(function (i) { return this.convert(exports.string.convert(i)); })
.register(is_js_1.default.null, Boolean)
.register(is_js_1.default.Array, function (i) { return this.convert(i[0]); })
.register(is_js_1.default.Date, (i) => Boolean(i.getTime()));
exports.number = new Converter_js_1.default(is_js_1.default.number, Number)
.undefined(Number)
.boolean(Number)
.bigint(Number)
.string(Number)
.symbol((i) => Number(exports.string.convert(i)))
.register(is_js_1.default.null, () => 0)
.register(is_js_1.default.Array, function (i) { return this.convert(i[0]); })
.register(is_js_1.default.Date, (i) => i.getTime());
const numeric = exports.number.clone()
.undefined(() => 0)
.bigint(function (i) { return this.convert(Number(i)); })
.string(function (i) { return this.convert(Number(i)); })
.symbol(function (i) { return this.convert(exports.string.convert(i)); })
.register(is_js_1.default.Date, function (i) { return this.convert(i.getTime()); });
numeric.fallback = () => 0;
_a = Object.fromEntries(Object.entries(numbers.integers)
.map(([name, [min, max]]) => {
const converter = numeric.clone()
.number(function (i) {
if (i <= min) {
return min;
}
else if (i >= max) {
return max;
}
else if (Number.isNaN(i)) {
return 0;
}
else {
return Math.trunc(i);
}
});
converter.is = is_js_1.integers[name];
return [name, converter];
})), exports.byte = _a.byte, exports.short = _a.short, exports.int = _a.int, exports.long = _a.long, exports.ubyte = _a.ubyte, exports.ushort = _a.ushort, exports.uint = _a.uint, exports.ulong = _a.ulong;
exports.double = Object.fromEntries(Object.entries(numbers.floats)
.map(([name, [min, max]]) => {
const converter = numeric.clone()
.number(function (i) {
if (i >= max) {
return max;
}
else if (i <= min) {
return min;
}
else {
return 0;
}
});
converter.is = is_js_1.floats[name];
return [name, converter];
})).double;
exports.bigint = new Converter_js_1.default(is_js_1.default.bigint, () => BigInt(0))
.undefined(() => BigInt(0))
.boolean((i) => BigInt(i))
.number((i) => BigInt(Math.trunc(exports.double.convert(i))))
.string(function (i) { return this.convert(Number(i)); })
.symbol(function (i) { return this.convert(exports.string.convert(i)); })
.register(is_js_1.default.null, () => BigInt(0))
.register(is_js_1.default.Array, function (i) { return this.convert(i[0]); })
.register(is_js_1.default.Date, function (i) { return this.convert(i.getTime()); });
exports.string = new Converter_js_1.default(is_js_1.default.string, String)
.undefined(() => '')
.boolean((i) => i ? ' ' : '')
.number((i) => i === i ? String(i) : '')
.bigint(String)
.symbol((i) => Symbol.keyFor(i) || '')
.register(is_js_1.default.null, () => '')
.register(is_js_1.default.Array, function (i) { return this.convert(i[0]); })
.register(is_js_1.default.Date, function (i) {
const ts = i.getTime();
if (Number.isFinite(ts)) {
return i.toISOString();
}
else {
return new Date(0).toISOString();
}
});
exports.symbol = new Converter_js_1.default(is_js_1.default.symbol, (i) => Symbol.for(exports.string.convert(i)));
exports.array = new Converter_js_1.default(is_js_1.default.Array, (i) => ([i]))
.undefined(() => [])
.boolean((i) => [i])
.number((i) => [i])
.bigint((i) => [i])
.string((i) => [i])
.symbol((i) => [i])
.register(is_js_1.default.null, () => [])
.register(is_js_1.default.Iterable, Array.from);
exports.fn = new Converter_js_1.default(is_js_1.default.function, (i) => () => i);
exports.date = new Converter_js_1.default(is_js_1.default.Date, () => new Date(NaN))
.undefined(() => new Date(NaN))
.boolean((i) => new Date(Number(i)))
.number((i) => new Date(i))
.bigint((i) => new Date(Number(i)))
.string((i) => new Date(i))
.symbol((i) => new Date(exports.string.convert(i)))
.register(is_js_1.default.Array, function (i) { return this.convert(i[0]); });
exports.object = new Converter_js_1.default(is_js_1.default.object, Object);
exports.map = new Converter_js_1.default(is_js_1.default.Map, () => new Map())
.register(is_js_1.default.Iterable, (input) => {
const result = new Map();
for (const item of input) {
if (is_js_1.default.Iterable(item)) {
const [key, value] = item;
result.set(key, value);
}
}
return result;
});
exports.weakmap = new Converter_js_1.default(is_js_1.default.WeakMap, () => new WeakMap())
.register(is_js_1.default.Iterable, (input) => {
const result = new WeakMap();
for (const item of input) {
if (is_js_1.default.Iterable(item)) {
const [key, value] = item;
if ((typeof key === 'object' && key !== null) || typeof key === 'function') {
result.set(key, value);
}
}
}
return result;
});
exports.set = new Converter_js_1.default(is_js_1.default.Set, (i) => new Set().add(i))
.undefined(() => new Set())
.register(is_js_1.default.null, () => new Set())
.register(is_js_1.default.Iterable, (i) => new Set(i));
exports.weakset = new Converter_js_1.default(is_js_1.default.WeakSet, () => new WeakSet())
.register(is_js_1.default.Iterable, (i) => {
const result = new WeakSet();
for (const item of i) {
if ((typeof item === 'object' && item !== null) || typeof item === 'function') {
result.add(item);
}
}
return result;
});
exports.promise = new Converter_js_1.default(is_js_1.default.Promise, (i) => Promise.resolve(i));
//# sourceMappingURL=presets.cjs.map