{"id":26980160,"url":"https://github.com/clovu/naiftools","last_synced_at":"2025-04-03T14:30:19.590Z","repository":{"id":272229146,"uuid":"915873369","full_name":"clovu/naiftools","owner":"clovu","description":"A naive JavaScript utility library (ing...","archived":false,"fork":false,"pushed_at":"2025-03-05T03:22:11.000Z","size":318,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T06:29:14.836Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clovu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-13T02:17:52.000Z","updated_at":"2025-03-05T03:22:14.000Z","dependencies_parsed_at":"2025-01-13T05:18:50.507Z","dependency_job_id":"cd272743-4c8b-42a4-b9ab-f34fb3e26d6f","html_url":"https://github.com/clovu/naiftools","commit_stats":null,"previous_names":["clover-you/naiftools","clovu/naiftools"],"tags_count":7,"template":false,"template_full_name":"antfu/starter-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fnaiftools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fnaiftools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fnaiftools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fnaiftools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clovu","download_url":"https://codeload.github.com/clovu/naiftools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247018212,"owners_count":20869974,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-03T14:30:19.028Z","updated_at":"2025-04-03T14:30:19.547Z","avatar_url":"https://github.com/clovu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003eEnglish | \u003ca href=\"README.zh-CN.md\"\u003e中文\u003c/a\u003e\u003c/p\u003e\n\n# NaifTools\n\nA naive JavaScript utility library\n\n## Installing\n\n`@naiftools/all` contains all utility packages. It bundles `@naiftools/core` as the default export.\n\nNote: It is recommended to use on-demand imports for optimal bundle size. `@naiftools/all` is suitable for scenarios requiring all functionalities.\n\n```shell\npnpm add @naiftools/all\n```\n\n```ts\nimport naiftools, { arrays, strings } from '@naiftools/all'\n\nnaiftools.isObject(2)\nstrings.isBlank('')\narrays.isEmpty([])\n```\n\nAlternatively, install specific packages based on your needs:\n\n```shell\npnpm add @naiftools/string\n```\n\n```shell\npnpm add @naiftools/array\n```\n\n```shell\npnpm add @naiftools/core\n```\n\n## core\n\n### isArray\n\nChecks if the given value is an array.\n\n```ts\nimport naiftools from '@naiftools/core'\n\nnaiftools.isArray('') // return false\nnaiftools.isArray([]) // return true\n```\n\n### isObject\n\nChecks if the given value is an object.\n\n```ts\nimport naiftools from '@naiftools/core'\n\nnaiftools.isObject(1) // return false\nnaiftools.isObject({}) // return true\nnaiftools.isObject([]) // return true\nnaiftools.isObject(null) // return false\n```\n\n### isString\n\nChecks if the given value is a string.\n\n```ts\nimport naiftools from '@naiftools/core'\n\nnaiftools.isString(1) // return false\nnaiftools.isString('') // return true\n```\n\n### typeofs\n\nReturns the type of the given value as a string.\n\nThis function handles special cases like `null` and arrays separately.\n\n- Return Type: `'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'null' | 'object' | 'array' | 'function'`\n\n```ts\nimport naiftools from '@naiftools/core'\n\nnaiftools.typeofs(null) // return 'null'\nnaiftools.typeofs('str') // return 'string'\nnaiftools.typeofs([]) // return 'array'\nnaiftools.typeofs(1) // return 'number'\n```\n\n## array\n\n### isEmpty\n\nChecks if a list is empty or undefined/null.\n\n```ts\nimport arrays from '@naiftools/array'\narrays.isEmpty([]) // return true\narrays.isEmpty(undefined) // return true\narrays.isEmpty(null) // return true\narrays.isEmpty([1]) // return false\n```\n\n### isNotEmpty\n\nChecks a list is not empty or undefined/null\n\n```ts\nimport arrays from '@naiftools/array'\narrays.isNotEmpty([]) // return false\narrays.isNotEmpty(undefined) // return false\narrays.isNotEmpty(null) // return false\narrays.isNotEmpty([1]) // return true\n```\n\n## string\n\n### numberToLetter\n\nConverts a positive integer to its corresponding column title as used in spreadsheet programs (e.g., Excel).\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.numberToLetter(1) // return 'A'\nstrings.numberToLetter(26) // return 'Z'\nstrings.numberToLetter(27) // return 'AA'\nstrings.numberToLetter(52) // return 'AZ'\nstrings.numberToLetter(701) // return 'ZY'\nstrings.numberToLetter(702) // return 'ZZ'\nstrings.numberToLetter(703) // return 'AAA'\n```\n\n### toKebabCase\n\nConverts a given string to kebab-case. E.g., 'helloWorld' becomes 'hello-world' and 'My String' becomes 'my-string'.\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.toKebabCase('helloWorld') // return 'hello-world'\nstrings.toKebabCase('myVariableName') // return 'my-variable-name'\nstrings.toKebabCase('SingleWord') // return 'single-word'\nstrings.toKebabCase('My String Here') // return 'my-string-here'\nstrings.toKebabCase('hello    world') // return 'hello-world'\nstrings.toKebabCase('leading space') // return 'leading-space'\nstrings.toKebabCase('trailing space   ') // return 'trailing-space'\nstrings.toKebabCase('hello İstanbul', 'tr-TR') // return 'hello-istanbul'\nstrings.toKebabCase('') // return ''\nstrings.toKebabCase(null as unknown as string) // return ''\nstrings.toKebabCase(undefined as unknown as string) // return ''\n```\n\n### toCamelCase\n\nConverts a given string to camelCase. E.g., 'hello-world' becomes 'helloWorld' and 'My String' becomes 'myString'.\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.toCamelCase('my string example') // return 'myStringExample'\nstrings.toCamelCase('hello world') // return 'helloWorld'\nstrings.toCamelCase('my-string-example') // return 'myStringExample'\nstrings.toCamelCase('hello-world') // return 'helloWorld'\nstrings.toCamelCase('singleword') // return 'singleword'\nstrings.toCamelCase('') // return ''\nstrings.toCamelCase(null as unknown as string) // return ''\nstrings.toCamelCase(null as unknown as string) // return ''\nstrings.toCamelCase('my-string example') // return 'myStringExample'\nstrings.toCamelCase('hello world-this is') // return 'helloWorldThisIs'\nstrings.toCamelCase('  hello world  ') // return 'helloWorld'\nstrings.toCamelCase('  leading space') // return 'leadingSpace'\nstrings.toCamelCase('trailing space   ') // return 'trailingSpace'\n```\n\n### getStringLineCount\n\nCounts the number of lines in a given string. A line is defined as a segment of text separated by \\n or \\r\\n.\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.getStringLineCount(null) // return 0\nstrings.getStringLineCount(undefined) // return 0\nstrings.getStringLineCount('') // return 0)\nstrings.getStringLineCount('line1\\nline2') // return 2\nstrings.getStringLineCount('line1\\nline2\\nline3') // return 3\nstrings.getStringLineCount('\\n\\n\\n') // return 4\nstrings.getStringLineCount('line1\\r\\nline2') // return 2\nstrings.getStringLineCount('line1\\r\\nline2\\r\\nline3') // return 3\nstrings.getStringLineCount('\\r\\n\\r\\n\\r\\n') // return 4\nstrings.getStringLineCount('line1\\nline2\\r\\nline3\\nline4\\r\\n') // return 5\n```\n\n### trim\n\nTrims the whitespace from both ends of a string. Returns null or undefined if the input is null or undefined.\n\n```ts\nstrings.trim(' a ') // return 'a'\nstrings.trim(undefined) // return undefined\n```\n\n### trimLeft\n\nTrims the whitespace from the left side of a string. Returns null or undefined if the input is null or undefined.\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.trimLeft(' a ') // return 'a '\nstrings.trimLeft(undefined) // return undefined\n```\n\n### trimRight\n\nTrims the whitespace from the right side of a string. Returns null or undefined if the input is null or undefined.\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.trimRight(' a ') // return ' a'\nstrings.trimRight(undefined) // return undefined\n```\n\n### isBlank/isNotBlank\n\nChecks if a string is blank (i.e., null, undefined, or empty or only contains whitespace).\n\n```ts\nimport strings from '@naiftools/string'\n\nstrings.isBlank(null) // return true\nstrings.isBlank(undefined) // return true\nstrings.isBlank('') // return true\nstrings.isBlank(' ') // return true\nstrings.isBlank('\\t\\n\\f\\r') // return true\n```\n\n## Contribution\n\nContributions of any kind are welcome! If you have ideas or suggestions, feel free to open an issue or submit a pull request. Please ensure:\n\n1. Add comprehensive unit tests\n2. Update relevant documents\n3. Through ESLint check\n\n## License\n\nMIT License © 2024 [Clover You](https://github.com/Clover-You)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclovu%2Fnaiftools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclovu%2Fnaiftools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclovu%2Fnaiftools/lists"}