@ooneex/utils 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +539 -203
- package/dist/index.d.ts +23 -16
- package/dist/index.js +3 -1
- package/dist/index.js.map +24 -0
- package/dist/ooneex-utils-0.0.8.tgz +0 -0
- package/package.json +23 -13
- package/dist/capitalizeWord.d.ts +0 -2
- package/dist/capitalizeWord.d.ts.map +0 -1
- package/dist/dataURLtoFile.d.ts +0 -2
- package/dist/dataURLtoFile.d.ts.map +0 -1
- package/dist/formatRelativeNumber.d.ts +0 -5
- package/dist/formatRelativeNumber.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/millisecondsToHMS.d.ts +0 -2
- package/dist/millisecondsToHMS.d.ts.map +0 -1
- package/dist/parseEnvVars.d.ts +0 -2
- package/dist/parseEnvVars.d.ts.map +0 -1
- package/dist/parseString.d.ts +0 -2
- package/dist/parseString.d.ts.map +0 -1
- package/dist/random.d.ts +0 -6
- package/dist/random.d.ts.map +0 -1
- package/dist/secondsToHMS.d.ts +0 -2
- package/dist/secondsToHMS.d.ts.map +0 -1
- package/dist/secondsToMS.d.ts +0 -2
- package/dist/secondsToMS.d.ts.map +0 -1
- package/dist/sleep.d.ts +0 -2
- package/dist/sleep.d.ts.map +0 -1
- package/dist/splitToWords.d.ts +0 -2
- package/dist/splitToWords.d.ts.map +0 -1
- package/dist/toCamelCase.d.ts +0 -2
- package/dist/toCamelCase.d.ts.map +0 -1
- package/dist/toKebabCase.d.ts +0 -2
- package/dist/toKebabCase.d.ts.map +0 -1
- package/dist/toPascalCase.d.ts +0 -2
- package/dist/toPascalCase.d.ts.map +0 -1
- package/dist/trim.d.ts +0 -2
- package/dist/trim.d.ts.map +0 -1
- package/src/capitalizeWord.ts +0 -3
- package/src/dataURLtoFile.ts +0 -12
- package/src/formatRelativeNumber.ts +0 -7
- package/src/index.ts +0 -15
- package/src/millisecondsToHMS.ts +0 -16
- package/src/parseEnvVars.ts +0 -14
- package/src/parseString.ts +0 -47
- package/src/random.ts +0 -13
- package/src/secondsToHMS.ts +0 -16
- package/src/secondsToMS.ts +0 -5
- package/src/sleep.ts +0 -3
- package/src/splitToWords.ts +0 -14
- package/src/toCamelCase.ts +0 -8
- package/src/toKebabCase.ts +0 -6
- package/src/toPascalCase.ts +0 -7
- package/src/trim.ts +0 -8
- package/tests/capitalizeWord.spec.ts +0 -163
- package/tests/dataURLtoFile.spec.ts +0 -472
- package/tests/formatRelativeNumber.spec.ts +0 -303
- package/tests/millisecondsToHMS.spec.ts +0 -209
- package/tests/parseEnvVars.spec.ts +0 -468
- package/tests/parseString.spec.ts +0 -377
- package/tests/random.spec.ts +0 -422
- package/tests/secondsToHMS.spec.ts +0 -341
- package/tests/secondsToMS.spec.ts +0 -467
- package/tests/splitToWords.spec.ts +0 -359
- package/tests/toCamelCase.spec.ts +0 -526
- package/tests/toKebabCase.spec.ts +0 -664
- package/tests/toPascalCase.spec.ts +0 -721
- package/tests/trim.spec.ts +0 -486
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -11
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
declare const capitalizeWord: (word: string) => string;
|
|
2
|
+
declare const dataURLtoFile: (dataurl: string, filename: string) => File;
|
|
3
|
+
declare const formatRelativeNumber: (num: number, config?: {
|
|
4
|
+
precision?: number;
|
|
5
|
+
lang?: string;
|
|
6
|
+
}) => string;
|
|
7
|
+
declare const millisecondsToHMS: (ms: number) => string;
|
|
8
|
+
declare const parseEnvVars: <T = Record<string, string>>(envs: Record<string, string>) => T;
|
|
9
|
+
declare const parseString: <T = unknown>(text: string) => T;
|
|
10
|
+
declare const random: {
|
|
11
|
+
nanoid(size?: number): string;
|
|
12
|
+
stringInt(size?: number): string;
|
|
13
|
+
nanoidFactory(size?: number): (size?: number) => string;
|
|
14
|
+
};
|
|
15
|
+
declare const secondsToHMS: (seconds: number) => string;
|
|
16
|
+
declare const secondsToMS: (seconds: number) => string;
|
|
17
|
+
declare const sleep: (ms: number) => Promise<void>;
|
|
18
|
+
declare const splitToWords: (input: string) => string[];
|
|
19
|
+
declare const toCamelCase: (input: string) => string;
|
|
20
|
+
declare const toKebabCase: (input: string) => string;
|
|
21
|
+
declare const toPascalCase: (input: string) => string;
|
|
22
|
+
declare const trim: (text: string, char?: string) => string;
|
|
23
|
+
export { trim, toPascalCase, toKebabCase, toCamelCase, splitToWords, sleep, secondsToMS, secondsToHMS, random, parseString, parseEnvVars, millisecondsToHMS, formatRelativeNumber, dataURLtoFile, capitalizeWord };
|
package/dist/index.js
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
var i=(r)=>
|
|
1
|
+
var i=(r)=>r?r[0]?.toUpperCase()+r.slice(1).toLowerCase():r;var u=(r,t)=>{let o=r.split(","),s=o[0]?.match(/:(.*?);/)?.[1]||"",f=atob(o[1]),a=f.length,g=new Uint8Array(a);while(a--)g[a]=f.charCodeAt(a);return new File([g],t,{type:s})};var d=(r,t)=>new Intl.NumberFormat(t?.lang??"en-GB",{notation:"compact",compactDisplay:"short",maximumFractionDigits:t?.precision??1}).format(r);var S=(r)=>{let t=Math.floor(r/1000),o=Math.floor(t/3600),e=Math.floor(t%3600/60),s=t%60;if(o>0)return`${o}:${e.toString().padStart(2,"0")}:${s.toString().padStart(2,"0")}`;if(e>0)return`${e}:${s.toString().padStart(2,"0")}`;return s.toString()};var p=(r,t=" ")=>{if([".","[","]","(",")","+","*","^","$","?","/","\\"].includes(t))t=`\\${t}`;let o=new RegExp(`^${t}+|${t}+$`,"g");return r.replace(o,"")};var m=(r)=>{if(/^[0-9]+$/.test(r))return Number.parseInt(r,10);if(/^[0-9]+[.][0-9]+$/.test(r))return Number.parseFloat(r);if(/^true$/i.test(r))return!0;if(/^false$/i.test(r))return!1;if(/^null$/i.test(r))return null;if(/^\[/.test(r)&&/]$/.test(r)){let o=p(r,"\\[|\\]").split(/, */);return o=o.map((e)=>m(e)),o}try{let t=JSON.parse(r);if(t===Number.POSITIVE_INFINITY||t===Number.NEGATIVE_INFINITY)return r;return t}catch{return r}};var b=/\p{Lu}\p{Ll}+/u,T=/\p{Lu}+(?=(\p{Lu}\p{Ll})|\P{L}|\b)/u,$=/(\p{Ll}+)/u,x=/\p{L}+/u,M=/\p{N}+/u,h=new RegExp(`${b.source}|${T.source}|${$.source}|${x.source}|${M.source}`,"gu"),n=(r)=>r.match(h)??[];var c=(r)=>{r=r.trim();let[t="",...o]=n(r);return[t.toLowerCase(),...o.map(i)].join("")};var C=(r)=>{let t={};for(let o in r){let e=c(o),s=m(r[o]);t[e]=s}return t};import{customAlphabet as l}from"nanoid";var F={nanoid(r){return l("1234567890abcdef",r??10)()},stringInt(r){return l("1234567890",r??10)()},nanoidFactory(r){return l("1234567890abcdef",r??10)}};var N=(r)=>{let t=Math.floor(r),o=Math.floor(t/3600),e=Math.floor(t%3600/60),s=t%60;if(o>0)return`${o}:${e.toString().padStart(2,"0")}:${s.toString().padStart(2,"0")}`;if(e>0)return`${e}:${s.toString().padStart(2,"0")}`;return s.toString()};var I=(r)=>{let t=Math.floor(r/60),o=r%60;return`${t}:${o.toString().padStart(2,"0")}`};var v=(r)=>new Promise((t)=>setTimeout(t,r));var w=(r)=>{return r=r.trim(),n(r).join("-").toLowerCase()};var y=(r)=>{return r=r.trim(),n(r).map(i).join("")};export{p as trim,y as toPascalCase,w as toKebabCase,c as toCamelCase,n as splitToWords,v as sleep,I as secondsToMS,N as secondsToHMS,F as random,m as parseString,C as parseEnvVars,S as millisecondsToHMS,d as formatRelativeNumber,u as dataURLtoFile,i as capitalizeWord};
|
|
2
|
+
|
|
3
|
+
//# debugId=D3540DB7AD21EC7364756E2164756E21
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/capitalizeWord.ts", "src/dataURLtoFile.ts", "src/formatRelativeNumber.ts", "src/millisecondsToHMS.ts", "src/trim.ts", "src/parseString.ts", "src/splitToWords.ts", "src/toCamelCase.ts", "src/parseEnvVars.ts", "src/random.ts", "src/secondsToHMS.ts", "src/secondsToMS.ts", "src/sleep.ts", "src/toKebabCase.ts", "src/toPascalCase.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export const capitalizeWord = (word: string): string =>\n word ? word[0]?.toUpperCase() + word.slice(1).toLowerCase() : word;\n",
|
|
6
|
+
"export const dataURLtoFile = (dataurl: string, filename: string): File => {\n const arr = dataurl.split(\",\");\n const mimeMatch = arr[0]?.match(/:(.*?);/);\n const mime = mimeMatch?.[1] || \"\";\n const bstr = atob(arr[1] as string);\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], filename, { type: mime });\n};\n",
|
|
7
|
+
"export const formatRelativeNumber = (num: number, config?: { precision?: number; lang?: string }): string =>\n new Intl.NumberFormat(config?.lang ?? \"en-GB\", {\n notation: \"compact\",\n compactDisplay: \"short\",\n maximumFractionDigits: config?.precision ?? 1,\n }).format(num);\n",
|
|
8
|
+
"export const millisecondsToHMS = (ms: number): string => {\n const totalSeconds = Math.floor(ms / 1000);\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${seconds.toString().padStart(2, \"0\")}`;\n }\n\n if (minutes > 0) {\n return `${minutes}:${seconds.toString().padStart(2, \"0\")}`;\n }\n\n return seconds.toString();\n};\n",
|
|
9
|
+
"export const trim = (text: string, char = \" \"): string => {\n if ([\".\", \"[\", \"]\", \"(\", \")\", \"+\", \"*\", \"^\", \"$\", \"?\", \"/\", \"\\\\\"].includes(char)) {\n char = `\\\\${char}`;\n }\n\n const reg = new RegExp(`^${char}+|${char}+$`, \"g\");\n return text.replace(reg, \"\");\n};\n",
|
|
10
|
+
"import { trim } from \"./trim\";\n\nexport const parseString = <T = unknown>(text: string): T => {\n if (/^[0-9]+$/.test(text)) {\n return Number.parseInt(text, 10) as T;\n }\n\n if (/^[0-9]+[.][0-9]+$/.test(text)) {\n return Number.parseFloat(text) as T;\n }\n\n if (/^true$/i.test(text)) {\n return true as T;\n }\n\n if (/^false$/i.test(text)) {\n return false as T;\n }\n\n if (/^null$/i.test(text)) {\n return null as T;\n }\n\n if (/^\\[/.test(text) && /]$/.test(text)) {\n const trimmedText = trim(text, \"\\\\[|\\\\]\");\n\n let values: unknown[] = trimmedText.split(/, */);\n\n values = values.map((value) => parseString(value as string));\n\n return values as T;\n }\n\n try {\n const result = JSON.parse(text);\n\n if (result === Number.POSITIVE_INFINITY || result === Number.NEGATIVE_INFINITY) {\n return text as T;\n }\n\n return result;\n } catch {\n return text as T;\n }\n};\n",
|
|
11
|
+
"const CAPITALIZED_WORD_REGEXP = /\\p{Lu}\\p{Ll}+/u; // e.g. Apple\nconst ACRONYM_REGEXP = /\\p{Lu}+(?=(\\p{Lu}\\p{Ll})|\\P{L}|\\b)/u; // e.g. ID, URL, handles an acronym followed by a capitalized word e.g. HTMLElement\nconst LOWERCASED_WORD_REGEXP = /(\\p{Ll}+)/u; // e.g. apple\nconst ANY_LETTERS = /\\p{L}+/u; // will match any sequence of letters, including in languages without a concept of upper/lower case\nconst DIGITS_REGEXP = /\\p{N}+/u; // e.g. 123\n\nconst WORD_OR_NUMBER_REGEXP = new RegExp(\n `${CAPITALIZED_WORD_REGEXP.source}|${ACRONYM_REGEXP.source}|${LOWERCASED_WORD_REGEXP.source}|${ANY_LETTERS.source}|${DIGITS_REGEXP.source}`,\n \"gu\",\n);\n\nexport const splitToWords = (input: string): string[] => input.match(WORD_OR_NUMBER_REGEXP) ?? [];\n",
|
|
12
|
+
"import { capitalizeWord } from \"./capitalizeWord\";\nimport { splitToWords } from \"./splitToWords\";\n\nexport const toCamelCase = (input: string): string => {\n input = input.trim();\n const [first = \"\", ...rest] = splitToWords(input);\n return [first.toLowerCase(), ...rest.map(capitalizeWord)].join(\"\");\n};\n",
|
|
13
|
+
"import { parseString } from \"./parseString\";\nimport { toCamelCase } from \"./toCamelCase\";\n\nexport const parseEnvVars = <T = Record<string, string>>(envs: Record<string, string>): T => {\n const vars: Record<string, string> = {};\n\n for (const key in envs) {\n const k = toCamelCase(key);\n const value = parseString(envs[key] as string) as string;\n vars[k] = value;\n }\n\n return vars as T;\n};\n",
|
|
14
|
+
"import { customAlphabet } from \"nanoid\";\n\nexport const random = {\n nanoid(size?: number): string {\n return customAlphabet(\"1234567890abcdef\", size ?? 10)();\n },\n stringInt(size?: number): string {\n return customAlphabet(\"1234567890\", size ?? 10)();\n },\n nanoidFactory(size?: number): (size?: number) => string {\n return customAlphabet(\"1234567890abcdef\", size ?? 10);\n },\n};\n",
|
|
15
|
+
"export const secondsToHMS = (seconds: number): string => {\n const totalSeconds = Math.floor(seconds);\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const remainingSeconds = totalSeconds % 60;\n\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n }\n\n if (minutes > 0) {\n return `${minutes}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n }\n\n return remainingSeconds.toString();\n};\n",
|
|
16
|
+
"export const secondsToMS = (seconds: number): string => {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n};\n",
|
|
17
|
+
"export const sleep = (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms));\n",
|
|
18
|
+
"import { splitToWords } from \"./splitToWords\";\n\nexport const toKebabCase = (input: string): string => {\n input = input.trim();\n return splitToWords(input).join(\"-\").toLowerCase();\n};\n",
|
|
19
|
+
"import { capitalizeWord } from \"./capitalizeWord\";\nimport { splitToWords } from \"./splitToWords\";\n\nexport const toPascalCase = (input: string): string => {\n input = input.trim();\n return splitToWords(input).map(capitalizeWord).join(\"\");\n};\n"
|
|
20
|
+
],
|
|
21
|
+
"mappings": "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",
|
|
22
|
+
"debugId": "D3540DB7AD21EC7364756E2164756E21",
|
|
23
|
+
"names": []
|
|
24
|
+
}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ooneex/utils",
|
|
3
|
-
"version": "0.0.6",
|
|
4
3
|
"description": "",
|
|
4
|
+
"version": "0.0.8",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist",
|
|
8
|
+
"LICENSE",
|
|
9
|
+
"README.md",
|
|
10
|
+
"package.json"
|
|
11
|
+
],
|
|
12
|
+
"module": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
6
14
|
"exports": {
|
|
7
15
|
".": {
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
16
|
+
"import": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"default": "./dist/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
11
22
|
},
|
|
12
|
-
"types": "./dist/index.d.ts",
|
|
13
|
-
"main": "./dist/index.js",
|
|
14
|
-
"module": "./dist/index.js",
|
|
15
23
|
"license": "MIT",
|
|
16
24
|
"scripts": {
|
|
17
|
-
"
|
|
18
|
-
"build": "
|
|
19
|
-
"
|
|
25
|
+
"test": "bun test tests",
|
|
26
|
+
"build": "bunup",
|
|
27
|
+
"lint": "tsgo --noEmit && bunx biome lint",
|
|
28
|
+
"publish:prod": "bun publish --tolerate-republish --access public",
|
|
29
|
+
"publish:pack": "bun pm pack --destination ./dist",
|
|
30
|
+
"publish:dry": "bun publish --dry-run"
|
|
20
31
|
},
|
|
21
|
-
"devDependencies": {},
|
|
22
|
-
"peerDependencies": {},
|
|
23
32
|
"dependencies": {
|
|
24
33
|
"nanoid": "^5.1.6"
|
|
25
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {}
|
|
26
36
|
}
|
package/dist/capitalizeWord.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capitalizeWord.d.ts","sourceRoot":"","sources":["../src/capitalizeWord.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,MAE7C,CAAC"}
|
package/dist/dataURLtoFile.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataURLtoFile.d.ts","sourceRoot":"","sources":["../src/dataURLtoFile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,UAAU,MAAM,SAW9D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatRelativeNumber.d.ts","sourceRoot":"","sources":["../src/formatRelativeNumber.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,MAMlG,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"millisecondsToHMS.d.ts","sourceRoot":"","sources":["../src/millisecondsToHMS.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,KAAG,MAe9C,CAAC"}
|
package/dist/parseEnvVars.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseEnvVars.d.ts","sourceRoot":"","sources":["../src/parseEnvVars.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,CAUzF,CAAC"}
|
package/dist/parseString.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseString.d.ts","sourceRoot":"","sources":["../src/parseString.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,GAAG,OAAO,EAAE,MAAM,MAAM,KAAG,CA4CvD,CAAC"}
|
package/dist/random.d.ts
DELETED
package/dist/random.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;kBACH,MAAM,GAAG,MAAM;qBAGZ,MAAM,GAAG,MAAM;yBAGX,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM;CAGxD,CAAC"}
|
package/dist/secondsToHMS.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secondsToHMS.d.ts","sourceRoot":"","sources":["../src/secondsToHMS.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAe9C,CAAC"}
|
package/dist/secondsToMS.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secondsToMS.d.ts","sourceRoot":"","sources":["../src/secondsToMS.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAI7C,CAAC"}
|
package/dist/sleep.d.ts
DELETED
package/dist/sleep.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CAE9C,CAAC"}
|
package/dist/splitToWords.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"splitToWords.d.ts","sourceRoot":"","sources":["../src/splitToWords.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,0BAEzC,CAAC"}
|
package/dist/toCamelCase.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toCamelCase.d.ts","sourceRoot":"","sources":["../src/toCamelCase.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAI3C,CAAC"}
|
package/dist/toKebabCase.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toKebabCase.d.ts","sourceRoot":"","sources":["../src/toKebabCase.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAG3C,CAAC"}
|
package/dist/toPascalCase.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toPascalCase.d.ts","sourceRoot":"","sources":["../src/toPascalCase.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAG5C,CAAC"}
|
package/dist/trim.d.ts
DELETED
package/dist/trim.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trim.d.ts","sourceRoot":"","sources":["../src/trim.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,aAAU,KAAG,MAO/C,CAAC"}
|
package/src/capitalizeWord.ts
DELETED
package/src/dataURLtoFile.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export const dataURLtoFile = (dataurl: string, filename: string) => {
|
|
2
|
-
const arr = dataurl.split(",");
|
|
3
|
-
const mimeMatch = arr[0]?.match(/:(.*?);/);
|
|
4
|
-
const mime = mimeMatch ? mimeMatch[1] : "";
|
|
5
|
-
const bstr = atob(arr[1] as string);
|
|
6
|
-
let n = bstr.length;
|
|
7
|
-
const u8arr = new Uint8Array(n);
|
|
8
|
-
while (n--) {
|
|
9
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
10
|
-
}
|
|
11
|
-
return new File([u8arr], filename, { type: mime });
|
|
12
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export const formatRelativeNumber = (num: number, config?: { precision?: number; lang?: string }): string => {
|
|
2
|
-
return new Intl.NumberFormat(config?.lang ?? "en-GB", {
|
|
3
|
-
notation: "compact",
|
|
4
|
-
compactDisplay: "short",
|
|
5
|
-
maximumFractionDigits: config?.precision ?? 1,
|
|
6
|
-
}).format(num);
|
|
7
|
-
};
|
package/src/index.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export { capitalizeWord } from "./capitalizeWord";
|
|
2
|
-
export { dataURLtoFile } from "./dataURLtoFile";
|
|
3
|
-
export { formatRelativeNumber } from "./formatRelativeNumber";
|
|
4
|
-
export { millisecondsToHMS } from "./millisecondsToHMS";
|
|
5
|
-
export { parseEnvVars } from "./parseEnvVars";
|
|
6
|
-
export { parseString } from "./parseString";
|
|
7
|
-
export { random } from "./random";
|
|
8
|
-
export { secondsToHMS } from "./secondsToHMS";
|
|
9
|
-
export { secondsToMS } from "./secondsToMS";
|
|
10
|
-
export { sleep } from "./sleep";
|
|
11
|
-
export { splitToWords } from "./splitToWords";
|
|
12
|
-
export { toCamelCase } from "./toCamelCase";
|
|
13
|
-
export { toKebabCase } from "./toKebabCase";
|
|
14
|
-
export { toPascalCase } from "./toPascalCase";
|
|
15
|
-
export { trim } from "./trim";
|
package/src/millisecondsToHMS.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const millisecondsToHMS = (ms: number): string => {
|
|
2
|
-
const totalSeconds = Math.floor(ms / 1000);
|
|
3
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
4
|
-
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
5
|
-
const seconds = totalSeconds % 60;
|
|
6
|
-
|
|
7
|
-
if (hours > 0) {
|
|
8
|
-
return `${hours}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (minutes > 0) {
|
|
12
|
-
return `${minutes}:${seconds.toString().padStart(2, "0")}`;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return seconds.toString();
|
|
16
|
-
};
|
package/src/parseEnvVars.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { parseString } from "./parseString";
|
|
2
|
-
import { toCamelCase } from "./toCamelCase";
|
|
3
|
-
|
|
4
|
-
export const parseEnvVars = <T = Record<string, unknown>>(envs: Record<string, unknown>): T => {
|
|
5
|
-
const vars: Record<string, unknown> = {};
|
|
6
|
-
|
|
7
|
-
for (const key in envs) {
|
|
8
|
-
const k = toCamelCase(key);
|
|
9
|
-
const value = parseString(envs[key] as string) as unknown;
|
|
10
|
-
vars[k] = value;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return vars as T;
|
|
14
|
-
};
|
package/src/parseString.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { trim } from "./trim";
|
|
2
|
-
|
|
3
|
-
export const parseString = <T = unknown>(text: string): T => {
|
|
4
|
-
if (/^[0-9]+$/.test(text)) {
|
|
5
|
-
return Number.parseInt(text, 10) as T;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
if (/^[0-9]+[.][0-9]+$/.test(text)) {
|
|
9
|
-
return Number.parseFloat(text) as T;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (/^true$/i.test(text)) {
|
|
13
|
-
return true as T;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if (/^false$/i.test(text)) {
|
|
17
|
-
return false as T;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (/^null$/i.test(text)) {
|
|
21
|
-
return null as T;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (/^\[/.test(text) && /]$/.test(text)) {
|
|
25
|
-
const trimmedText = trim(text, "\\[|\\]");
|
|
26
|
-
|
|
27
|
-
let values: unknown[] = trimmedText.split(/, */);
|
|
28
|
-
|
|
29
|
-
values = values.map((value) => {
|
|
30
|
-
return parseString(value as string);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
return values as T;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
try {
|
|
37
|
-
const result = JSON.parse(text);
|
|
38
|
-
|
|
39
|
-
if (result === Number.POSITIVE_INFINITY || result === Number.NEGATIVE_INFINITY) {
|
|
40
|
-
return text as T;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return result;
|
|
44
|
-
} catch {
|
|
45
|
-
return text as T;
|
|
46
|
-
}
|
|
47
|
-
};
|
package/src/random.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { customAlphabet } from "nanoid";
|
|
2
|
-
|
|
3
|
-
export const random = {
|
|
4
|
-
nanoid(size?: number): string {
|
|
5
|
-
return customAlphabet("1234567890abcdef", size ?? 10)();
|
|
6
|
-
},
|
|
7
|
-
stringInt(size?: number): string {
|
|
8
|
-
return customAlphabet("1234567890", size ?? 10)();
|
|
9
|
-
},
|
|
10
|
-
nanoidFactory(size?: number): (size?: number) => string {
|
|
11
|
-
return customAlphabet("1234567890abcdef", size ?? 10);
|
|
12
|
-
},
|
|
13
|
-
};
|
package/src/secondsToHMS.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const secondsToHMS = (seconds: number): string => {
|
|
2
|
-
const totalSeconds = Math.floor(seconds);
|
|
3
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
4
|
-
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
5
|
-
const remainingSeconds = totalSeconds % 60;
|
|
6
|
-
|
|
7
|
-
if (hours > 0) {
|
|
8
|
-
return `${hours}:${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
if (minutes > 0) {
|
|
12
|
-
return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return remainingSeconds.toString();
|
|
16
|
-
};
|
package/src/secondsToMS.ts
DELETED
package/src/sleep.ts
DELETED
package/src/splitToWords.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const CAPITALIZED_WORD_REGEXP = /\p{Lu}\p{Ll}+/u; // e.g. Apple
|
|
2
|
-
const ACRONYM_REGEXP = /\p{Lu}+(?=(\p{Lu}\p{Ll})|\P{L}|\b)/u; // e.g. ID, URL, handles an acronym followed by a capitalized word e.g. HTMLElement
|
|
3
|
-
const LOWERCASED_WORD_REGEXP = /(\p{Ll}+)/u; // e.g. apple
|
|
4
|
-
const ANY_LETTERS = /\p{L}+/u; // will match any sequence of letters, including in languages without a concept of upper/lower case
|
|
5
|
-
const DIGITS_REGEXP = /\p{N}+/u; // e.g. 123
|
|
6
|
-
|
|
7
|
-
const WORD_OR_NUMBER_REGEXP = new RegExp(
|
|
8
|
-
`${CAPITALIZED_WORD_REGEXP.source}|${ACRONYM_REGEXP.source}|${LOWERCASED_WORD_REGEXP.source}|${ANY_LETTERS.source}|${DIGITS_REGEXP.source}`,
|
|
9
|
-
"gu",
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
export const splitToWords = (input: string) => {
|
|
13
|
-
return input.match(WORD_OR_NUMBER_REGEXP) ?? [];
|
|
14
|
-
};
|
package/src/toCamelCase.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { capitalizeWord } from "./capitalizeWord";
|
|
2
|
-
import { splitToWords } from "./splitToWords";
|
|
3
|
-
|
|
4
|
-
export const toCamelCase = (input: string): string => {
|
|
5
|
-
input = input.trim();
|
|
6
|
-
const [first = "", ...rest] = splitToWords(input);
|
|
7
|
-
return [first.toLowerCase(), ...rest.map(capitalizeWord)].join("");
|
|
8
|
-
};
|
package/src/toKebabCase.ts
DELETED
package/src/toPascalCase.ts
DELETED
package/src/trim.ts
DELETED