@fekit/utils
v6.1.0
Published
Lightweight TypeScript utility library for frontend projects.
Readme
@fekit/utils
Lightweight TypeScript utility library for frontend projects.
@fekit/utils provides small helpers for type checks, data cleanup, enum-tree lookup, date formatting, validation, display formatting, object diffing, number padding, and runtime environment detection.
For AI and LLM usage, read AI_CONTEXT.md. It contains the complete API map, usage guidance, edge cases, and examples.
Install
yarn add @fekit/utilsnpm i @fekit/utilsImport
import { idate, format, validate, isString, deepcopy } from '@fekit/utils';All public APIs are exported from the package root.
API Areas
Type Checks
import {
getType,
isFunction,
isObject,
isArray,
isUndefined,
isNull,
isString,
isBoolean,
isNumber,
isDate,
isDateString,
isElement,
isNodeList,
isEmpty,
isBase64,
isBlob,
isJsonString,
isArrayString,
isObjectString,
isEncoded,
hasOwnProp,
} from '@fekit/utils';isEmpty(''); // true
isEmpty(0); // false
isDateString('2025-02-31'); // false
hasOwnProp({ name: 'fekit' }, 'name'); // trueData Helpers
import { deepcopy, cleandata, findByJson, filterJson, dataToEnum, getFileType, findEnumName } from '@fekit/utils';cleandata({ name: ' Alice ', empty: '', tags: ['x', ''] });
// { name: 'Alice', tags: ['x'] }
getFileType('/files/report.pdf?download=1');
// 'pdf'Date Helpers
import { idate } from '@fekit/utils';idate('2026-06-25').format('YYYY-MM-DD'); // '2026-06-25'
idate('20260817').format('YYYY-MM-DD'); // '2026-08-17'
idate(20260817).format('YYYY-MM-DD'); // '2026-08-17'
idate('2026年8月17日').format('YYYY-MM-DD'); // '2026-08-17'
idate('17/08/2026', { format: 'DD/MM/YYYY' }).format('YYYY-MM-DD'); // '2026-08-17'
idate('2026-06-25').update({ d: 1 }).format('YYYY-MM-DD'); // '2026-06-26'
idate(Date.now()).humanized(); // relative time stringidate() returns an IDate instance with .format(), .update(), .humanized(), and .calendar().
Validation
import { validate, validateEmail, validateNumber, verify } from '@fekit/utils';validate('email', '[email protected]'); // true
validateEmail('[email protected]'); // true
validateNumber('12.5'); // trueverify(form, data, route) validates form-field configs and returns an array of error objects.
Formatting
import { format } from '@fekit/utils';format.toPhoneNumber('13800138000'); // '138-0013-8000'
format.toThousands(1234567.89); // '1,234,567.89'
format.toFillZero(8, 3); // '008'Diff And Fill
import { diff, fill } from '@fekit/utils';diff({ a: 1 }, { a: '1' }); // []
diff({ a: 1 }, { a: '1' }, true); // [{ field: 'a', lhs: 1, rhs: '1', path: ['a'] }]
fill({ a: 1 }, { a: 2, b: 3 }); // { a: 1, b: null }Number Helpers
import { numfill } from '@fekit/utils';numfill(7); // '07'
numfill(-7); // '-07'Environment Detection
import { env, useEnvInfo, createEnvInfo } from '@fekit/utils';env.mobile; // dynamically computed boolean
useEnvInfo(); // full runtime environment state
createEnvInfo({ userAgent: 'Mozilla/5.0 ...', hasWindow: true, hasDocument: true });AI-Friendly Files
- AI_CONTEXT.md: complete machine-readable API guide.
- llms.txt: curated LLM entry file that can be published at a website root as
/llms.txt.
Notes
- The package has no runtime dependencies.
formatis an object of formatter methods, not a function.diff()uses loose string comparison by default. Passtrueor{ strict: true }for strict comparison.idate()accepts validDate, date strings (YYYY-MM-DD,YYYY/MM/DD, ISO,YYYYMMDD, Chinese2026年8月17日), 8-digitYYYYMMDDnumbers,undefinedfor now, and 10-13 digit timestamps. Day-firstDD/MM/YYYYrequires{ format: 'DD/MM/YYYY' }.
