@strapi/utils
Version:
Shared utilities for the Strapi packages
1 lines • 4.03 kB
Source Map (JSON)
{"version":3,"file":"strings.mjs","sources":["../../src/primitives/strings.ts"],"sourcesContent":["import _, { kebabCase } from 'lodash';\nimport { trimChars, trimCharsEnd, trimCharsStart } from 'lodash/fp';\nimport slugify from '@sindresorhus/slugify';\n\nconst nameToSlug = (name: string, options: slugify.Options = { separator: '-' }) =>\n slugify(name, options);\n\nconst nameToCollectionName = (name: string) => slugify(name, { separator: '_' });\n\nconst toRegressedEnumValue = (value: string) =>\n slugify(value, {\n decamelize: false,\n lowercase: false,\n separator: '_',\n });\n\nconst getCommonPath = (...paths: string[]) => {\n const [segments, ...otherSegments] = paths.map((it) => _.split(it, '/'));\n return _.join(\n _.takeWhile(segments, (str, index) => otherSegments.every((it) => it[index] === str)),\n '/'\n );\n};\n\nconst isEqual = (a: unknown, b: unknown) => String(a) === String(b);\nconst isCamelCase = (value: string) => /^[a-z][a-zA-Z0-9]+$/.test(value);\nconst isKebabCase = (value: string) => /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/.test(value);\nconst startsWithANumber = (value: string) => /^[0-9]/.test(value);\n\nconst joinBy = (joint: string, ...args: string[]) => {\n const trim = trimChars(joint);\n const trimEnd = trimCharsEnd(joint);\n const trimStart = trimCharsStart(joint);\n\n return args.reduce((url, path, index) => {\n if (args.length === 1) return path;\n if (index === 0) return trimEnd(path);\n if (index === args.length - 1) return url + joint + trimStart(path);\n return url + joint + trim(path);\n }, '');\n};\n\nconst toKebabCase = (value: string) => kebabCase(value);\n\nexport {\n nameToSlug,\n nameToCollectionName,\n getCommonPath,\n isEqual,\n isCamelCase,\n isKebabCase,\n toKebabCase,\n toRegressedEnumValue,\n startsWithANumber,\n joinBy,\n};\n"],"names":["nameToSlug","name","options","separator","slugify","nameToCollectionName","toRegressedEnumValue","value","decamelize","lowercase","getCommonPath","paths","segments","otherSegments","map","it","_","split","join","takeWhile","str","index","every","isEqual","a","b","String","isCamelCase","test","isKebabCase","startsWithANumber","joinBy","joint","args","trim","trimChars","trimEnd","trimCharsEnd","trimStart","trimCharsStart","reduce","url","path","length","toKebabCase","kebabCase"],"mappings":";;;;AAIA,MAAMA,UAAAA,GAAa,CAACC,IAAAA,EAAcC,OAAAA,GAA2B;IAAEC,SAAAA,EAAW;AAAI,CAAC,GAC7EC,QAAQH,IAAAA,EAAMC,OAAAA;AAEhB,MAAMG,oBAAAA,GAAuB,CAACJ,IAAAA,GAAiBG,OAAAA,CAAQH,IAAAA,EAAM;QAAEE,SAAAA,EAAW;AAAI,KAAA;AAE9E,MAAMG,oBAAAA,GAAuB,CAACC,KAAAA,GAC5BH,OAAAA,CAAQG,KAAAA,EAAO;QACbC,UAAAA,EAAY,KAAA;QACZC,SAAAA,EAAW,KAAA;QACXN,SAAAA,EAAW;AACb,KAAA;AAEF,MAAMO,aAAAA,GAAgB,CAAC,GAAGC,KAAAA,GAAAA;AACxB,IAAA,MAAM,CAACC,QAAAA,EAAU,GAAGC,aAAAA,CAAc,GAAGF,KAAAA,CAAMG,GAAG,CAAC,CAACC,EAAAA,GAAOC,UAAAA,CAAEC,KAAK,CAACF,EAAAA,EAAI,GAAA,CAAA,CAAA;AACnE,IAAA,OAAOC,WAAEE,IAAI,CACXF,WAAEG,SAAS,CAACP,UAAU,CAACQ,GAAAA,EAAKC,QAAUR,aAAAA,CAAcS,KAAK,CAAC,CAACP,EAAAA,GAAOA,EAAE,CAACM,KAAAA,CAAM,KAAKD,GAAAA,CAAAA,CAAAA,EAChF,GAAA,CAAA;AAEJ;AAEA,MAAMG,UAAU,CAACC,CAAAA,EAAYC,CAAAA,GAAeC,MAAAA,CAAOF,OAAOE,MAAAA,CAAOD,CAAAA;AACjE,MAAME,WAAAA,GAAc,CAACpB,KAAAA,GAAkB,qBAAA,CAAsBqB,IAAI,CAACrB,KAAAA;AAClE,MAAMsB,WAAAA,GAAc,CAACtB,KAAAA,GAAkB,iCAAA,CAAkCqB,IAAI,CAACrB,KAAAA;AAC9E,MAAMuB,iBAAAA,GAAoB,CAACvB,KAAAA,GAAkB,QAAA,CAASqB,IAAI,CAACrB,KAAAA;AAE3D,MAAMwB,MAAAA,GAAS,CAACC,KAAAA,EAAe,GAAGC,IAAAA,GAAAA;AAChC,IAAA,MAAMC,OAAOC,SAAAA,CAAUH,KAAAA,CAAAA;AACvB,IAAA,MAAMI,UAAUC,YAAAA,CAAaL,KAAAA,CAAAA;AAC7B,IAAA,MAAMM,YAAYC,cAAAA,CAAeP,KAAAA,CAAAA;AAEjC,IAAA,OAAOC,IAAAA,CAAKO,MAAM,CAAC,CAACC,KAAKC,IAAAA,EAAMrB,KAAAA,GAAAA;AAC7B,QAAA,IAAIY,IAAAA,CAAKU,MAAM,KAAK,CAAA,EAAG,OAAOD,IAAAA;QAC9B,IAAIrB,KAAAA,KAAU,CAAA,EAAG,OAAOe,OAAAA,CAAQM,IAAAA,CAAAA;QAChC,IAAIrB,KAAAA,KAAUY,KAAKU,MAAM,GAAG,GAAG,OAAOF,GAAAA,GAAMT,QAAQM,SAAAA,CAAUI,IAAAA,CAAAA;QAC9D,OAAOD,GAAAA,GAAMT,QAAQE,IAAAA,CAAKQ,IAAAA,CAAAA;IAC5B,CAAA,EAAG,EAAA,CAAA;AACL;AAEA,MAAME,WAAAA,GAAc,CAACrC,KAAAA,GAAkBsC,SAAAA,CAAUtC,KAAAA;;;;"}