@bemedev/types
Version:
Type definitions for Bemedev projects
1 lines • 6.26 kB
Source Map (JSON)
{"version":3,"file":"strings.cjs","sources":["../../src/functions/strings.ts"],"sourcesContent":["import { _unknown, castFn, expandFn } from '~utils';\nimport { ENGLISH_LETTERS } from '../constants/strings';\nimport type {\n AddString,\n JoinString,\n Letters,\n LowerLetters,\n SplitStringBy,\n UpperLetters,\n} from '../types/types';\n\nexport const strings = castFn<string>()({\n is: expandFn(\n (value: unknown) => {\n return typeof value === 'string';\n },\n {\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n instance: (value: unknown): value is String => {\n return value instanceof String;\n },\n },\n ),\n\n type: String,\n\n getLength: <const T extends string>(value: T) => {\n const out = value.length;\n return _unknown<T['length']>(out);\n },\n\n startsWith: <U extends string>(\n value: unknown,\n prefix: U,\n ): value is `${U}${string}` => {\n return typeof value === 'string' && value.startsWith(prefix);\n },\n\n endsWith: <U extends string>(\n value: unknown,\n suffix: U,\n ): value is `${string}${U}` => {\n return typeof value === 'string' && value.endsWith(suffix);\n },\n\n includes: <U extends string[]>(\n value: unknown,\n ...segments: U\n ): value is `${string}${U[number]}${string}` => {\n if (typeof value !== 'string') return false;\n\n // Check if the string contains any of the segments\n for (const seg of segments) {\n if (value.includes(seg)) {\n return true;\n }\n }\n return false;\n },\n\n contains: <U extends string[]>(\n value: unknown,\n ...segments: U\n ): value is `${string}${U[number]}${string}` =>\n strings.includes(value, ...segments),\n\n toLowerCase: <T extends string>(value: T) => {\n const out = value.toLowerCase();\n return _unknown<Lowercase<T>>(out);\n },\n\n toUpperCase: <T extends string>(value: T) => {\n const out = value.toUpperCase();\n return _unknown<Uppercase<T>>(out);\n },\n\n letters: castFn<Letters>()({\n is: (value: unknown): value is Letters => {\n if (typeof value !== 'string') return false;\n if (value.length === 0) return false;\n\n // Check if all characters are English letters\n for (const char of value.toLowerCase()) {\n if (!ENGLISH_LETTERS.includes(char as any)) {\n return false;\n }\n }\n return true;\n },\n\n lower: castFn<LowerLetters>()({\n is: (value: unknown): value is LowerLetters => {\n return (\n typeof value === 'string' &&\n strings.letters.is(value) &&\n value === value.toLowerCase()\n );\n },\n }),\n\n upper: castFn<UpperLetters>()({\n is: (value: unknown): value is UpperLetters => {\n return (\n typeof value === 'string' &&\n strings.letters.is(value) &&\n value === value.toUpperCase()\n );\n },\n }),\n }),\n\n add: <T extends string, Before extends string, After extends string>(\n value: T,\n before = '' as Before,\n after = '' as After,\n ) => {\n const out = `${before}${value}${after}`;\n return _unknown<AddString<T, Before, After>>(out);\n },\n\n join: <T extends readonly string[], S extends string = ' '>(\n sep = ' ' as S,\n ...args: T\n ) => {\n const out = args.join(sep);\n return _unknown<JoinString<T, S>>(out);\n },\n\n splitBy: <const S extends string, By extends string = '.'>(\n value: S,\n by = '.' as By,\n ) => {\n const out = value.split(by);\n return _unknown<SplitStringBy<S, By>>(out);\n },\n});\n"],"names":["castFn","expandFn","_unknown","ENGLISH_LETTERS"],"mappings":"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"}