@bemedev/types
Version:
Type definitions for Bemedev projects
73 lines (70 loc) • 2.15 kB
JavaScript
import { expandFn, _unknown } from '../utils.js';
const arrays = expandFn((...values) => values, {
low: (...values) => values,
is: (value) => {
return Array.isArray(value);
},
indexes: (...array) => {
const out = array.map((_, index) => index);
return _unknown(out);
},
lengthOf: (...array) => {
const out = array.length;
return _unknown(out);
},
tupleOf: expandFn((...args) => {
const out = args;
return _unknown(out);
}, {
number: expandFn((data, times) => {
const out = Array.from({ length: times }, () => data);
return _unknown(out);
}, {
is: (fn) => {
const _out = (value, length) => {
const isArray = Array.isArray(value);
const out = isArray && value.length === length && value.every(fn);
return out;
};
return _out;
},
}),
is: (fn) => {
const _out = (value) => {
return Array.isArray(value) && value.every(fn);
};
return _out;
},
}),
reduce: (value) => {
const out = Array.isArray(value) ? value[0] : value;
return _unknown(out);
},
toArray: (value) => {
const checkArray = Array.isArray(value);
const out = checkArray ? value : [value];
return _unknown(out);
},
reverse: (...args) => {
const out = args.slice().reverse();
return _unknown(out);
},
freeze: (...args) => Object.freeze(arrays.tupleOf(...args)),
extract: (array, ...extractors) => {
const out = array.filter(item => extractors.includes(item));
return _unknown(out);
},
exclude: (array, ...excludes) => {
const out = array.filter(item => !excludes.includes(item));
return _unknown(out);
},
forceCast: (value) => {
return _unknown(value);
},
dynamic: (value) => {
return _unknown(value);
},
type: Array,
});
export { arrays };
//# sourceMappingURL=arrays.js.map