{"_id":"string-ts","_rev":"38-1e3914517a9d60264750bdccfeb856d8","name":"string-ts","dist-tags":{"experimental":"2.3.0-experimental.4","latest":"2.3.1"},"versions":{"0.0.1":{"name":"string-ts","version":"0.0.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.0.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"5ca4a80f47f14d403a12788021070c288374f470","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.0.1.tgz","fileCount":6,"integrity":"sha512-PfAKgv2nFew9yYN9Bf65tChfQ3sWFoaO5w1uOSZNBLemoJMT1ZdMyzAyZtAOJinj7FzfFEQ/pHUcbb5jiVUbnQ==","signatures":[{"sig":"MEYCIQDXqIrC+t6+fqAjhjgGpaA+fub08GO0uOIRU21u2EZXzQIhAPHYGQuigmjzpOtkZGFxJ1b4TYNZqsu1ebaA2oX3mH2c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19395},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"9d99f4fb1dada4bc48f4a0af1e5beedb34bd1d3f","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.0.1_1687532915756_0.16939836884020143","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"string-ts","version":"0.2.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.2.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"704b5f8d3135d0acc8f072fd4e9081ce8647afde","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.2.0.tgz","fileCount":6,"integrity":"sha512-9PNMaKJw+ly4YFm5K3f/WY5V28cF2cmPtKTPiyszt2I0eUboXrY0tDuKHcx2+uwlPr18t8Vjf0D65i88PCB7rg==","signatures":[{"sig":"MEQCIBnZ4Zj47l4jL+gQD8MKas4tui+b/5fkpIKguCjoYWaBAiB7MUvzvT8x9aSzo9DfJAf5UuYGFhFmE6wE+wOsu8HUOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32808},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"660084bcb26457d989f6bccd6c727f50d840e752","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.2.0_1687544142124_0.5103912230739136","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"string-ts","version":"0.2.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.2.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"fe2b3e74e538e7d4d73669b1e2256691d616777c","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.2.1.tgz","fileCount":6,"integrity":"sha512-N3dH/eGFZzdVB2uloJJHzaxKMMO0gG0/xZw/OVfp92pXVQ0XjIMuCBBgW1+DyA/KenxsbmWA3Vvb/hLRuaWxtQ==","signatures":[{"sig":"MEYCIQCXnibQTvjAYUCsLwMn0mc6i4YA2xE+7Ny4fLI53udoWAIhAPvGu1qzUYthqGTLATiMJ6DT/fdeT0Zng8wriLHTKP6N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35934},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"f17105caa9c139dcfe1878ce3059191d1638ace6","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.2.1_1687894526496_0.9609826710567968","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"string-ts","version":"0.3.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.3.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"f9271bc4c9517f0ed70ffce049a44bfbf1e5985d","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.3.0.tgz","fileCount":6,"integrity":"sha512-b4/0tqk16JwLEYFn0tBuBu9VptNmuSvCSDrhZj0ei7EDoixn/yyVE5UoxjaPu0Iexhyfq6VXz00IpFs8DGfmBQ==","signatures":[{"sig":"MEUCIFz4XRShwoary2nNbHZefAF/dt7HN2a1guT4ixdAom0mAiEA4g9/8JXg+yY9VLZy+9DgDJku4lhZarJbakJRaVmgF9o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38793},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"ca0578a77ed74956781ae837ac98da7e837dab40","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"deprecated":"this version is broken 😬","repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.3.0_1688648226767_0.010566128218207682","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"string-ts","version":"0.3.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.3.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"49c9190257e0e587346b56e08c8d545925a92f49","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.3.1.tgz","fileCount":6,"integrity":"sha512-eeVUwM3QQ2AQjhXQOdutRt5Lmh3rD6d6ZOO1Q5w1o+6gKMvZNQhkglkOwvz8sjwFB/ibYFqmqOXDlMGKo9b9tw==","signatures":[{"sig":"MEUCIBOJt8ekF85oOYargevnmTQKkUJ2QD1FVrGlu5IY+o5dAiEAztQkyN9ejsDiZcs6tacJHJrmwQdlr9ZE6plhaWzFpdw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38793},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"2ad68c1acac83fd948c9e8ee94725b5568bfafe0","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.3.1_1689100103550_0.22192842455093298","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"string-ts","version":"0.4.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.4.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"2127201b0044fb76eb86ca088e29341b2bf2e3f2","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.4.0.tgz","fileCount":6,"integrity":"sha512-9ZPFkZWhpwkBtKGedR4t3vvuCV+VkbX2IDKH19++71Pn9VPpRTsVtl/k4g/6IHZNCXdd+oSAcdiGiss/F0T0xQ==","signatures":[{"sig":"MEUCIGApaqF/e9GeqXihVLGgEst/oEK/KALhCTCfo9UCR/gZAiEA4HZFjVijXTNnFYb9QTSc7deRISgUyu9AxPFGVbRI4N0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38793},"main":"./dist/index.js","_from":"file:string-ts-0.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-0.4.0.tgz","_integrity":"sha512-9ZPFkZWhpwkBtKGedR4t3vvuCV+VkbX2IDKH19++71Pn9VPpRTsVtl/k4g/6IHZNCXdd+oSAcdiGiss/F0T0xQ==","repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.4.0_1689100659345_0.20585821454500364","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"string-ts","version":"0.4.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.4.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"f769d75514c0edd6d5c79c5bd203872ca194a848","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.4.1.tgz","fileCount":6,"integrity":"sha512-zGIWgH7B67PEnYJW7LlW+8rG7N2Ii3JtE49HZ7EXEu049yMfUAk53DNHdpmA6+2O/u2rdD0TEMaZv+P7Oel7cA==","signatures":[{"sig":"MEUCIQDsLZn/KaWcWf/0aJvTxgHgsy2tmhLLQNm/9mYap28dZwIgMDCkX/KNmf/AEjUjBrurzXnAfaagP2gBe4xTCxkBeMQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38810},"main":"./dist/index.js","_from":"file:string-ts-0.4.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-0.4.1.tgz","_integrity":"sha512-zGIWgH7B67PEnYJW7LlW+8rG7N2Ii3JtE49HZ7EXEu049yMfUAk53DNHdpmA6+2O/u2rdD0TEMaZv+P7Oel7cA==","repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.4.1_1690552206201_0.21926649732891357","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"string-ts","version":"0.5.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.5.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"2c923d2c6df2a6af57332e534e419505d25a73d1","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.5.0.tgz","fileCount":6,"integrity":"sha512-ZDWFSO+ujhmo/xpDhhDdcvB2+QCi/KUa/WEj+6bzWnHq+5pFFqAxnNReWwpWFPLeQ3yFWWxN62cnFd8l1UnLZg==","signatures":[{"sig":"MEUCIQCcdm/i5Pma4fXHQcXzTnlNti/0K8oTrZxR/gWVVAySugIgNPQYnXiTJ8KwTNToBV4aroK1PevupGO9Tb2A+w6PVB0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39967},"main":"./dist/index.js","_from":"file:string-ts-0.5.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-0.5.0.tgz","_integrity":"sha512-ZDWFSO+ujhmo/xpDhhDdcvB2+QCi/KUa/WEj+6bzWnHq+5pFFqAxnNReWwpWFPLeQ3yFWWxN62cnFd8l1UnLZg==","repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.5.0_1692632639925_0.688418804517932","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"string-ts","version":"0.5.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.5.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gugaguichard/string-ts#readme","bugs":{"url":"https://github.com/gugaguichard/string-ts/issues"},"dist":{"shasum":"6f2080d54fae13191974eef972536786550fba37","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.5.1.tgz","fileCount":6,"integrity":"sha512-tiy4ZRZ7/J+M/wQY1FhcJ3iWb7x8MgAdUpja/0z7i1cnAmsN8pwWx1MAXi4Oe8hebglqpKkucRKt9ubxMpzpuQ==","signatures":[{"sig":"MEQCIDPK1uDR4+mUwFw287fcQdeRqOmZxPHekW1qYCDGqVQ3AiAoal8n3g3FUbY/jlkxRZsmsWVkWYSfb+LA/LDyMyNu/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39995},"main":"./dist/index.js","_from":"file:string-ts-0.5.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-0.5.1.tgz","_integrity":"sha512-tiy4ZRZ7/J+M/wQY1FhcJ3iWb7x8MgAdUpja/0z7i1cnAmsN8pwWx1MAXi4Oe8hebglqpKkucRKt9ubxMpzpuQ==","repository":{"url":"git+https://github.com/gugaguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.5.1_1696253759648_0.9762074305082331","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"string-ts","version":"1.0.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.0.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"81350792a5f5ede278911f0691a16db5f6f4190d","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.0.0.tgz","fileCount":6,"integrity":"sha512-eb4Pfocg74WuvAc0GIgyk3wtS4vFR+EfE54qimaqsdXqjzTz5D6iWyW86EWMUPd4YC3t6BJ2YJE3Js7lkVkxxA==","signatures":[{"sig":"MEUCIFahtg+2peBoUWiVgkvl8j2siYRz2uJOWXliMIZG3G6MAiEAoSk3Nizv0gkHVAABeq5accurGwmW8WNDe0BlCm+cGlg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50401},"main":"./dist/index.js","_from":"file:string-ts-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.0.0.tgz","_integrity":"sha512-eb4Pfocg74WuvAc0GIgyk3wtS4vFR+EfE54qimaqsdXqjzTz5D6iWyW86EWMUPd4YC3t6BJ2YJE3Js7lkVkxxA==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.0.0_1696355788526_0.76769907005188","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"string-ts","version":"1.1.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.1.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"0d7e3700933ed0036b063a4bfa6064d3fdd6c6bb","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.1.0.tgz","fileCount":6,"integrity":"sha512-X0GnZqjD+3pE8BcilERwVmjI+r6w6Gmx3e9oB+WLdzb/ABaOtluuLK9nf73eqPobRD0wWRqwM5zvTd12fQAgJw==","signatures":[{"sig":"MEQCIBivlz+xfm0NTGHQcFfL/mxwS8Zr5cBZ+vV8eaFVp9x0AiB0yKdUgjBGUqDgVXh4SVigzMBuKWfrmvkInXhVo+GmVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56954},"main":"./dist/index.js","_from":"file:string-ts-1.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.1.0.tgz","_integrity":"sha512-X0GnZqjD+3pE8BcilERwVmjI+r6w6Gmx3e9oB+WLdzb/ABaOtluuLK9nf73eqPobRD0wWRqwM5zvTd12fQAgJw==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.1.0_1696447798477_0.5486358047961359","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"string-ts","version":"1.2.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.2.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"2e12c8448aafafbf3693bb12ef952e3d27180afc","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.2.0.tgz","fileCount":6,"integrity":"sha512-4pRpax75q05wvh7HS3I3TgXM1R24NrS/x4yZ1Y46IOwavriZi5/cjC9OEn9BrJpjXV7VTcF1s/Wj6iEv2rlVvg==","signatures":[{"sig":"MEYCIQD4ocFK5QOTe6X2+sBXp0biiTT+ZjLM2+kLAiTTRBHMdwIhAL5FEaIrtfhH2bODiNUEa5hmpksM97aTPXMdEumX1juz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67930},"main":"./dist/index.js","_from":"file:string-ts-1.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.2.0.tgz","_integrity":"sha512-4pRpax75q05wvh7HS3I3TgXM1R24NrS/x4yZ1Y46IOwavriZi5/cjC9OEn9BrJpjXV7VTcF1s/Wj6iEv2rlVvg==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.2.0_1696607194624_0.15992308906739372","host":"s3://npm-registry-packages"}},"0.0.0-experimental-20231006":{"name":"string-ts","version":"0.0.0-experimental-20231006","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@0.0.0-experimental-20231006","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"c22feac1ac9031928956bddff3a1fb6fea6ccf59","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-0.0.0-experimental-20231006.tgz","fileCount":87,"integrity":"sha512-4j/ZWpg5T950yqXtsdjjTbiv2vfQaFsoJZrFLSpYmIUqctuqQRW8kG2Mjx8ITskNBiUUXkToXTekpaYUDILHqQ==","signatures":[{"sig":"MEYCIQDwv6bj8hHLu+60qJ0i++fnWUXKHEcAOiwDnR9kp9td6gIhAIp0s1ID1F2yyO+wE/iVDjeplcYfZpnJVpTf+sr/5qyZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126924},"main":"dist/commonjs/index.js","_from":"file:string-ts-0.0.0-experimental-20231006.tgz","types":"./dist/commonjs/index.d.ts","module":"dist/es/index.js","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc","lint":"eslint *.ts*","test":"vitest run","build":"npm run clean-dist && npm run build:es && npm run build:cjs","build:es":"tsc --project tsconfig.build.json --module esnext --outDir \"./dist/es\"","build:cjs":"tsc --project tsconfig.build.json --module commonjs --outDir \"./dist/commonjs\"","clean-dist":"rm -rf ./dist && mkdir dist"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-0.0.0-experimental-20231006.tgz","_integrity":"sha512-4j/ZWpg5T950yqXtsdjjTbiv2vfQaFsoJZrFLSpYmIUqctuqQRW8kG2Mjx8ITskNBiUUXkToXTekpaYUDILHqQ==","deprecated":"this experimental version has been deprecated","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"jsnext:main":"dist/es/index.js","_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_0.0.0-experimental-20231006_1696636762032_0.9528358877590293","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"string-ts","version":"1.3.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.3.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"d73456502be5edb4bfcfc6e05c5e455d91e36fbb","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.3.0.tgz","fileCount":6,"integrity":"sha512-v8hbud0DNxH8vdfm6MZ9SEt/25lk6ie4GCpzA9YFgBdXsZkXDENnKfWjv8Z3LpxvM4DKxgwdhcxnicWOvDsNdA==","signatures":[{"sig":"MEYCIQCHjGvT1/EydAwGFbgxo4w6um26/ww5PC12eOX1v6r6TQIhAMbSSWfOxDLBL4+QneHGA22lueCDXtMkhOTcRsqjkUxd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":79098},"main":"./dist/index.js","_from":"file:string-ts-1.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.3.0.tgz","_integrity":"sha512-v8hbud0DNxH8vdfm6MZ9SEt/25lk6ie4GCpzA9YFgBdXsZkXDENnKfWjv8Z3LpxvM4DKxgwdhcxnicWOvDsNdA==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@vitest/coverage-v8":"^0.34.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.3.0_1697029805476_0.5026817947221576","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"string-ts","version":"1.3.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.3.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"5550b017946a1a74ea66e245047f52b131f68b8b","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.3.1.tgz","fileCount":3,"integrity":"sha512-LB16O7EFZrfxeg2M9MK5yfKwFVpykFeI6fL5s3M7Ms/SLyE69XnctNv+1DLLDagpf+OVXTgIshdy3xukqEdBFQ==","signatures":[{"sig":"MEQCIB9W9JlxyrCr5e0hpEz/G03bPkXGJZhw41JBLx+zcXxBAiBbSG8Rb927avr10HDVQgng2iG7xwkK4xJJkbGwiGRoQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29515},"main":"./dist/index.js","_from":"file:string-ts-1.3.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.3.1.tgz","_integrity":"sha512-LB16O7EFZrfxeg2M9MK5yfKwFVpykFeI6fL5s3M7Ms/SLyE69XnctNv+1DLLDagpf+OVXTgIshdy3xukqEdBFQ==","deprecated":"This version is buggy","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@vitest/coverage-v8":"^0.34.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.3.1_1697146563780_0.12891642762701183","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"string-ts","version":"1.3.2","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.3.2","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"132e44cb297e7c2560b1e09342a7cba8236e5c80","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.3.2.tgz","fileCount":6,"integrity":"sha512-5F+iJbIM4btM6uM/IcbOPMhkpbP5aibBC3yls2oqDPpuG/HTS/2JUSi9shMyFiSGYVnJRujjGFK93fG7dtv03Q==","signatures":[{"sig":"MEQCID29GCjeJ4rrCtjiYG3Nz1htlFBVGdofqFw00Ks2B3aTAiAS8wqQBdfABljP7T94zJu9fot7bwdGLK19iGmWMbjaPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":79601},"main":"./dist/index.js","_from":"file:string-ts-1.3.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.3.2.tgz","_integrity":"sha512-5F+iJbIM4btM6uM/IcbOPMhkpbP5aibBC3yls2oqDPpuG/HTS/2JUSi9shMyFiSGYVnJRujjGFK93fG7dtv03Q==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"18.9.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@vitest/coverage-v8":"^0.34.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.3.2_1697184766806_0.6583755361724379","host":"s3://npm-registry-packages"}},"1.3.3":{"name":"string-ts","version":"1.3.3","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@1.3.3","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"8db8252d87f659d3a713cb320a6fb45f25399b32","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-1.3.3.tgz","fileCount":7,"integrity":"sha512-0nU2RyF4+PMTA7K6TlL/Vzn2S+JGTI1OGonlgk/cfbVZ0zlzqg4dhXU74KunZKWf3KO5KPJhOalM1WHy2zag8Q==","signatures":[{"sig":"MEYCIQDNP69D8s6Qqv+klo5vGZiIbn5TsyT8Lp/rK6Lnf3nZYQIhAOTScO8YWPw9KdGgt6nJz6t4aoMxNLqS2KjJnS5zcLWZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119668},"main":"./dist/index.js","_from":"file:string-ts-1.3.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-1.3.3.tgz","_integrity":"sha512-0nU2RyF4+PMTA7K6TlL/Vzn2S+JGTI1OGonlgk/cfbVZ0zlzqg4dhXU74KunZKWf3KO5KPJhOalM1WHy2zag8Q==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@vitest/coverage-v8":"^0.34.6","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_1.3.3_1699533758462_0.05512645764504631","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"string-ts","version":"2.0.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.0.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"7481f4e4078a6cf0f3e6c0b0e16f73cb6bdbe9ba","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.0.0.tgz","fileCount":7,"integrity":"sha512-Q+WJ5tQ0AdCeWgbhe3ZqDw1v5DGac5/lmDVNbJIa/bFR7TGfB8nJ1rHQSqinZHB8wKetUfhQlfR89puRcIKZZw==","signatures":[{"sig":"MEQCIDl/V/rP103gexdNG5bMgbVVOTDnvgDeUCk0i6MTXXkBAiAiIW5B9XmedP77FO/xvphuo7oEG5NQM96QsuyrqDwkEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121387},"main":"./dist/index.js","_from":"file:string-ts-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.0.0.tgz","_integrity":"sha512-Q+WJ5tQ0AdCeWgbhe3ZqDw1v5DGac5/lmDVNbJIa/bFR7TGfB8nJ1rHQSqinZHB8wKetUfhQlfR89puRcIKZZw==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.1.6","@vitest/coverage-v8":"^1.0.2","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.0.0_1702987163634_0.840602502243504","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"string-ts","version":"2.1.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.1.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"21c339c58754df0f94efff7375ad0afdbe0bdaff","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.1.0.tgz","fileCount":7,"integrity":"sha512-YpGEBxS3Qw1De+RO3Gdrsx2gwYU9b7WmPtKhRLTTKc3oKzbOxqGDYLRGkNeIXLL4BGVZMXY49hPpzP3RAwUFAA==","signatures":[{"sig":"MEQCIDWrZGyMl7yVm0BiL0zibpTsvo00Xf79e6fM+xhNDg8vAiAGLhhMyeqhLJ95mH88FC7p2nqLcHchqCBQ2jvgBAJ7kg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124761},"main":"./dist/index.js","_from":"file:string-ts-2.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.1.0.tgz","_integrity":"sha512-YpGEBxS3Qw1De+RO3Gdrsx2gwYU9b7WmPtKhRLTTKc3oKzbOxqGDYLRGkNeIXLL4BGVZMXY49hPpzP3RAwUFAA==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.4.2","@vitest/coverage-v8":"^1.4.0","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.1.0_1710793744907_0.2599981413891084","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"string-ts","version":"2.1.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.1.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"416e2d6aafcc1da107a8d87055ea83ab9ff39b27","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.1.1.tgz","fileCount":7,"integrity":"sha512-BtSlY8ttfj+veJuirU5uOP7pxqIuGQHzPSNZS7Kj3orT8250GBijUYp0K5ZV+s5OREMsC1TLaSVB75kyeBYZyw==","signatures":[{"sig":"MEQCIECIFnmVukRnh3LZPNf4kK+b/r5H1Tz35Bn6d9dCgVdtAiBzjB1R0W7Tsg5dMB+8LQ+CF5iclIQECbp7urLnzSTT3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":125857},"main":"./dist/index.js","_from":"file:string-ts-2.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.1.1.tgz","_integrity":"sha512-BtSlY8ttfj+veJuirU5uOP7pxqIuGQHzPSNZS7Kj3orT8250GBijUYp0K5ZV+s5OREMsC1TLaSVB75kyeBYZyw==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.4.5","@vitest/coverage-v8":"^1.5.2","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.1.1_1714088174533_0.8533629808012695","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"string-ts","version":"2.2.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.2.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"46573f475f90f9b43c50cd01c9a603c83426bd25","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.2.0.tgz","fileCount":7,"integrity":"sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==","signatures":[{"sig":"MEUCIFTnng3TeZTIz1SWD45xYD0b2DglE9FzTKeB29XFZSBEAiEA7QGS9EI7jZCzuqKxvOQ41A0EwltP8xnyOtquXjP1vyo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128472},"main":"./dist/index.js","_from":"file:string-ts-2.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.2.0.tgz","_integrity":"sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"8.17.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.4.5","@vitest/coverage-v8":"^1.5.2","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.2.0_1718821165593_0.09577620475831083","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"string-ts","version":"2.2.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.2.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"9cf9a93d210f778080a9db86ca37cba37f55e44c","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.2.1.tgz","fileCount":7,"integrity":"sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==","signatures":[{"sig":"MEUCIHXtOuDbzTvZkGBAkWW2QTixfyP4F2WkcU4ZykLUoepcAiEA+w1CEWae0G+aXYBI9Gs7eRVTjffuNXOh0bH//mqI2E4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128270},"main":"./dist/index.js","_from":"file:string-ts-2.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"eslint *.ts*","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.2.1.tgz","_integrity":"sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"sideEfects":false,"_npmVersion":"11.0.0","description":"Strongly-typed string functions.","directories":{},"_nodeVersion":"23.6.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"latest","eslint":"latest","vitest":"latest","prettier":"latest","typescript":"^5.7.3","@vitest/coverage-v8":"^3.0.5","@typescript-eslint/eslint-plugin":"latest"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.2.1_1738602159984_0.48764762276683005","host":"s3://npm-registry-packages-npm-production"}},"2.3.0-experimental.0":{"name":"string-ts","version":"2.3.0-experimental.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.3.0-experimental.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"8c0485ba49091c810f054da582d23330b3abb96a","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.0-experimental.0.tgz","fileCount":10,"integrity":"sha512-1HJRfQttjSzlWNfAHdEUhyqrIK2T5eBCObF6Cqu0OqFW5ijQ9rvdYCUaAx+p4WqEZdehUAUiqdFIKY6q1qr0BQ==","signatures":[{"sig":"MEUCIFYNkjYxNhyC6jms44MCRqy2Dm31Ue6OehP0BZqeYLhAAiEAqlYzj8RR6rY//lnmG+CRK+1otat0MN9gEtwzXmjOmhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131386},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./native":{"default":"./dist/native.js"}},"gitHead":"eccdb0ef9f59a736a4c1580a859da18e804d47bf","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"biome check --write --error-on-warnings","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.ts","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"11.0.0","description":"Strongly-typed string functions.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.0","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.4","tsup":"latest","vitest":"latest","typescript":"^5.7.3","@types/node":"^22.15.3","@biomejs/biome":"^1.9.4","@vitest/coverage-v8":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.3.0-experimental.0_1746220319799_0.8693990391324213","host":"s3://npm-registry-packages-npm-production"}},"2.3.0-experimental.1":{"name":"string-ts","version":"2.3.0-experimental.1","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.3.0-experimental.1","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"ee7c1cbf811c4742a0b98504e3bd09c40b446158","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.0-experimental.1.tgz","fileCount":10,"integrity":"sha512-XPA7RB/DOwy/gOUJ9rRggmjl6WT9kviQ5F5rhXuKLTfjV2C1nbSu77l7Kx2FjAfV5eVmNMtEIsIebKvcCL/YXQ==","signatures":[{"sig":"MEUCIQDfKerfchSQuE5N+9G5uZ+JsSL7zD9To2WYE3946XvtTgIgUskYsmVo5aFL+niBF0aH73NoBsCy7dXbhDqJoMSZQI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131366},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./native":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"gitHead":"f52899ec08fcd5b370bf0f55cd7348d2e9cca3fc","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"biome check --write --error-on-warnings","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.ts","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"11.0.0","description":"Strongly-typed string functions.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.0","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.4","tsup":"latest","vitest":"latest","typescript":"^5.7.3","@types/node":"^22.15.3","@biomejs/biome":"^1.9.4","@vitest/coverage-v8":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.3.0-experimental.1_1746221812742_0.8780222628828462","host":"s3://npm-registry-packages-npm-production"}},"2.3.0-experimental.2":{"name":"string-ts","version":"2.3.0-experimental.2","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.3.0-experimental.2","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"d50a4ecfae0a52a3f5d30de9fabb1932e9c9fde3","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.0-experimental.2.tgz","fileCount":10,"integrity":"sha512-uPKW+wX2TFOzaLgh1eq20AtUuKzGUwN5chDrps9krM26a2HCh/+dzPG04HbsT6ygrqVbgye1BlwgrHAzBN1u+w==","signatures":[{"sig":"MEYCIQD9y63/YbF3tGh4gofaYX5VFgXBfeTLNHWBbQqN1nUp3wIhALKok8FhqTSstGx6ipOeNEBDKDiCOwMFwqZ0LLAbGivh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131398},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./native":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"gitHead":"63e2576878fbcf490011f80648117611f1ad5477","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"biome check --write --error-on-warnings","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.ts","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"11.0.0","description":"Strongly-typed string functions.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.0","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.4","tsup":"latest","vitest":"latest","typescript":"^5.7.3","@types/node":"^22.15.3","@biomejs/biome":"^1.9.4","@vitest/coverage-v8":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.3.0-experimental.2_1746454358765_0.0999189536715559","host":"s3://npm-registry-packages-npm-production"}},"2.3.0-experimental.3":{"name":"string-ts","version":"2.3.0-experimental.3","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.3.0-experimental.3","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"c701053b1d1997bf6b042204a23e0c3fc4c74b89","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.0-experimental.3.tgz","fileCount":10,"integrity":"sha512-qghKSgX2NB3A3wnb7l2EQztJt5OyqZygoJ+8xjEwz3BT0dotmlFZyQiUS1bz+WPsaZSUKiVkHAN/pVUtGmZZIg==","signatures":[{"sig":"MEYCIQCEjwwQQiry7Czw5x4MfG6ivvwtv+jmJ8z+6lvngq6lIwIhAJwFXp5VB5N1OsdOpednyv2gcRHsGW6oh5k1sx+ieVMQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131440},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./native":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"gitHead":"619bbbed38006b6cb202763e7b4f9f3215c2d9a8","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"biome check --write --error-on-warnings","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.mts","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"11.0.0","description":"Strongly-typed string functions.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.0","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.4","tsup":"latest","vitest":"latest","typescript":"^5.7.3","@types/node":"^22.15.3","@biomejs/biome":"^1.9.4","@vitest/coverage-v8":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.3.0-experimental.3_1746455261862_0.20167701641284164","host":"s3://npm-registry-packages-npm-production"}},"2.3.0-experimental.4":{"name":"string-ts","version":"2.3.0-experimental.4","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.3.0-experimental.4","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"ba4d3dd17903e010d481e7859d1c1acaa4615aaf","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.0-experimental.4.tgz","fileCount":10,"integrity":"sha512-XI6fOO715TXIqk0qcjXo5BnjVT43r1lQob4w81Ojz6OTK0QKtZvhlgBpsxXXUVBpmm+na8Pi487gDXenuiCRTA==","signatures":[{"sig":"MEQCIHeyPSbr2nd/BI7ULcNdWiGpSIzGn+JKy8zCMFTqwprHAiAfBRaLRacacv6p9S64xM4MygO696CwozW3jboodSSTng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131477},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs","require":"./dist/index.js"},"./native":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"gitHead":"1b5969ed285856489403bc618e319fbdc57a94a6","scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"biome check --write --error-on-warnings","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.mts","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"11.0.0","description":"Strongly-typed string functions.","directories":{},"sideEffects":false,"_nodeVersion":"23.6.0","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.4","tsup":"latest","vitest":"latest","typescript":"^5.7.3","@types/node":"^22.15.3","@biomejs/biome":"^1.9.4","@vitest/coverage-v8":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.3.0-experimental.4_1746455551624_0.17467889780334644","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"string-ts","version":"2.3.0","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","_id":"string-ts@2.3.0","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"homepage":"https://github.com/gustavoguichard/string-ts#readme","bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"dist":{"shasum":"b744e4a97126339e8bb85f6c044bbe50062aad9e","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.0.tgz","fileCount":10,"integrity":"sha512-Rbx+CZJkiDyG3LGagwNtkdNZNy/H2p2QxnviAoZiEyPIbypOPKMcEfxLzargSANV8t5a4RNKtESkTBQpalQAag==","signatures":[{"sig":"MEUCIF1FZzsXQWJtMM9/7R6FTeCLfxiLVcxdYS2MkJ7U36W6AiEAyE+niqMjU4QVN4aWSuSGNisg1XzsLtNGUt1EGct9y8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133022},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"_from":"file:string-ts-2.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","default":"./dist/index.mjs","require":"./dist/index.js"},"./native":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"scripts":{"dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","tsc":"tsc --noEmit","lint":"biome check --write --error-on-warnings","test":"vitest run","build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.mts","tsc:dist":"tsc --project tsconfig.dist.json"},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.3.0.tgz","_integrity":"sha512-Rbx+CZJkiDyG3LGagwNtkdNZNy/H2p2QxnviAoZiEyPIbypOPKMcEfxLzargSANV8t5a4RNKtESkTBQpalQAag==","repository":{"url":"git+https://github.com/gustavoguichard/string-ts.git","type":"git"},"_npmVersion":"11.4.2","description":"Strongly-typed string functions.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.0","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184","devDependencies":{"tsx":"^4.19.4","tsup":"latest","vitest":"latest","typescript":"^5.7.3","@types/node":"^22.15.3","@biomejs/biome":"^1.9.4","@vitest/coverage-v8":"^3.0.5"},"_npmOperationalInternal":{"tmp":"tmp/string-ts_2.3.0_1764268348934_0.11373455298111934","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"string-ts","version":"2.3.1","description":"Strongly-typed string functions.","author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","scripts":{"build":"tsup ./src/index.ts --format esm,cjs --dts --treeshake && tsx scripts/generate-entrypoints.mts","dev":"tsup ./src/index.ts --format esm,cjs --watch --dts","lint":"biome check --write --error-on-warnings","tsc":"tsc --noEmit","tsc:dist":"tsc --project tsconfig.dist.json","test":"vitest run"},"exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","default":"./dist/index.mjs","types":"./dist/index.d.ts"},"./native":{"default":"./dist/native.js","types":"./dist/native.d.ts"}},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","typesVersions":{"*":{"native":["dist/native.d.ts"]}},"devDependencies":{"@biomejs/biome":"^2.3.8","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.14","tsup":"latest","tsx":"^4.20.6","typescript":"^5.9.3","vitest":"latest"},"repository":{"type":"git","url":"git+https://github.com/gustavoguichard/string-ts.git"},"bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"sideEffects":false,"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","esbuild"],"overrides":{"vite":"^6.0.0"}},"packageManager":"pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184","_id":"string-ts@2.3.1","homepage":"https://github.com/gustavoguichard/string-ts#readme","_integrity":"sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==","_resolved":"/Users/guga/Projects/gustavoguichard/string-ts/string-ts-2.3.1.tgz","_from":"file:string-ts-2.3.1.tgz","_nodeVersion":"22.21.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==","shasum":"ef5394c8bd81139a2d49487623605f1208250d5a","tarball":"https://registry.npmjs.org/string-ts/-/string-ts-2.3.1.tgz","fileCount":10,"unpackedSize":134182,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICbeMwwM395m+U/KkhWnt5Co2L0/bLjqWwZj2gWE/7IDAiEAwWQ9iGEQwpO0a+DAEUfpEKYyYElM+FOKhF29msE2JGY="}]},"_npmUser":{"name":"guga.guichard","email":"gustavoguichard@gmail.com"},"directories":{},"maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/string-ts_2.3.1_1764351189905_0.23495122032323157"},"_hasShrinkwrap":false}},"time":{"created":"2023-06-23T15:08:35.755Z","modified":"2025-11-28T17:33:10.301Z","0.0.1":"2023-06-23T15:08:35.932Z","0.1.0":"2023-06-23T18:13:36.472Z","0.2.0":"2023-06-23T18:15:42.300Z","0.2.1":"2023-06-27T19:35:26.686Z","0.3.0":"2023-07-06T12:57:06.973Z","0.3.1":"2023-07-11T18:28:23.719Z","0.4.0":"2023-07-11T18:37:39.585Z","0.4.1":"2023-07-28T13:50:06.392Z","0.5.0":"2023-08-21T15:44:00.152Z","0.5.1":"2023-10-02T13:35:59.872Z","1.0.0":"2023-10-03T17:56:28.680Z","1.1.0":"2023-10-04T19:29:58.809Z","1.2.0":"2023-10-06T15:46:34.865Z","0.0.0-experimental-20231006":"2023-10-06T23:59:22.327Z","1.3.0":"2023-10-11T13:10:05.626Z","1.3.1":"2023-10-12T21:36:03.939Z","1.3.2":"2023-10-13T08:12:47.006Z","1.3.3":"2023-11-09T12:42:38.643Z","2.0.0":"2023-12-19T11:59:23.844Z","2.1.0":"2024-03-18T20:29:05.058Z","2.1.1":"2024-04-25T23:36:14.693Z","2.2.0":"2024-06-19T18:19:25.749Z","2.2.1":"2025-02-03T17:02:40.157Z","2.3.0-experimental.0":"2025-05-02T21:11:59.997Z","2.3.0-experimental.1":"2025-05-02T21:36:52.938Z","2.3.0-experimental.2":"2025-05-05T14:12:38.938Z","2.3.0-experimental.3":"2025-05-05T14:27:42.133Z","2.3.0-experimental.4":"2025-05-05T14:32:31.835Z","2.3.0":"2025-11-27T18:32:29.120Z","2.3.1":"2025-11-28T17:33:10.099Z"},"bugs":{"url":"https://github.com/gustavoguichard/string-ts/issues"},"author":{"name":"Gustavo Guichard","email":"@gugaguichard"},"license":"MIT","homepage":"https://github.com/gustavoguichard/string-ts#readme","repository":{"type":"git","url":"git+https://github.com/gustavoguichard/string-ts.git"},"description":"Strongly-typed string functions.","maintainers":[{"name":"guga.guichard","email":"gustavoguichard@gmail.com"}],"readme":"<p align=\"center\">\n  <img alt=\"StringTs Banner\" src=\"./docs/string-ts-banner.png\" width=\"800\" />\n</p>\n\n[![NPM](https://img.shields.io/npm/v/string-ts)](https://www.npmjs.org/package/string-ts)\n![Library size](https://img.shields.io/bundlephobia/minzip/string-ts)\n[![Code Coverage](https://img.shields.io/codecov/c/github/gustavoguichard/string-ts)](https://app.codecov.io/gh/gustavoguichard/string-ts)\n[![All Contributors](https://img.shields.io/github/contributors/gustavoguichard/string-ts)](#-contributors)\n\n## Strongly-typed string functions for all!\n\n![A demonstration of string-ts](https://github.com/gustavoguichard/string-ts/assets/566971/0aa5603f-871d-4eb7-8ace-6a73466cec4d)\n\n## 😬 The problem\n\nWhen you are working with literal strings, the string manipulation functions only work at the runtime level and the types don't follow those transformations.\nYou end up losing type information and possibly having to cast the result.\n\n```ts\nconst str = 'hello-world'\nconst result = str.replace('-', ' ') // you should use: as 'hello world'\n//    ^? string\n```\n\n## 🤓 The solution\n\nThis library aims to solve this problem by providing a set of common functions that work with literal strings at both type and runtime level.\n\n```ts\nimport { replace } from 'string-ts'\n\nconst str = 'hello-world'\nconst result = replace(str, '-', ' ')\n//    ^ 'hello world'\n```\n\n## 🔍 Why this matters\n\nTypeScript yields the best static analysis when types are highly specific.\nLiterals are more specific than type `string`.\nThis library preserves literals (and unions of literals) after transformations, unlike most existing utility libraries (and built-in string methods.)\n\n[I still don't get the purpose of this library 🤔](#%EF%B8%8F-interview)\n\n### In-depth example\n\nIn the below example, I want to get a strongly-typed, camel-case version of `process.env`.\nOne flow results in a loose type, and the other results in a more precise type.\nThis example should illustrate the highly-specific and flexible nature of `string-ts`.\n\n```ts\nimport { deepCamelKeys } from 'string-ts'\nimport { camelCase, mapKeys } from 'lodash-es'\nimport z from 'zod'\n\nconst EnvSchema = z.object({\n  NODE_ENV: z.string(),\n})\n\nfunction getEnvLoose() {\n  const rawEnv = EnvSchema.parse(process.env)\n  const env = mapKeys(rawEnv, (_v, k) => camelCase(k))\n  //    ^? Dictionary<string>\n\n  // `Dictionary<string>` is too loose\n  // TypeScript is okay with this, 'abc' is expected to be of type `string`\n  // This will have unexpected behavior at runtime\n  console.log(env.abc)\n}\n\nfunction getEnvPrecise() {\n  const rawEnv = EnvSchema.parse(process.env)\n  const env = deepCamelKeys(rawEnv)\n  //    ^? { nodeEnv: string }\n\n  // Error: Property 'abc' does not exist on type '{ nodeEnv: string; }'\n  // Our type is more specific, so TypeScript catches this error.\n  // This mistake will be caught at compile time\n  console.log(env.abc)\n}\n\nfunction main() {\n  getEnvLoose()\n  getEnvPrecise()\n}\n\nmain()\n```\n\n## 📦 Installation\n\n```bash\nnpm install string-ts\n```\n\n## 🌳 Tree shaking\n\n`string-ts` has been designed with tree shaking in mind.\nWe have tested it with build tools like Webpack, Vite, Rollup, etc.\n\n## 👌 Supported TypeScript versions\n\n`string-ts` currently only works on TypeScript v5+.\n\nIt also only work with common ASCII characters characters. We don't plan to support international characters or emojis.\n\n## 🪄 Native String Method Overrides\n\nExtracting functions from `string-ts` is the recommended usage, but if you'd like to apply strongly-typed versions of native string methods project-wide, you can do so with a single import.\n\nInspired by [ts-reset](https://github.com/total-typescript/ts-reset), this import overrides the native `String.prototype` type declarations, giving you strong typing for supported methods like `charAt`, `startsWith`, `endsWith`, `replace`, `split`, and more.\n\n```ts\nimport 'string-ts/native'\n\nconst str = 'hello-world' as const\n\nstr.replace('-', '_')\n//  ^? 'hello_world'\n\nstr.charAt(6)\n//  ^? 'w'\n\nstr.startsWith('hello')\n//  ^? true\n\nstr.split('-')\n//  ^? ['hello', 'world']\n```\n\nThis has minimal impact on type-checker performance. In our tests, TSC went from 17.21s to 17.41s.\n\n_Note: Only methods already supported by the library are typed. The `length` property cannot be strongly-typed as it's a read-only property, not a method._\n\n---\n\n# 📖 API\n\n- [Runtime counterparts of native type utilities](#runtime-counterparts-of-native-type-utilities)\n  - [capitalize](#capitalize)\n  - [uncapitalize](#uncapitalize)\n- [Strongly-typed alternatives to native runtime utilities](#strongly-typed-alternatives-to-native-runtime-utilities)\n  - [charAt](#charat)\n  - [concat](#concat)\n  - [endsWith](#endsWith)\n  - [includes](#includes)\n  - [join](#join)\n  - [length](#length)\n  - [padEnd](#padend)\n  - [padStart](#padstart)\n  - [repeat](#repeat)\n  - [replace](#replace)\n  - [replaceAll](#replaceall)\n  - [slice](#slice)\n  - [split](#split)\n  - [startsWith](#startsWith)\n  - [toLowerCase](#tolowercase)\n  - [toUpperCase](#touppercase)\n  - [trim](#trim)\n  - [trimEnd](#trimend)\n  - [trimStart](#trimstart)\n- [Strongly-typed alternatives to common loosely-typed functions](#strongly-typed-alternatives-to-common-loosely-typed-functions)\n  - [camelCase](#camelcase)\n  - [constantCase](#constantcase)\n  - [delimiterCase](#delimitercase)\n  - [kebabCase](#kebabcase)\n  - [pascalCase](#pascalcase)\n  - [reverse](#reverse)\n  - [snakeCase](#snakecase)\n  - [titleCase](#titlecase)\n  - [truncate](#truncate)\n  - [words](#words)\n- [Strongly-typed shallow transformation of objects](#strongly-typed-shallow-transformation-of-objects)\n  - [camelKeys](#camelkeys)\n  - [constantKeys](#constantkeys)\n  - [delimiterKeys](#delimiterkeys)\n  - [kebabKeys](#kebabkeys)\n  - [pascalKeys](#pascalkeys)\n  - [replaceKeys](#replacekeys)\n  - [snakeKeys](#snakekeys)\n- [Strongly-typed deep transformation of objects](#strongly-typed-deep-transformation-of-objects)\n  - [deepCamelKeys](#deepcamelkeys)\n  - [deepConstantKeys](#deepconstantkeys)\n  - [deepDelimiterKeys](#deepdelimiterkeys)\n  - [deepKebabKeys](#deepkebabkeys)\n  - [deepPascalKeys](#deeppascalkeys)\n  - [deepSnakeKeys](#deepsnakekeys)\n- [Type Utilities](#type-utilities)\n  - [Native TS type utilities](#native-ts-type-utilities)\n  - [General Type utilities from this library](#general-type-utilities-from-this-library)\n  - [Casing type utilities](#casing-type-utilities)\n  - [Other exported type utilities](#other-exported-type-utilities)\n- [Runtime-only utilities](#runtime-only-utilities)\n  - [deepTransformKeys](#deeptransformkeys)\n\n---\n\n## Runtime counterparts of native type utilities\n\n### capitalize\n\nCapitalizes the first letter of a string. This is a runtime counterpart of `Capitalize<T>` from `src/types.d.ts`.\n\n```ts\nimport { capitalize } from 'string-ts'\n\nconst str = 'hello world'\nconst result = capitalize(str)\n//    ^ 'Hello world'\n```\n\n### uncapitalize\n\nUncapitalizes the first letter of a string. This is a runtime counterpart of `Uncapitalize<T>` from `src/types.d.ts`.\n\n```ts\nimport { uncapitalize } from 'string-ts'\n\nconst str = 'Hello world'\nconst result = uncapitalize(str)\n//    ^ 'hello world'\n```\n\n## Strongly-typed alternatives to native runtime utilities\n\n### charAt\n\nThis function is a strongly-typed counterpart of `String.prototype.charAt`.\n\n```ts\nimport { charAt } from 'string-ts'\n\nconst str = 'hello world'\nconst result = charAt(str, 6)\n//    ^ 'w'\n```\n\n### concat\n\nThis function is a strongly-typed counterpart of `String.prototype.concat`.\n\n```ts\nimport { concat } from 'string-ts'\n\nconst result = concat('a', 'bc', 'def')\n//    ^ 'abcdef'\n```\n\n### endsWith\n\nThis function is a strongly-typed counterpart of `String.prototype.endsWith`.\n\n```ts\nimport { endsWith } from 'string-ts'\n\nconst result = endsWith('abc', 'c')\n//    ^ true\n```\n\n### includes\n\nThis function is a strongly-typed counterpart of `String.prototype.includes`.\n\n```ts\nimport { includes } from 'string-ts'\n\nconst result = includes('abcde', 'bcd')\n//    ^ true\n```\n\n### join\n\nThis function is a strongly-typed counterpart of `Array.prototype.join`.\n\n```ts\nimport { join } from 'string-ts'\n\nconst str = ['hello', 'world']\nconst result = join(str, ' ')\n//    ^ 'hello world'\n```\n\n### length\n\nThis function is a strongly-typed counterpart of `String.prototype.length`.\n\n```ts\nimport { length } from 'string-ts'\n\nconst str = 'hello'\nconst result = length(str)\n//    ^ 5\n```\n\n### padEnd\n\nThis function is a strongly-typed counterpart of `String.prototype.padEnd`.\n\n```ts\nimport { padEnd } from 'string-ts'\n\nconst str = 'hello'\nconst result = padEnd(str, 10, '=')\n//    ^ 'hello====='\n```\n\n### padStart\n\nThis function is a strongly-typed counterpart of `String.prototype.padStart`.\n\n```ts\nimport { padStart } from 'string-ts'\n\nconst str = 'hello'\nconst result = padStart(str, 10, '=')\n//    ^ '=====hello'\n```\n\n### repeat\n\nThis function is a strongly-typed counterpart of `String.prototype.repeat`.\n\n```ts\nimport { repeat } from 'string-ts'\n\nconst str = 'abc'\nconst result = repeat(str, 3)\n//    ^ 'abcabcabc'\n```\n\n### replace\n\nThis function is a strongly-typed counterpart of `String.prototype.replace`.\n\n_Warning: this is a partial implementation, as we don't fully support Regex. Using a RegExp lookup will result in a loose typing._\n\n```ts\nimport { replace } from 'string-ts'\n\nconst str = 'hello-world-'\nconst result = replace(str, '-', ' ')\n//    ^ 'hello world-'\nconst looselyTypedResult = replace(str, /-/, ' ')\n//    ^ string\n```\n\n### replaceAll\n\nThis function is a strongly-typed counterpart of `String.prototype.replaceAll`.\nIt also has a polyfill for runtimes older than ES2021.\n\n_Warning: this is a partial implementation, as we don't fully support Regex. Using a RegExp lookup will result in a loose typing._\n\n```ts\nimport { replaceAll } from 'string-ts'\n\nconst str = 'hello-world-'\nconst result = replaceAll(str, '-', ' ')\n//    ^ 'hello world '\nconst looselyTypedResult = replaceAll(str, /-/g, ' ')\n//    ^ string\n```\n\n### slice\n\nThis function is a strongly-typed counterpart of `String.prototype.slice`.\n\n```ts\nimport { slice } from 'string-ts'\n\nconst str = 'hello-world'\nconst result = slice(str, 6)\n//    ^ 'world'\nconst result2 = slice(str, 1, 5)\n//    ^ 'ello'\nconst result3 = slice(str, -5)\n//    ^ 'world'\n```\n\n### split\n\nThis function is a strongly-typed counterpart of `String.prototype.split`.\n\n```ts\nimport { split } from 'string-ts'\n\nconst str = 'hello-world'\nconst result = split(str, '-')\n//    ^ ['hello', 'world']\n```\n\n### startsWith\n\nThis function is a strongly-typed counterpart of `String.prototype.startsWith`.\n\n```ts\nimport { startsWith } from 'string-ts'\n\nconst result = startsWith('abc', 'a')\n//    ^ true\n```\n\n### toLowerCase\n\nThis function is a strongly-typed counterpart of `String.prototype.toLowerCase`.\n\n```ts\nimport { toLowerCase } from 'string-ts'\n\nconst str = 'HELLO WORLD'\nconst result = toLowerCase(str)\n//    ^ 'hello world'\n```\n\n### toUpperCase\n\nThis function is a strongly-typed counterpart of `String.prototype.toUpperCase`.\n\n```ts\nimport { toUpperCase } from 'string-ts'\n\nconst str = 'hello world'\nconst result = toUpperCase(str)\n//    ^ 'HELLO WORLD'\n```\n\n### trim\n\nThis function is a strongly-typed counterpart of `String.prototype.trim`.\n\n```ts\nimport { trim } from 'string-ts'\n\nconst str = '  hello world  '\nconst result = trim(str)\n//    ^ 'hello world'\n```\n\n### trimEnd\n\nThis function is a strongly-typed counterpart of `String.prototype.trimEnd`.\n\n```ts\nimport { trimEnd } from 'string-ts'\n\nconst str = '  hello world  '\nconst result = trimEnd(str)\n//    ^ '  hello world'\n```\n\n### trimStart\n\nThis function is a strongly-typed counterpart of `String.prototype.trimStart`.\n\n```ts\nimport { trimStart } from 'string-ts'\n\nconst str = '  hello world  '\nconst result = trimStart(str)\n//    ^ 'hello world  '\n```\n\n## Strongly-typed alternatives to common loosely-typed functions\n\n### lowerCase\n\nThis function converts a string to `lower case` at both runtime and type levels.\n_NOTE: this function will split by words and join them with `\" \"`, unlike `toLowerCase`._\n\n```ts\nimport { lowerCase } from 'string-ts'\n\nconst str = 'HELLO-WORLD'\nconst result = lowerCase(str)\n//    ^ 'hello world'\n```\n\n### camelCase\n\nThis function converts a string to `camelCase` at both runtime and type levels.\n\n```ts\nimport { camelCase } from 'string-ts'\n\nconst str = 'hello-world'\nconst result = camelCase(str)\n//    ^ 'helloWorld'\n```\n\n### constantCase\n\nThis function converts a string to `CONSTANT_CASE` at both runtime and type levels.\n\n```ts\nimport { constantCase } from 'string-ts'\n\nconst str = 'helloWorld'\nconst result = constantCase(str)\n//    ^ 'HELLO_WORLD'\n```\n\n### delimiterCase\n\nThis function converts a string to a new case with a custom delimiter at both runtime and type levels.\n\n```ts\nimport { delimiterCase } from 'string-ts'\n\nconst str = 'helloWorld'\nconst result = delimiterCase(str, '.')\n//    ^ 'hello.World'\n```\n\n### kebabCase\n\nThis function converts a string to `kebab-case` at both runtime and type levels.\n\n```ts\nimport { kebabCase } from 'string-ts'\n\nconst str = 'helloWorld'\nconst result = kebabCase(str)\n//    ^ 'hello-world'\n```\n\n### pascalCase\n\nThis function converts a string to `PascalCase` at both runtime and type levels.\n\n```ts\nimport { pascalCase } from 'string-ts'\n\nconst str = 'hello-world'\nconst result = pascalCase(str)\n//    ^ 'HelloWorld'\n```\n\n### snakeCase\n\nThis function converts a string to `snake_case` at both runtime and type levels.\n\n```ts\nimport { snakeCase } from 'string-ts'\n\nconst str = 'helloWorld'\nconst result = snakeCase(str)\n//    ^ 'hello_world'\n```\n\n### titleCase\n\nThis function converts a string to `Title Case` at both runtime and type levels.\n\n```ts\nimport { titleCase } from 'string-ts'\n\nconst str = 'helloWorld'\nconst result = titleCase(str)\n//    ^ 'Hello World'\n```\n\n### upperCase\n\nThis function converts a string to `UPPER CASE` at both runtime and type levels.\n_NOTE: this function will split by words and join them with `\" \"`, unlike `toUpperCase`._\n\n```ts\nimport { upperCase } from 'string-ts'\n\nconst str = 'hello-world'\nconst result = upperCase(str)\n//    ^ 'HELLO WORLD'\n```\n\n### reverse\n\nThis function reverses a string.\n\n```ts\nimport { reverse } from 'string-ts'\n\nconst str = 'Hello StringTS!'\nconst result = reverse(str)\n//    ^ '!TSgnirtS olleH'\n```\n\n### truncate\n\nThis function truncates string if it's longer than the given maximum string length. The last characters of the truncated string are replaced with the omission string which defaults to \"...\".\n\n```ts\nimport { truncate } from 'string-ts'\n\nconst str = '-20someVery-weird String'\nconst result = truncate(str, 8)\n//    ^ '-20so...'\n```\n\n### words\n\nThis function identifies the words in a string and returns a tuple of words split by separators, differences in casing, numbers, and etc.\n\n```ts\nimport { words } from 'string-ts'\n\nconst str = '-20someVery-weird String'\nconst result = words(str)\n//    ^ ['20', 'some', 'Very', 'weird', 'String']\n```\n\n## Strongly-typed shallow transformation of objects\n\n### camelKeys\n\nThis function shallowly converts the keys of an object to `camelCase` at both runtime and type levels.\n\n```ts\nimport { camelKeys } from 'string-ts'\n\nconst data = {\n  'hello-world': {\n    'foo-bar': 'baz',\n  },\n} as const\nconst result = camelKeys(data)\n//    ^ { helloWorld: { 'foo-bar': 'baz' } }\n```\n\n### constantKeys\n\nThis function shallowly converts the keys of an object to `CONSTANT_CASE` at both runtime and type levels.\n\n```ts\nimport { constantKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = constantKeys(data)\n//    ^ { 'HELLO_WORLD': { 'fooBar': 'baz' } }\n```\n\n### delimiterKeys\n\nThis function shallowly converts the keys of an object to a new case with a custom delimiter at both runtime and type levels.\n\n```ts\nimport { delimiterKeys } from 'string-ts'\n\nconst data = {\n  'hello-world': {\n    'foo-bar': 'baz',\n  },\n} as const\nconst result = delimiterKeys(data, '.')\n//    ^ { 'hello.world': { 'foo-bar': 'baz' } }\n```\n\n### kebabKeys\n\nThis function shallowly converts the keys of an object to `kebab-case` at both runtime and type levels.\n\n```ts\nimport { kebabKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = kebabKeys(data)\n//    ^ { 'hello-world': { fooBar: 'baz' } }\n```\n\n### pascalKeys\n\nThis function shallowly converts the keys of an object to `PascalCase` at both runtime and type levels.\n\n```ts\nimport { pascalKeys } from 'string-ts'\n\nconst data = {\n  'hello-world': {\n    'foo-bar': 'baz',\n  },\n} as const\nconst result = pascalKeys(data)\n//    ^ { HelloWorld: { FooBar: 'baz' } }\n```\n\n### snakeKeys\n\nThis function shallowly converts the keys of an object to `snake_case` at both runtime and type levels.\n\n```ts\nimport { snakeKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = snakeKeys(data)\n//    ^ { 'hello_world': { 'fooBar': 'baz' } }\n```\n\n### replaceKeys\n\nThis function shallowly transforms the keys of an object by applying [`replace`](#replace) to each of its keys at both runtime and type levels.\n\n```ts\nimport { replaceKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = replaceKeys(data, 'o', 'a')\n//    ^ { 'hellaWorld': { 'fooBar': 'baz' } }\n```\n\n## Strongly-typed deep transformation of objects\n\n### deepCamelKeys\n\nThis function recursively converts the keys of an object to `camelCase` at both runtime and type levels.\n\n```ts\nimport { deepCamelKeys } from 'string-ts'\n\nconst data = {\n  'hello-world': {\n    'foo-bar': 'baz',\n  },\n} as const\nconst result = deepCamelKeys(data)\n//    ^ { helloWorld: { fooBar: 'baz' } }\n```\n\n### deepConstantKeys\n\nThis function recursively converts the keys of an object to `CONSTANT_CASE` at both runtime and type levels.\n\n```ts\nimport { deepConstantKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = deepConstantKeys(data)\n//    ^ { 'HELLO_WORLD': { 'FOO_BAR': 'baz' } }\n```\n\n### deepDelimiterKeys\n\nThis function recursively converts the keys of an object to a new case with a custom delimiter at both runtime and type levels.\n\n```ts\nimport { deepDelimiterKeys } from 'string-ts'\n\nconst data = {\n  'hello-world': {\n    'foo-bar': 'baz',\n  },\n} as const\nconst result = deepDelimiterKeys(data, '.')\n//    ^ { 'hello.world': { 'foo.bar': 'baz' } }\n```\n\n### deepKebabKeys\n\nThis function recursively converts the keys of an object to `kebab-case` at both runtime and type levels.\n\n```ts\nimport { deepKebabKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = deepKebabKeys(data)\n//    ^ { 'hello-world': { 'foo-bar': 'baz' } }\n```\n\n### deepPascalKeys\n\nThis function recursively converts the keys of an object to `PascalCase` at both runtime and type levels.\n\n```ts\nimport { deepPascalKeys } from 'string-ts'\n\nconst data = {\n  'hello-world': {\n    'foo-bar': 'baz',\n  },\n} as const\nconst result = deepPascalKeys(data)\n//    ^ { HelloWorld: { FooBar: 'baz' } }\n```\n\n### deepSnakeKeys\n\nThis function recursively converts the keys of an object to `snake_case` at both runtime and type levels.\n\n```ts\nimport { deepSnakeKeys } from 'string-ts'\n\nconst data = {\n  helloWorld: {\n    fooBar: 'baz',\n  },\n} as const\nconst result = deepSnakeKeys(data)\n//    ^ { 'hello_world': { 'foo_bar': 'baz' } }\n```\n\n## Type utilities\n\nAll the functions presented in this API have associated type counterparts.\n\n```ts\nimport type * as St from 'string-ts'\n```\n\n### Native TS type utilities\n\n```ts\nCapitalize<'hello world'> // 'Hello world'\nLowercase<'HELLO WORLD'> // 'hello world'\nUppercase<'hello world'> // 'HELLO WORLD'\n```\n\n### General type utilities from this library\n\n```ts\nSt.CharAt<'hello world', 6> // 'w'\nSt.Concat<['a', 'bc', 'def']> // 'abcdef'\nSt.EndsWith<'abc', 'c'> // true\nSt.Includes<'abcde', 'bcd'> // true\nSt.Join<['hello', 'world'], '-'> // 'hello-world'\nSt.Length<'hello'> // 5\nSt.PadEnd<'hello', 10, '='> // 'hello====='\nSt.PadStart<'hello', 10, '='> // '=====hello'\nSt.Repeat<'abc', 3> // 'abcabcabc'\nSt.Replace<'hello-world', 'l', '1'> // 'he1lo-world'\nSt.ReplaceAll<'hello-world', 'l', '1'> // 'he11o-wor1d'\nSt.Reverse<'Hello World!'> // '!dlroW olleH'\nSt.Slice<'hello-world', -5> // 'world'\nSt.Split<'hello-world', '-'> // ['hello', 'world']\nSt.Trim<' hello world '> // 'hello world'\nSt.StartsWith<'abc', 'a'> // true\nSt.TrimEnd<' hello world '> // ' hello world'\nSt.TrimStart<' hello world '> // 'hello world '\nSt.Truncate<'hello world', 9, '[...]'> // 'hello[...]\nSt.Words<'hello-world'> // ['hello', 'world']\n```\n\n### Casing type utilities\n\n#### Core\n\n```ts\nSt.CamelCase<'hello-world'> // 'helloWorld'\nSt.ConstantCase<'helloWorld'> // 'HELLO_WORLD'\nSt.DelimiterCase<'hello world', '.'> // 'hello.world'\nSt.KebabCase<'helloWorld'> // 'hello-world'\nSt.PascalCase<'hello-world'> // 'HelloWorld'\nSt.SnakeCase<'helloWorld'> // 'hello_world'\nSt.TitleCase<'helloWorld'> // 'Hello World'\n```\n\n##### Missing types\n\n_Note that we do not include `UpperCase` and `LowerCase` types. These would be too close to the existing TS types `Uppercase` and `Lowercase`._\n\nOne could create either by doing like so:\n\n```ts\ntype LowerCase<T extends string> = Lowercase<DelimiterCase<T, ' '>>\ntype UpperCase<T extends string> = Uppercase<DelimiterCase<T, ' '>>\n// or\ntype LowerCase<T extends string> = ReturnType<typeof lowerCase<T>>\ntype UpperCase<T extends string> = ReturnType<typeof upperCase<T>>\n```\n\n#### Shallow object key transformation\n\n```ts\nSt.CamelKeys<{\n  'hello-world': { 'foo-bar': 'baz' }\n}> // { helloWorld: { 'foo-bar': 'baz' } }\nSt.ConstantKeys<{\n  helloWorld: { fooBar: 'baz' }\n}> // { 'HELLO_WORLD': { fooBar: 'baz' } }\nSt.DelimiterKeys<{ 'hello-world': { 'foo-bar': 'baz' } }, '.'>\n// { 'hello.world': { 'foo-bar': 'baz' } }\nSt.KebabKeys<{\n  helloWorld: { fooBar: 'baz' }\n}> // { 'hello-world': { fooBar: 'baz' } }\nSt.PascalKeys<{\n  'hello-world': { 'foo-bar': 'baz' }\n}> // { HelloWorld: { 'foo-bar': 'baz' } }\nSt.SnakeKeys<{\n  helloWorld: { fooBar: 'baz' }\n}> // { 'hello_world': { fooBar: 'baz' } }\n```\n\n#### Deep object key transformation\n\n```ts\nSt.DeepCamelKeys<{\n  'hello-world': { 'foo-bar': 'baz' }\n}> // { helloWorld: { fooBar: 'baz' } }\nSt.DeepConstantKeys<{\n  helloWorld: { fooBar: 'baz' }\n}> // { 'HELLO_WORLD': { 'FOO_BAR': 'baz' } }\nSt.DeepDelimiterKeys<\n  {\n    'hello-world': { 'foo-bar': 'baz' }\n  },\n  '.'\n> // { 'hello.world': { 'foo.bar': 'baz' } }\nSt.DeepKebabKeys<{\n  helloWorld: { fooBar: 'baz' }\n}> // { 'hello-world': { 'foo-bar': 'baz' } }\nSt.DeepPascalKeys<{\n  'hello-world': { 'foo-bar': 'baz' }\n}> // { HelloWorld: { FooBar: 'baz' } }\nSt.DeepSnakeKeys<{\n  helloWorld: { fooBar: 'baz' }\n}> // { 'hello_world': { 'foo_bar': 'baz' } }\n```\n\n### Other exported type utilities\n\n```ts\nSt.IsDigit<'a'> // false\nSt.IsDigit<'1'> // true\nSt.IsLetter<'a'> // true\nSt.IsLetter<'1'> // false\nSt.IsLower<'a'> // true\nSt.IsLower<'A'> // false\nSt.IsUpper<'a'> // false\nSt.IsUpper<'A'> // true\nSt.IsSeparator<' '> // true\nSt.IsSeparator<'-'> // true\nSt.IsSeparator<'a'> // false\nSt.IsSpecial<'a'> // false\nSt.IsSpecial<'!'> // true\nSt.IsSpecial<' '> // false\n```\n\n## Runtime-only utilities\n\n### deepTransformKeys\n\nThis function recursively converts the keys of an object to a custom format, but only at runtime level.\n\n```ts\nimport { deepTransformKeys, toUpperCase } from 'string-ts'\n\nconst data = { helloWorld: 'baz' } as const\n\ntype MyType<T> = { [K in keyof T as Uppercase<K>]: T[K] }\nconst result = deepTransformKeys(data, toUpperCase) as MyType<typeof data>\n//    ^ { 'HELLOWORLD': 'baz' }\n```\n\n## 🎙️ Interview\n\nFor a deeper dive into the code, reasoning, and how this library came to be, check out this interview with the author of StringTs on the Michigan TypeScript Meetup.\n\n[![StringTs on Michigan TS](https://img.youtube.com/vi/dOXpkAmmahw/0.jpg)](https://www.youtube.com/watch?v=dOXpkAmmahw)\n\n## 🐝 Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/gustavoguichard\"><img src=\"https://avatars.githubusercontent.com/u/566971?v=4?s=100\" width=\"100px;\" alt=\"Guga Guichard\"/><br /><sub><b>Guga Guichard</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=gustavoguichard\" title=\"Code\">💻</a> <a href=\"#projectManagement-gustavoguichard\" title=\"Project Management\">📆</a> <a href=\"#promotion-gustavoguichard\" title=\"Promotion\">📣</a> <a href=\"#maintenance-gustavoguichard\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/gustavoguichard/string-ts/commits?author=gustavoguichard\" title=\"Documentation\">📖</a> <a href=\"https://github.com/gustavoguichard/string-ts/issues?q=author%3Agustavoguichard\" title=\"Bug reports\">🐛</a> <a href=\"#infra-gustavoguichard\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#question-gustavoguichard\" title=\"Answering Questions\">💬</a> <a href=\"#research-gustavoguichard\" title=\"Research\">🔬</a> <a href=\"https://github.com/gustavoguichard/string-ts/pulls?q=is%3Apr+reviewed-by%3Agustavoguichard\" title=\"Reviewed Pull Requests\">👀</a> <a href=\"#ideas-gustavoguichard\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#example-gustavoguichard\" title=\"Examples\">💡</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/jly36963\"><img src=\"https://avatars.githubusercontent.com/u/33426811?v=4?s=100\" width=\"100px;\" alt=\"Landon Yarrington\"/><br /><sub><b>Landon Yarrington</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=jly36963\" title=\"Code\">💻</a> <a href=\"#maintenance-jly36963\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/gustavoguichard/string-ts/commits?author=jly36963\" title=\"Documentation\">📖</a> <a href=\"https://github.com/gustavoguichard/string-ts/pulls?q=is%3Apr+reviewed-by%3Ajly36963\" title=\"Reviewed Pull Requests\">👀</a> <a href=\"#ideas-jly36963\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#example-jly36963\" title=\"Examples\">💡</a> <a href=\"#question-jly36963\" title=\"Answering Questions\">💬</a> <a href=\"https://github.com/gustavoguichard/string-ts/issues?q=author%3Ajly36963\" title=\"Bug reports\">🐛</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/p9f\"><img src=\"https://avatars.githubusercontent.com/u/20539361?v=4?s=100\" width=\"100px;\" alt=\"Guillaume\"/><br /><sub><b>Guillaume</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=p9f\" title=\"Code\">💻</a> <a href=\"#maintenance-p9f\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/gustavoguichard/string-ts/commits?author=p9f\" title=\"Documentation\">📖</a> <a href=\"https://github.com/gustavoguichard/string-ts/issues?q=author%3Ap9f\" title=\"Bug reports\">🐛</a> <a href=\"#infra-p9f\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#question-p9f\" title=\"Answering Questions\">💬</a> <a href=\"#ideas-p9f\" title=\"Ideas, Planning, & Feedback\">🤔</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://totaltypescript.com\"><img src=\"https://avatars.githubusercontent.com/u/28293365?v=4?s=100\" width=\"100px;\" alt=\"Matt Pocock\"/><br /><sub><b>Matt Pocock</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=mattpocock\" title=\"Documentation\">📖</a> <a href=\"https://github.com/gustavoguichard/string-ts/commits?author=mattpocock\" title=\"Code\">💻</a> <a href=\"#promotion-mattpocock\" title=\"Promotion\">📣</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://luca.md\"><img src=\"https://avatars.githubusercontent.com/u/1881266?v=4?s=100\" width=\"100px;\" alt=\"Andrew Luca\"/><br /><sub><b>Andrew Luca</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=iamandrewluca\" title=\"Documentation\">📖</a> <a href=\"#promotion-iamandrewluca\" title=\"Promotion\">📣</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/mjuksel\"><img src=\"https://avatars.githubusercontent.com/u/10691584?v=4?s=100\" width=\"100px;\" alt=\"Mjuksel\"/><br /><sub><b>Mjuksel</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=mjuksel\" title=\"Code\">💻</a> <a href=\"#ideas-mjuksel\" title=\"Ideas, Planning, & Feedback\">🤔</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://huguesverlin.fr\"><img src=\"https://avatars.githubusercontent.com/u/9151470?v=4?s=100\" width=\"100px;\" alt=\"hverlin\"/><br /><sub><b>hverlin</b></sub></a><br /><a href=\"https://github.com/gustavoguichard/string-ts/commits?author=hverlin\" title=\"Code\">💻</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\nStringTs logo by [NUMI](https://github.com/numi-hq/open-design):\n\n[<img src=\"https://raw.githubusercontent.com/numi-hq/open-design/main/assets/numi-lockup.png\" alt=\"NUMI Logo\" style=\"width: 200px;\"/>](https://numi.tech/?ref=string-ts)\n\n## 🫶 Acknowledgements\n\nThis library got a lot of inspiration from libraries such as [lodash](https://github.com/lodash/lodash), [ts-reset](https://github.com/total-typescript/ts-reset), [type-fest](https://github.com/sindresorhus/type-fest), [HOTScript](https://github.com/gvergnaud/hotscript), and many others.\n","readmeFilename":"README.md"}