UNPKG

@strapi/utils

Version:

Shared utilities for the Strapi packages

1 lines 4.01 kB
{"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":";;;;AAIMA,MAAAA,UAAAA,GAAa,CAACC,IAAAA,EAAcC,OAA2B,GAAA;IAAEC,SAAW,EAAA;AAAI,CAAC,GAC7EC,QAAQH,IAAMC,EAAAA,OAAAA;AAEhB,MAAMG,oBAAuB,GAAA,CAACJ,IAAiBG,GAAAA,OAAAA,CAAQH,IAAM,EAAA;QAAEE,SAAW,EAAA;AAAI,KAAA;AAE9E,MAAMG,oBAAuB,GAAA,CAACC,KAC5BH,GAAAA,OAAAA,CAAQG,KAAO,EAAA;QACbC,UAAY,EAAA,KAAA;QACZC,SAAW,EAAA,KAAA;QACXN,SAAW,EAAA;AACb,KAAA;AAEIO,MAAAA,aAAAA,GAAgB,CAAC,GAAGC,KAAAA,GAAAA;AACxB,IAAA,MAAM,CAACC,QAAAA,EAAU,GAAGC,aAAAA,CAAc,GAAGF,KAAAA,CAAMG,GAAG,CAAC,CAACC,EAAAA,GAAOC,UAAEC,CAAAA,KAAK,CAACF,EAAI,EAAA,GAAA,CAAA,CAAA;AACnE,IAAA,OAAOC,WAAEE,IAAI,CACXF,WAAEG,SAAS,CAACP,UAAU,CAACQ,GAAAA,EAAKC,QAAUR,aAAcS,CAAAA,KAAK,CAAC,CAACP,EAAAA,GAAOA,EAAE,CAACM,KAAAA,CAAM,KAAKD,GAChF,CAAA,CAAA,EAAA,GAAA,CAAA;AAEJ;AAEA,MAAMG,UAAU,CAACC,CAAAA,EAAYC,CAAeC,GAAAA,MAAAA,CAAOF,OAAOE,MAAOD,CAAAA,CAAAA;AACjE,MAAME,WAAc,GAAA,CAACpB,KAAkB,GAAA,qBAAA,CAAsBqB,IAAI,CAACrB,KAAAA;AAClE,MAAMsB,WAAc,GAAA,CAACtB,KAAkB,GAAA,iCAAA,CAAkCqB,IAAI,CAACrB,KAAAA;AAC9E,MAAMuB,iBAAoB,GAAA,CAACvB,KAAkB,GAAA,QAAA,CAASqB,IAAI,CAACrB,KAAAA;AAErDwB,MAAAA,MAAAA,GAAS,CAACC,KAAAA,EAAe,GAAGC,IAAAA,GAAAA;AAChC,IAAA,MAAMC,OAAOC,SAAUH,CAAAA,KAAAA,CAAAA;AACvB,IAAA,MAAMI,UAAUC,YAAaL,CAAAA,KAAAA,CAAAA;AAC7B,IAAA,MAAMM,YAAYC,cAAeP,CAAAA,KAAAA,CAAAA;AAEjC,IAAA,OAAOC,IAAKO,CAAAA,MAAM,CAAC,CAACC,KAAKC,IAAMrB,EAAAA,KAAAA,GAAAA;AAC7B,QAAA,IAAIY,IAAKU,CAAAA,MAAM,KAAK,CAAA,EAAG,OAAOD,IAAAA;QAC9B,IAAIrB,KAAAA,KAAU,CAAG,EAAA,OAAOe,OAAQM,CAAAA,IAAAA,CAAAA;QAChC,IAAIrB,KAAAA,KAAUY,KAAKU,MAAM,GAAG,GAAG,OAAOF,GAAAA,GAAMT,QAAQM,SAAUI,CAAAA,IAAAA,CAAAA;QAC9D,OAAOD,GAAAA,GAAMT,QAAQE,IAAKQ,CAAAA,IAAAA,CAAAA;KACzB,EAAA,EAAA,CAAA;AACL;AAEME,MAAAA,WAAAA,GAAc,CAACrC,KAAAA,GAAkBsC,SAAUtC,CAAAA,KAAAA;;;;"}