{"_id":"@bjnstnkvc/str","_rev":"42-e215b0d5e0c7158186acaf2707dd4fd1","name":"@bjnstnkvc/str","dist-tags":{"latest":"2.1.9"},"versions":{"1.0.7":{"name":"@bjnstnkvc/str","version":"1.0.7","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.0.7","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"f4516279b4342d7d5e23a4743cc2373c37e14956","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.0.7.tgz","fileCount":5,"integrity":"sha512-yXLY6p0WJEwVg7sVHNHXNOdk7MuOX36IcvwtHQEyg/xMMuRYPL1SM8vGEy5fohiANAA9CZytoliq5JSu/I9q2g==","signatures":[{"sig":"MEYCIQDFSKh43MfGWnlKUebrYragM9ZZYqUGUpfgq11SdNo5iAIhAPMA0+AiF9iBBY/KAs6ndNIZjDIMTX1D87lXl8T5Zn7q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85182},"main":"./lib/Str.js","type":"module","gitHead":"c3717a87562f48fcba5cdd6294b46024264aff1a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.0.7_1685234403992_0.13840278448405607","host":"s3://npm-registry-packages"}},"1.0.8":{"name":"@bjnstnkvc/str","version":"1.0.8","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.0.8","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"612ac6412c86148d8c7ceab628a09c4f82b7b4b5","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.0.8.tgz","fileCount":5,"integrity":"sha512-rXx3/2wg3uUfAlc1J84kEngG9cFSppXsE/ttGw6jTxLY8hHS8UDeCU4zTHXlaZnVDTW8NlJ6bYBqU6mauYbNYQ==","signatures":[{"sig":"MEUCIG7w2D8INvQw/y4cxsJ4emIXMMmQSfH+uK71Jv4ro4p9AiEAzoKGAcs+Zhg7lfIMw4fYxnt1Ba7k5ZVAZ24Dd0gc6Mw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":85182},"main":"./lib/Str.js","type":"module","gitHead":"f8676d212500e5e23529b15e6c1a31dbcaf23612","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.0.8_1685234533798_0.6511616350590719","host":"s3://npm-registry-packages"}},"1.0.9":{"name":"@bjnstnkvc/str","version":"1.0.9","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.0.9","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"a0fba315630cf1845c913f9479551ab87a9e91d1","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.0.9.tgz","fileCount":5,"integrity":"sha512-T1u+EzHZ2+8t3AFEvdae03PxOeOtRjcTjOc2hGg3b2ib89F6mmhx/0Y8UFURtme2Ba849n7D+Dcp40WTv5TYuQ==","signatures":[{"sig":"MEYCIQC4zpxLc1/Dt/A4np7PW0L32T7TiGhaljjcFjuYwv+RgQIhAOnjmQ5AgnVKhbwfb3lVaI1JdQvTYl7naTh71UbJqpuz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":86833},"main":"./lib/Str.js","type":"module","gitHead":"a6b4ec896893b24532dee457d73919405ba3b6da","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.0.9_1685272354760_0.17993901234209453","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@bjnstnkvc/str","version":"1.1.0","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.0","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"671d3af17be516b8233368fc32408b864a328bdc","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.0.tgz","fileCount":5,"integrity":"sha512-IdhTY/gwvq205CGyDtsEnJtsfaa9fsMUOiyJoyWXFT7jLrsCJCIKDMuk3D2U3SLxBnyHde5sOdaIQf9FM6EqWg==","signatures":[{"sig":"MEQCIG5Nt/cnTLC5We2HFTiOui2CbtUaB4/dhctby/zXuKEBAiB8IGYGrpYVe12Ugl5R2mx2tdl5jJsl9xl7lfIdSp22zw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90601},"main":"./lib/Str.js","type":"module","gitHead":"91d0810b97fac1aff4911d48666d620713903f41","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.0_1685286784665_0.22379646196192104","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@bjnstnkvc/str","version":"1.1.1","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.1","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"daaa8db3d32a11379a13b56f09a03454f7c92c3e","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.1.tgz","fileCount":5,"integrity":"sha512-4AiNybw/hbuGtcMUgU3IEC0mg0toLdzNEM0v2CvADiBZswNTHiOT0dx/d/G1T9mH7bwmoz8ePX/diuutd0bfhQ==","signatures":[{"sig":"MEYCIQDSv9diqTM9RcrL3sEL7tTq5SlrogW/B7+jlb7TTGZmZAIhANM4LOIxW78nlMX9Fzfjht7vfe/jFlNNnK3NK0oj98zu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90704},"main":"./lib/Str.js","type":"module","gitHead":"f0cf24eacefb4cd6a94745d8bda72882d7988f1f","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.1_1685287382292_0.5581354535281375","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@bjnstnkvc/str","version":"1.1.2","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.2","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"fc9c81f1d88e0b8e81b38e2d20e3f21eb6da49e0","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.2.tgz","fileCount":5,"integrity":"sha512-9Iryrc94JT7wVKo3UiM2r5GCgyBOSo75lmgCZ8K5Y0QX7ainevO/Ch+zIP9K3S5gYTtfu+ST3cS1z2be1FPKyg==","signatures":[{"sig":"MEUCIE1fKSPq1Br080RqyEa+dw1Wtq2icuW0mnhHbrjaWgCjAiEAxXTgN1u1/Abf8dXOkOlYxGW/oINkIz+8WRUYEq1Uedo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90704},"main":"./lib/Str.js","type":"module","gitHead":"a19a911869f67c0d9f759ce8c65b1d386e7a64be","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.2_1685289429116_0.6697016785829388","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@bjnstnkvc/str","version":"1.1.3","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.3","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"d5c56ef7076ab966332e4cafc430bb12570d4366","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.3.tgz","fileCount":5,"integrity":"sha512-39xd2BU3OOZsaXY3cQixJeo8OuMuwRum1jEJ0hhEytsxyK1tnqDs0ugCuAFgGxeScVaXwm2Ejh4xrc2jcKw6jw==","signatures":[{"sig":"MEUCIAslkWZMbfAmbjqQpQrO2X1v7FogfYDSu4K9geVgI3YsAiEAvIoJcNa4lmdFLa9TxbYb1ymho1CSvpelUv1XKVFF9+o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129190},"main":"./lib/Str.js","type":"module","gitHead":"fec36e26c87d1562fb480b440b589bb38871a40a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.3_1685290564734_0.9811908826507445","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"@bjnstnkvc/str","version":"1.1.4","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.4","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"628864189fbe38da064893896c8a571f36b133ea","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.4.tgz","fileCount":5,"integrity":"sha512-J91bZlO95EInNjLxnTJVpF5rrSvojp85DKcHNmSIXXvEfV2b90tpgKHXWe50S9A4ruz1FJkHNdCc9lKHZM9hrQ==","signatures":[{"sig":"MEQCIBy26hO4A+4Qn55IjvQqNB0VYzL+FmPdpaTMyT1uZyDoAiA3NF6jTjevLZnYv8CXq650jlkfME/jPNEhCrFeRAiq6A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126020},"main":"./lib/Str.js","type":"module","gitHead":"13ece0f86ade6c415c91c5df740121d1ecf53188","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.4_1685300338975_0.5369959625721572","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"@bjnstnkvc/str","version":"1.1.5","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.5","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"94c29148d3a3bb23a8c450d9c02ce4c831661af1","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.5.tgz","fileCount":5,"integrity":"sha512-Fm9R2FqQZb/lq5oUSZiChvsvER2zFBA23N4Z0E9Qcd6XxwMlJeXTt8uMbbIOTCc7uc+tPQahCj5TIPMfJQX1cw==","signatures":[{"sig":"MEYCIQDEj8G7zyKKTkbg8QanW7RbaUXoPJfKau9ZwLNLvhQ3lwIhAKjtcBeThnfOIMEhUvTpii2N+Ecl+6983vZY5okLyi+4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126018},"main":"./lib/Str.js","type":"module","gitHead":"e25b82aabab98313cdb4db62b45b4be435dd93b6","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.5_1685300996905_0.15065919993869947","host":"s3://npm-registry-packages"}},"1.1.7":{"name":"@bjnstnkvc/str","version":"1.1.7","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.7","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"05197e4147782418f089cc8c32bf81ba918fa7e5","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.7.tgz","fileCount":5,"integrity":"sha512-5WHCTc1H7IYfrg4uEFoIVEhi/ACI17Ks7iJ1wgwIfu2WpU4wASvhyHe+00hX14gR35d0SJjkI8VPr2HkX2ocLg==","signatures":[{"sig":"MEUCIAOOjPw3880tO599ecVoIYkqo4+tR5xmoOKpLxSHqxR0AiEA4/iS496QobjGmTZfgUCo875Uv54TqkvU7Sda1/D2lxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126102},"main":"./lib/Str.js","type":"module","gitHead":"6aecccb1ee4202d9770f4c447faa5a0ed576db50","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.7_1685301675168_0.9537192803487775","host":"s3://npm-registry-packages"}},"1.1.8":{"name":"@bjnstnkvc/str","version":"1.1.8","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.1.8","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"1ba4b9c791f016e611b564489aaac947eadcf9da","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.1.8.tgz","fileCount":6,"integrity":"sha512-AOx5474Q78BTplG2uMLLoW4wSDm1CH2khYaqXXuUk53Ky7W9Fe+7nm+wgos3Yt0phfKY0eRtrAUcVB5AVUAyhA==","signatures":[{"sig":"MEYCIQDRBOCSrp/As7P/VeqCTywgDT/9rR/Pj5aoMmR8bEIF8AIhAIXT99TfvWbXftpmMhY9tc8mH0+RpjCI5DzSyHahLTh4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128104},"main":"./lib/Str.js","type":"module","gitHead":"f023fd1306244bdcb3f65fb58876238b23e1a77d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.1.8_1685310102980_0.7291958520166901","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@bjnstnkvc/str","version":"1.2.0","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@1.2.0","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"15b55ed6523ba045c3fe4978932e7c31a546d7b7","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-1.2.0.tgz","fileCount":6,"integrity":"sha512-P/ojIUR8oHGFPdbn+RvKB/HlTLU/PlY08LOrsQV8zMBYMevR6vke3+43SJqsnmchtzYVhu7wje7Ve07opjIJSA==","signatures":[{"sig":"MEUCIQDN4J6jflnlH9aWsmVETBN8KuIN9dk4L158mUdKEzVCVwIgWAv7m35/atrj94eTGCotAO+EiA8lByibxUexoFJhPNc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142650},"main":"./lib/Str.js","gitHead":"fce8c229a613e9c2a209126c53b86cf35b044d30","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"9.6.6","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"16.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/str_1.2.0_1685491130284_0.7006176257491616","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@bjnstnkvc/str","version":"2.0.0","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.0","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"13716a285ef9f41897b747187a9e7e4047577265","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.0.tgz","fileCount":10,"integrity":"sha512-kKseeoeDttsUVXVxt+uMmRRRJg99ThYAzDWsBlno5TfyGZWjSVQQf7D8/+cw91mQFM+bNt9qYXPG10MRGB7Zxg==","signatures":[{"sig":"MEYCIQCW7Mtg2QVN5mvxIV+SFedDqwaK07aorz8i31npUY3J7gIhAOr8aim/UT5aoiJVkhLhrqJ7xF47s3TIT3M52dVzONZQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":395896},"main":"lib/main.js","source":"src/main.ts","gitHead":"34ea163cc251a305f904999414c33d1cccd376f9","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.0_1708821857452_0.1795501278006122","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@bjnstnkvc/str","version":"2.0.1","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.1","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"3d69d92b5197ec4920a9413233d5b058e17dbb17","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.1.tgz","fileCount":10,"integrity":"sha512-2D+AvorntBpv9Kc73wd9rcvz/DUNpgrFOE4nRYuK1aYdCHTRAhEew+7Wzklqz+mdermCUOX5j8gC5W1xm5uASw==","signatures":[{"sig":"MEUCIQCfcvppeLKFY3E/XIL0AFVZXCEIBMrbDHffb2+BYUMN5AIgeIcMqB1CaR1giqhzDpZ8UAUJY/CWkNiIqXRMnAulyjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":420331},"main":"lib/main.js","source":"src/main.ts","gitHead":"47a2e8c1760e3373d1b241eb7645155634df1e73","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.1_1708888737584_0.5267945209051204","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@bjnstnkvc/str","version":"2.0.2","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.2","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"2bad6d46e613fd94a53703bec9aa1a4bd5be493c","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.2.tgz","fileCount":10,"integrity":"sha512-xX1CjnGd5KhtjWj/+ZY0sjtgS5mz8Mxy7dpKRq0Z8ux0s4ZRrr3mYQQb0dkX9Fl9NgyQcdsss8FRBf4BCsABPQ==","signatures":[{"sig":"MEYCIQDM9Uqhxl1P44toYPva0fMBFgWV7BQ8Rz3aUv/lYj6tdQIhAIeffpyZWXyXbTHU5yqR73a/iMJCRgCWgIiCfzBl2jE2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":418243},"main":"lib/main.js","source":"src/main.ts","gitHead":"0dcd1f32da6bbc68b19d58a845e885031d8644de","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.2_1709127280615_0.38233136564081716","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"@bjnstnkvc/str","version":"2.0.3","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.3","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"06484b99dabb3374aed477c0b1ed8f37023c48df","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.3.tgz","fileCount":10,"integrity":"sha512-eJyNN6Syy9HZ4Q4Ls6++nKoxZQ1WRq9L1ohgABPWzRKh1045c63EkFrltLPG7lkdT3lN/fbAI4qa8SEh29UoRw==","signatures":[{"sig":"MEUCIQCUOs/IU0c01ribV6uKt5kBVtsZv+MLB8SsjChdg319IQIgFLTc2u7PL1dtCgpbguLpFiXtlctVV6LPr739uGGW0do=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":417886},"main":"lib/main.js","source":"src/main.ts","gitHead":"0970cfbe4d3d4c70b03834ff8a86bd9f0d487980","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.3_1709835904273_0.2887089574714974","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"@bjnstnkvc/str","version":"2.0.4","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.4","homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"57ed5239262de52d8b0521f73677ee087246f1f9","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.4.tgz","fileCount":10,"integrity":"sha512-eaQT/Sn5zwQxwlz0R5ipqtCPitWvKqIC9phxKMV+/ZRekOWnn63gof92vbFLTWuW7LdXqfJ5gRIuWRaAewDnoQ==","signatures":[{"sig":"MEUCIQCtUx7cgwgxAeFLwL7YGg9gotObiMOCZlhzdLPvMD0MDgIga1AmHr9xUKROPnAto+pIHmuJXIUOLF2IQDLHJt7lEBQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":433235},"main":"lib/main.js","source":"src/main.ts","gitHead":"8fde48e74d43ac85ae1bb0c21519180979400311","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.4_1719590119197_0.13561673496427473","host":"s3://npm-registry-packages"}},"2.0.5":{"name":"@bjnstnkvc/str","version":"2.0.5","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.5","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"9c1e37b5e15a71289ad82eb43d0d40a0d322fc62","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.5.tgz","fileCount":10,"integrity":"sha512-EMjzgtUTh7ogcdZmpwmFLrr8Eu6GJgSBS72qlGrmgWewL0sN+iHIm0pY/9Xw7LwWgqSXUcgPOG+y5iUZ1p+I8w==","signatures":[{"sig":"MEUCIDLR6MBsvKDelm26RktxuCNrOmVO6VUQHMyZswCulggxAiEAhnyavZm4s8POnP+LFlyxVsNO7EtsohEZKApIU2xPCBM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":439697},"main":"lib/main.js","source":"src/main.ts","gitHead":"1951bc51fa04496ebbcfbfdc35af5dc69bfffb1d","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.5_1722460462216_0.6649306654853984","host":"s3://npm-registry-packages"}},"2.0.6":{"name":"@bjnstnkvc/str","version":"2.0.6","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.6","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"1320960b40e1a0ed462820abf24a7829606ba5c9","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.6.tgz","fileCount":9,"integrity":"sha512-CtC5NoJcJwE84m3mOUY7h/SifGpwETdwc0yDHXp1tqxkRVY03AsYyR86n9a85r1CXGuGjj9Z9AXA0LHEi60s4A==","signatures":[{"sig":"MEQCIBgCXL4YJXPn1lvl5IkRGN8CAgqDn4f2WrK286g0gzzhAiA3dQ8qRdH8FB/MtmbxKL9Y5+UizSKClMDGQdaACn902Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":462454},"main":"lib/main.js","source":"src/main.ts","gitHead":"b66d8dacfd1456b734cb8976981f9b09c00cad5b","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"21.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.6_1722957111919_0.9034586696044171","host":"s3://npm-registry-packages"}},"2.0.7":{"name":"@bjnstnkvc/str","version":"2.0.7","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.7","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"44b270118f21297f8b31e8e656ab6a00efa71a26","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.7.tgz","fileCount":13,"integrity":"sha512-8nFvGfXcx+PULOCJATvln9B1NvOgPc6UO5x1Ci8gm7drf2Tila7SpWmLKgvZr/uiHWugFPksGzykmD3bZbttZg==","signatures":[{"sig":"MEUCIDFd8jvdlM5KY9CbOHC7QrtsJ1urSW5YgfIAO/ozBJhCAiEAxrKdpd3BMzS6h+hRDWKmKB0utW70MxWwLEkLP/TNp50=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":733373},"main":"lib/main.js","source":"src/main.ts","gitHead":"6c65187d9f0c651a41fa5f1507137888e75f88ad","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.9.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.7_1730935091324_0.6987643222777296","host":"s3://npm-registry-packages"}},"2.0.8":{"name":"@bjnstnkvc/str","version":"2.0.8","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.8","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"30d513c9d651a49448f6ac6ece5238d4bf95e005","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.8.tgz","fileCount":9,"integrity":"sha512-oTLVCS0+vCZalSchnkRqWtnZLOfldbrdqiZWhmsrK5YDMU1s1MZokdEdphgOsVivitWVEErEsJyfO3YALIsFnQ==","signatures":[{"sig":"MEUCIQCt1reqEp5Q7KnYnw7U/QqI/g1Ui2Tt0jthc6w6mDgeIgIgcPkhinH/63kOrNjJ3bI2s3caJJ41iVP4HpIP9M6GF+s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":469192},"main":"lib/main.js","source":"src/main.ts","gitHead":"488d5ea0f74038bbbe7ca698827850d69f283e89","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"10.9.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.8_1736365245764_0.9234858125534195","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"@bjnstnkvc/str","version":"2.0.9","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.0.9","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"5859b9bed499f00d663a07602f19c6abe566d5ed","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.0.9.tgz","fileCount":10,"integrity":"sha512-yug73aSJcO+KApKyG7jQ/5VEPi/pyVXp2Li36ny+9xTAvFcmnFd3vHhvmGzr/wO+FLoTMJFK4+b5t+Qzv0Cuqw==","signatures":[{"sig":"MEQCIE6BNmofnYtThCBtK4BfYnp3E8vAsC29Iw2t5k5MvvWxAiB0sNJsT40cZGz/45uZdjcbQdXODjjjl6/dH2vvZft7fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682635},"main":"lib/main.js","source":"src/main.ts","gitHead":"bc2989928278b84c2f047fb2890413abad975917","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.3.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.0.9_1744575565802_0.4700285221726386","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@bjnstnkvc/str","version":"2.1.0","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.0","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"12f8c8292bf542410ab5b8f72aeed144fdbd15be","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.0.tgz","fileCount":9,"integrity":"sha512-5RDHW55tRy7hCqGXgGwFMgIvTxkY7Jb3fxY+H/c6ooOAvUXX9wwuAWtiR0YLiFz7tw1qSpOkmugMt8VBM5ywgg==","signatures":[{"sig":"MEYCIQCcsy8r+oLSGQ2GWZCz/EDdViHqPYMU4zfK3cz/RwVDtQIhAJwbM7WeqFItU4+yfLZh+2AMZH2JC0txvwikor0wR4ro","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558005},"main":"lib/main.js","source":"src/main.ts","gitHead":"9303222223b13196b1be5737366b79b42ad41f2a","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.3.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.0_1744646318200_0.39478778808214066","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@bjnstnkvc/str","version":"2.1.2","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.2","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"35ed69979ec3137173aba120557813e38e0aeb3e","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.2.tgz","fileCount":9,"integrity":"sha512-hwnlDKA5A8jyFiYi66i31SqxVBEu2bOSuX3ZYSyBPAFMxvTjRnwYLVYs+0eBV07idZ3yX3BHPGtAgxCN3eW+Hg==","signatures":[{"sig":"MEQCIDqFR3FoKYJkEPPJdM3Xxdeb9YJ2K+K888vTwocztZPYAiBh+cJEqkdjNuTxvdWSHAkq7O6MOcfW9Bn5FGOJJHHGfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":555008},"main":"lib/main.js","source":"src/main.ts","gitHead":"a72f97ff81b32b893b7bed04b67ec68f5af9dc9e","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.3.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.2_1744900335683_0.5783343366310156","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@bjnstnkvc/str","version":"2.1.3","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.3","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str-helper#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str-helper/issues"},"dist":{"shasum":"1c9f8386be77f8e928d1af3ae7be29aa599c0d6d","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.3.tgz","fileCount":10,"integrity":"sha512-50K6SQXslw2hEPkrQByL+sdxpRpH3yZvgbhL5NJlgL0QIsKVtX/EzqtCpWryCqq6JTYEPfH6kaeD4HIslk5uQw==","signatures":[{"sig":"MEYCIQCHnkU/xRJQ2Bg5rdUx43nKbV1t3aKBcbd/T93Rf+IongIhAOm05JyC4AFkni19F4RyJ8BAu1tkOaaqIzvwwbPu34jU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568100},"main":"lib/main.js","source":"src/main.ts","gitHead":"afc704c3c7bf0136e07d15a8baa6d39dd4bf27ab","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.3.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.3_1745600645215_0.21775236818047272","host":"s3://npm-registry-packages-npm-production"}},"2.1.4":{"name":"@bjnstnkvc/str","version":"2.1.4","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.4","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"dist":{"shasum":"0a1ded5754ce6866d493f359b90792f1a26b719b","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.4.tgz","fileCount":11,"integrity":"sha512-nfHCZoXd5n0ZQNIjXO9GYMBD24rcZB3n/eMOjK6CEEYzbAOMY39Q72L78jw7+0K6z06lzij2XC9WR6nuQgRwfg==","signatures":[{"sig":"MEQCIFtDUNfQcKOEu2cmorEm5JNDbTSbx6DU9nTTo8WwX5nuAiBiLOmRQRyVJl72ZdhxMzj5jq2NH8z/CYZJgzAdxR9R5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778107},"main":"lib/main.js","source":"src/main.ts","gitHead":"496d3ee3e2c7e2d0f36e5053a9702ff4f3fcb197","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.4.2","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.4_1754598420014_0.4141127258867434","host":"s3://npm-registry-packages-npm-production"}},"2.1.5":{"name":"@bjnstnkvc/str","version":"2.1.5","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.5","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"dist":{"shasum":"219c05c44a5edd3908b292a61245e8e28ead65b1","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.5.tgz","fileCount":10,"integrity":"sha512-WgsLN4Q0NDxT56wtWHl245sL4bLKm/NYTjk7VLLHkaKbBEzGj3fi0Rmod5ciBZAAppMXrdIT9QfBMKwtPXI3Cg==","signatures":[{"sig":"MEUCIA+555uUMkYPG+1vKexFS388BXeUaBDpABdobJpB2sIaAiEAv+0Gn/I3y79v2wwt4ZM/IBW6MGZGj0HJkWCJGabscE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":603772},"main":"lib/main.js","source":"src/main.ts","gitHead":"ed9996a626c7d3a98e415af495927ae5e94c3b32","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.6.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.5_1758215136879_0.6078422877585266","host":"s3://npm-registry-packages-npm-production"}},"2.1.6":{"name":"@bjnstnkvc/str","version":"2.1.6","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.6","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"dist":{"shasum":"a0733850a6944af154cd934964d51ebfffb3b8e1","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.6.tgz","fileCount":10,"integrity":"sha512-nNrop+1GUqkYdY5nCofmPOXErGE6MTwqu+oaRv1A0lCJ/Srypnp2t7I/5GrdSrZqEB5/nKQiDqj5zDEq2cejpw==","signatures":[{"sig":"MEUCIQCxsZtmoVsRxmRIOkDOCXHwOMHcdceEtkGkQqlyvb/ORQIgTX2eR1U6sPwr3n3NUl275vdMSalfmw88oqxuhP86HG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":629587},"main":"lib/main.js","source":"src/main.ts","gitHead":"cf5743d86ceac548bbe311f3185aafb6ce8aa192","scripts":{"test":"jest --config jestconfig.json ./tests","build":"tsc","minify":"tsc && uglifyjs lib/main.js -c -m -o lib/main.min.js"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str-helper.git","type":"git"},"_npmVersion":"11.6.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.6_1758308684490_0.8174613945182336","host":"s3://npm-registry-packages-npm-production"}},"2.1.7":{"name":"@bjnstnkvc/str","version":"2.1.7","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.7","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"dist":{"shasum":"1eac1846c90b3db4fd744a1ee93ea3fa699caa7d","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.7.tgz","fileCount":14,"integrity":"sha512-cqAKRKTodaXvM5uRHmgRFjqMpP9YU9PN7rbRnl87c+39JikGhIxJFkuOKdy/BYGEaK4Ix07COF25XC5YyKxGMg==","signatures":[{"sig":"MEUCIG5Wxo7aGReEZ88UkiJZKHKwW3TAm+DOCirhKcvXvonbAiEAsCwjmalnLDi/uKkpomp2NiCLRax+OmjkXrvO/nGDHIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1399845},"main":"lib/main.js","type":"module","types":"src/main.ts","source":"src/main.ts","exports":{".":{"import":"./lib/main.esm.js","default":"./lib/main.umd.js","require":"./lib/main.umd.js"}},"gitHead":"cb3caaef486bce7342cfa62a1f2ba07b894bf69a","scripts":{"test":"jest --config jestconfig.json ./tests","build":"rollup -c"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str.git","type":"git"},"_npmVersion":"11.6.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rollup":"^4.52.0","terser":"^5.44.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@rollup/plugin-terser":"^0.4.4","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-typescript2":"^0.36.0","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.7_1758382735877_0.18275961747871627","host":"s3://npm-registry-packages-npm-production"}},"2.1.8":{"name":"@bjnstnkvc/str","version":"2.1.8","keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","_id":"@bjnstnkvc/str@2.1.8","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"homepage":"https://github.com/BJNSTNKVC/js-str#readme","bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"dist":{"shasum":"134e4fe37e89da96d411b968db85292adbc2bfeb","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.8.tgz","fileCount":14,"integrity":"sha512-X7pcohizHUmq6ubNNN1oqsx1EU92d8X7GmjmahGMGl0ywrm690mivS2B6oezdAUFRoJZzgqEOP8n1D8b9spLOg==","signatures":[{"sig":"MEYCIQDdNjlMZDiPQP541RRu4d/MQCDyEyB+2WYlOsxsRMxvUQIhAKIqfz/8V9Sr5W1G2ke1/atAIdCpEXvC3cuXwihKjr9P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1436960},"main":"lib/main.js","type":"module","types":"src/main.ts","source":"src/main.ts","exports":{".":{"import":"./lib/main.esm.js","default":"./lib/main.umd.js","require":"./lib/main.umd.js"}},"gitHead":"7fad8605a607dd21a0316d7d841b6aad5ccf9a8b","scripts":{"test":"jest --config jestconfig.json ./tests","build":"rollup -c"},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"repository":{"url":"git+https://github.com/BJNSTNKVC/js-str.git","type":"git"},"_npmVersion":"11.6.0","description":"JavaScript equivalent of Laravel Str helper.","directories":{"lib":"lib"},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rollup":"^4.52.0","terser":"^5.44.0","ts-jest":"^29.1.2","uglify-js":"^3.17.4","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@rollup/plugin-terser":"^0.4.4","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^28.0.6","rollup-plugin-typescript2":"^0.36.0","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/str_2.1.8_1761079473913_0.0000019117969651816225","host":"s3://npm-registry-packages-npm-production"}},"2.1.9":{"name":"@bjnstnkvc/str","version":"2.1.9","description":"JavaScript equivalent of Laravel Str helper.","type":"module","main":"lib/main.js","source":"src/main.ts","types":"src/main.ts","exports":{".":{"import":"./lib/main.esm.js","require":"./lib/main.umd.js","default":"./lib/main.umd.js"}},"directories":{"lib":"lib"},"scripts":{"test":"jest --config jestconfig.json ./tests","build":"rollup -c"},"repository":{"type":"git","url":"git+https://github.com/BJNSTNKVC/js-str.git"},"keywords":["js","string"],"author":{"name":"Bojan Stankovic"},"license":"MIT","bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"homepage":"https://github.com/BJNSTNKVC/js-str#readme","devDependencies":{"@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.1","@rollup/plugin-terser":"^0.4.4","@types/jest":"^29.5.12","@types/node":"^20.11.19","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","rollup":"^4.52.0","rollup-plugin-typescript2":"^0.36.0","terser":"^5.44.0","ts-jest":"^29.1.2","typescript":"^5.3.3","uglify-js":"^3.17.4"},"_id":"@bjnstnkvc/str@2.1.9","gitHead":"51a91e8f990a40571cd1891e19f0af415502785d","_nodeVersion":"20.17.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-tkwdPm4DtkMKLxlEqGKknaEIp26UO60ze3dBSZ13W40j3wgcNtbN9iNLPE9YHqWtaFo1MqcrzuUWXFXhH03SwA==","shasum":"382dde9474dc0762d6275814e146a3e0c3b8e81f","tarball":"https://registry.npmjs.org/@bjnstnkvc/str/-/str-2.1.9.tgz","fileCount":14,"unpackedSize":1444814,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDA4HrnNOkKB9VU0nEMWD5B1elikkliDCkiYE6y6IFkaAiAi3jdCFEjLU9ZcLqW2P/aOg2h+BwnxqTuAc6vzGgwzlQ=="}]},"_npmUser":{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"},"maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/str_2.1.9_1762204582860_0.18869756112934133"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-28T00:40:03.939Z","modified":"2025-11-03T21:16:23.365Z","1.0.0":"2023-05-27T01:21:45.912Z","1.0.1":"2023-05-27T12:07:17.415Z","1.0.2":"2023-05-28T00:19:13.611Z","1.0.3":"2023-05-28T00:22:36.623Z","1.0.4":"2023-05-28T00:34:25.632Z","1.0.5":"2023-05-28T00:36:38.882Z","1.0.6":"2023-05-28T00:38:08.449Z","1.0.7":"2023-05-28T00:40:04.285Z","1.0.8":"2023-05-28T00:42:13.984Z","1.0.9":"2023-05-28T11:12:34.949Z","1.1.0":"2023-05-28T15:13:04.942Z","1.1.1":"2023-05-28T15:23:02.490Z","1.1.2":"2023-05-28T15:57:09.316Z","1.1.3":"2023-05-28T16:16:04.969Z","1.1.4":"2023-05-28T18:58:59.186Z","1.1.5":"2023-05-28T19:09:57.130Z","1.1.7":"2023-05-28T19:21:15.418Z","1.1.8":"2023-05-28T21:41:43.231Z","1.2.0":"2023-05-30T23:58:50.479Z","2.0.0":"2024-02-25T00:44:17.627Z","2.0.1":"2024-02-25T19:18:57.783Z","2.0.2":"2024-02-28T13:34:40.840Z","2.0.3":"2024-03-07T18:25:04.457Z","2.0.4":"2024-06-28T15:55:19.437Z","2.0.5":"2024-07-31T21:14:22.440Z","2.0.6":"2024-08-06T15:11:52.125Z","2.0.7":"2024-11-06T23:18:11.574Z","2.0.8":"2025-01-08T19:40:45.968Z","2.0.9":"2025-04-13T20:19:25.973Z","2.1.0":"2025-04-14T15:58:38.385Z","2.1.1":"2025-04-16T17:30:54.619Z","2.1.2":"2025-04-17T14:32:15.855Z","2.1.3":"2025-04-25T17:04:05.408Z","2.1.4":"2025-08-07T20:27:00.287Z","2.1.5":"2025-09-18T17:05:37.075Z","2.1.6":"2025-09-19T19:04:44.689Z","2.1.7":"2025-09-20T15:38:56.189Z","2.1.8":"2025-10-21T20:44:34.110Z","2.1.9":"2025-11-03T21:16:23.148Z"},"bugs":{"url":"https://github.com/BJNSTNKVC/js-str/issues"},"author":{"name":"Bojan Stankovic"},"license":"MIT","homepage":"https://github.com/BJNSTNKVC/js-str#readme","keywords":["js","string"],"repository":{"type":"git","url":"git+https://github.com/BJNSTNKVC/js-str.git"},"description":"JavaScript equivalent of Laravel Str helper.","maintainers":[{"name":"bjnstnkvc","email":"dev.bojan.stankovic@gmail.com"}],"readme":"# Str\r\n\r\nJavaScript equivalent of [Laravel Str](https://laravel.com/docs/12.x/strings) helper.\r\n\r\n## Installation & setup\r\n\r\n### NPM\r\n\r\nYou can install the package via npm:\r\n\r\n```bash\r\nnpm install @bjnstnkvc/str\r\n```\r\n\r\nand then import it into your project\r\n\r\n```js\r\nimport { Str } from '@bjnstnkvc/str'\r\n```\r\n\r\n### CDN\r\n\r\nYou can install the package via jsDelivr CDN:\r\n\r\n```html\r\n<script src=\"https://cdn.jsdelivr.net/npm/@bjnstnkvc/str/lib/main.min.js\"></script>\r\n```\r\n\r\n## Usage\r\n\r\nOnce imported, you can use these functions which provide a fluent interface to interact with Strings.\r\n\r\n### Strings\r\n\r\n#### Str.after()\r\n\r\nThe `Str.after` method returns everything after the given value in a string. The entire string will be returned if the value does not exist within the string:\r\n\r\n```js\r\nStr.after('This is my name', 'This is');\r\n\r\n// ' my name'\r\n```\r\n\r\n#### Str.afterLast()\r\n\r\nThe `Str.afterLast` method returns everything after the last occurrence of the given value in a string.\r\nThe entire string will be returned if the value does not exist within the string:\r\n\r\n```js\r\nStr.afterLast('App\\\\Http\\\\Controllers\\\\Controller', '\\\\');\r\n\r\n// 'Controller'\r\n```\r\n\r\n#### Str.apa()\r\n\r\nThe `Str.apa` method converts the given string to title case following the [APA guidelines](https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case):\r\n\r\n```js\r\nStr.apa('Creating A Project');\r\n\r\n// 'Creating a Project'\r\n```\r\n\r\n#### Str.ascii()\r\n\r\nThe `Str.ascii` method will attempt to transliterate the string into an ASCII value:\r\n\r\n```js\r\nStr.ascii('û');\r\n\r\n// 'u'\r\n```\r\n\r\n#### Str.before()\r\n\r\nThe `Str.before` method returns everything before the given value in a string:\r\n\r\n```js\r\nStr.before('This is my name', 'my name');\r\n\r\n// 'This is '\r\n```\r\n\r\n#### Str.beforeLast()\r\n\r\nThe `Str.beforeLast` method returns everything before the last occurrence of the given value in a string:\r\n\r\n```js\r\nStr.beforeLast('This is my name', 'is');\r\n\r\n// 'This '\r\n```\r\n\r\n#### Str.between()\r\n\r\nThe `Str.between` method returns the portion of a string between two values:\r\n\r\n```js\r\nStr.between('This is my name', 'This', 'name');\r\n\r\n// ' is my '\r\n```\r\n\r\n#### Str.betweenFirst()\r\n\r\nThe `Str.betweenFirst` method returns the smallest possible portion of a string between two values:\r\n\r\n```js\r\nStr.betweenFirst('[a] bc [d]', '[', ']');\r\n\r\n// 'a'\r\n```\r\n\r\n#### Str.camel()\r\n\r\nThe `Str.camel` method converts the given string to `camelCase`:\r\n\r\n```js\r\nStr.camel('foo_bar');\r\n\r\n// 'fooBar'\r\n```\r\n\r\n#### Str.charAt()\r\n\r\nThe `Str.charAt` method returns the character at the specified index. If the index is out of bounds, false is returned:\r\n\r\n```js\r\nStr.charAt('This is my name.', 6);\r\n\r\n// 's'\r\n```\r\n\r\n#### Str.chopStart()\r\n\r\nThe `Str.chopStart` method removes the given string if it exists at the start of the subject:\r\n\r\n```js\r\nStr.chopStart('Hello, world!', 'Hello, ');\r\n\r\n// 'world!'\r\n```\r\n\r\nYou may also pass an array of strings to remove the first matching string found at the start of the subject:\r\n\r\n```js\r\nStr.chopStart('Hello, world!', ['Hi, ', 'Hello, ']);\r\n\r\n// 'world!'\r\n```\r\n\r\nIf multiple strings in the array are found at the start of the subject, only the first match will be removed:\r\n\r\n```js\r\nStr.chopStart('Hello, Hello, world!', ['Hello, ', 'Hello, ']);\r\n\r\n// 'Hello, world!'\r\n```\r\n\r\n#### Str.chopEnd()\r\n\r\nThe `Str.chopEnd` method removes the given string if it exists at the end of the subject:\r\n\r\n```js\r\nStr.chopEnd('Hello, world!', ', world!');\r\n\r\n// 'Hello'\r\n```\r\n\r\nYou may also pass an array of strings to remove the first matching string found at the end of the subject:\r\n\r\n```js\r\nStr.chopEnd('Hello, world!', ['planet!', ', world!']);\r\n\r\n// 'Hello'\r\n```\r\n\r\nIf multiple strings in the array are found at the end of the subject, only the first match will be removed:\r\n\r\n```js\r\nStr.chopEnd('Hello, world!world!', ['world!', 'world!']);\r\n\r\n// 'Hello, world!'\r\n```\r\n\r\n#### Str.contains()\r\n\r\nThe `Str.contains` method determines if the given string contains the given value. This method is case-sensitive:\r\n\r\n```js\r\nStr.contains('This is my name', 'my');\r\n\r\n// true\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string contains any of the values in the array:\r\n\r\n```js\r\nStr.contains('This is my name', ['my', 'foo']);\r\n\r\n// true\r\n```\r\n\r\nYou may disable case sensitivity by setting the `ignoreCase` argument to `true`:\r\n\r\n```js\r\nStr.contains('This is my name', 'MY', true);\r\n\r\n// true\r\n```\r\n\r\n#### Str.containsAll()\r\n\r\nThe `Str.containsAll` method determines if the given string contains all the values in a given array:\r\n\r\n```js\r\nStr.containsAll('This is my name', ['my', 'name']);\r\n\r\n// true\r\n```\r\nYou may disable case sensitivity by setting the `ignoreCase` argument to `true`:\r\n\r\n```js\r\nStr.containsAll('This is my name', ['MY', 'NAME'], true);\r\n\r\n// true\r\n```\r\n\r\n#### Str.doesntContain()\r\n\r\nThe `Str.doesntContain` method determines if the given string doesn't contain the given value. By default, this method is case-sensitive:\r\n\r\n```js\r\nStr.doesntContain('This is name', 'my');\r\n\r\n// true\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string doesn't contain any of the values in the array:\r\n\r\n```js\r\nStr.doesntContain('This is my name', ['my', 'foo']);\r\n\r\n// true\r\n```\r\n\r\nYou may disable case sensitivity by setting the `ignoreCase` argument to `true`:\r\n\r\n```js\r\nStr.doesntContain('This is my name', 'MY', true);\r\n\r\n// false\r\n```\r\n\r\n#### Str.convertCase()\r\n\r\nThe `Str.convertCase` method converts the case of a string according the mode of conversion (defaults to `MB_CASE_FOLD`). Modes of conversion are:\r\n\r\n##### MB_CASE_UPPER\r\n\r\nPerforms a full upper-case folding.\r\n\r\n```js\r\nStr.convertCase('hello', Mode.MB_CASE_UPPER);\r\n\r\n// HELLO\r\n```\r\n\r\n##### MB_CASE_LOWER\r\n\r\nPerforms a full lower-case folding.\r\n\r\n```js\r\nStr.convertCase('HELLO', Mode.MB_CASE_UPPER);\r\n\r\n// hello\r\n```\r\n\r\n##### MB_CASE_TITLE\r\n\r\nPerforms a full title-case conversion based on the Cased and CaseIgnorable derived Unicode properties.\r\n\r\n```js\r\nStr.convertCase('a nice title uses the correct case', Mode.MB_CASE_TITLE);\r\n\r\n// 'A Nice Title Uses The Correct Case'\r\n```\r\n\r\n##### MB_CASE_FOLD\r\n\r\nPerforms a full case fold conversion which removes case distinctions present in the string.\r\n\r\n```js\r\nStr.convertCase('HeLLo', Mode.MB_CASE_FOLD);\r\n\r\n// hello\r\n```\r\n\r\n#### Str.deduplicate()\r\n\r\nThe `Str.deduplicate` method replaces consecutive instances of a character with a single instance of that character in the given string. By default, the method deduplicates spaces:\r\n\r\n```js\r\nStr.deduplicate('The   Laravel   Framework');\r\n\r\n//  The Laravel Framework \r\n```\r\n\r\n```js\r\nStr.deduplicate('The---Laravel---Framework', '-');\r\n\r\n// The-Laravel-Framework\r\n```\r\n\r\nYou can also pass an array of characters to replace consecutive instances of:\r\n\r\n```js\r\nStr.deduplicate('Thee---Laravell---Frramework', ['-', 'e', 'l', 'r']);\r\n\r\n// The-Laravel-Frramework\r\n```\r\n\r\n#### Str.endsWith()\r\n\r\nThe `Str.endsWith` method determines if the given string ends with the given value:\r\n\r\n```js\r\nStr.endsWith('This is my name', 'name');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.endsWith('This is my name', 'names');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string ends with any of the values in the array:\r\n\r\n```js\r\nStr.endsWith('This is my name', ['name', 'foo']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.endsWith('This is my name', ['names', 'foo']);\r\n\r\n// false\r\n```\r\n\r\n#### Str.doesntEndWith()\r\n\r\nThe `Str.doesntEndWith` method determines if the given string doesn't end with a given substring:\r\n\r\n```js\r\nStr.doesntEndWith('This is my name', 'names');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.doesntEndWith('This is my name', 'name');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string doesn't end with any of the values in the array:\r\n\r\n```js\r\nStr.doesntEndWith('This is my name', ['names', 'foo']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.doesntEndWith('This is my name', ['name', 'foo']);\r\n\r\n// false\r\n```\r\n\r\n#### Str.excerpt()\r\n\r\nThe `Str.excerpt` method extracts an excerpt from a given string that matches the first instance of a phrase within that string:\r\n\r\n```js\r\nStr.excerpt('This is my name', 'my', { 'radius': 3 });\r\n\r\n// '...is my na...'\r\n```\r\n\r\nThe `radius` option, which defaults to 100, allows you to define the number of characters that should appear on each side of the truncated string.\r\nIn addition, you may use the omission option to define the string that will be prepended and appended to the truncated string:\r\n\r\n```js\r\nStr.excerpt('This is my name', 'name', { 'radius': 3, 'omission': '(...) ' });\r\n\r\n// '(...) my name'\r\n```\r\n\r\n#### Str.finish()\r\n\r\nThe `Str.finish` method adds a single instance of the given value to a string if it does not already end with that value:\r\n\r\n```js\r\nStr.finish('this/string', '/');\r\n\r\n// 'this/string/'\r\n```\r\n\r\n```js\r\nStr.finish('this/string/', '/');\r\n\r\n// 'this/string/'\r\n```\r\n\r\n#### Str.fromBase64()\r\n\r\nThe `Str.fromBase64` method converts the given string from Base64:\r\n\r\n```js\r\nStr.fromBase64('TGFyYXZlbA==');\r\n\r\n// 'Laravel'\r\n```\r\n\r\n#### Str.headline()\r\n\r\nThe `Str.headline` method will convert strings delimited by casing, hyphens, or underscores into a space delimited string with each word's first letter capitalized:\r\n\r\n```js\r\nStr.headline('steve_jobs');\r\n\r\n// 'Steve Jobs'\r\n```\r\n\r\n```js\r\nStr.headline('EmailNotificationSent');\r\n\r\n// 'Email Notification Sent'\r\n```\r\n\r\n#### Str.is()\r\n\r\nThe `Str.is` method determines if a given string matches a given pattern. Asterisks may be used as wildcard values:\r\n\r\n```js\r\nStr.is('foo*', 'foobar');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.is('baz*', 'foobar');\r\n\r\n// false\r\n```\r\n\r\nYou may disable case sensitivity by setting the ignoreCase argument to true:\r\n\r\n```js\r\nStr.is('*.jpg', 'photo.JPG', true);\r\n\r\n// true\r\n```\r\n\r\n#### Str.isAscii()\r\n\r\nThe `Str.isAscii` method determines if a given string is 7-bit ASCII:\r\n\r\n```js\r\nStr.isAscii('Taylor');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isAscii('ü');\r\n\r\n// false\r\n```\r\n\r\n#### Str.isJson()\r\n\r\nThe `Str.isJson` method determines if the given string is valid JSON:\r\n\r\n```js\r\nStr.isJson('[1,2,3]');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isJson('{\"first\": \"John\", \"last\": \"Doe\"}');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isJson('{first: \"John\", last: \"Doe\"}');\r\n\r\n// false\r\n```\r\n\r\n#### Str.isUrl()\r\n\r\nThe `Str.isUrl` method determines if the given string is a valid URL:\r\n\r\n```js\r\nStr.isUrl('http://example.com');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isUrl('laravel');\r\n\r\n// false\r\n```\r\n\r\n#### Str.isUlid()\r\n\r\nThe `Str.isUlid` method determines if the given string is a valid ULID:\r\n\r\n```js\r\nStr.isUlid('01gd6r360bp37zj17nxb55yv40');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isUlid('laravel');\r\n\r\n// false\r\n```\r\n\r\n#### Str.isUuid()\r\n\r\nThe `Str.isUuid` method determines if the given string is a valid UUID:\r\n\r\n```js\r\nStr.isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isUuid('laravel');\r\n\r\n// false\r\n```\r\n\r\n#### Str.kebab()\r\n\r\nThe `Str.kebab` method converts the given string to kebab-case:\r\n\r\n```js\r\nStr.kebab('fooBar');\r\n\r\n// 'foo-bar'\r\n```\r\n\r\n#### Str.lcfirst()\r\n\r\nThe `Str.lcfirst` method returns the given string with the first character lowercased:\r\n\r\n```js\r\nStr.lcfirst('Foo Bar');\r\n\r\n// 'foo Bar'\r\n```\r\n\r\n#### Str.length()\r\n\r\nThe `Str.length` method returns the length of the given string:\r\n\r\n```js\r\nStr.length('Laravel');\r\n\r\n// 7\r\n```\r\n\r\n#### Str.limit()\r\n\r\nThe `Str.limit` method truncates the given string to the specified length:\r\n\r\n```js\r\nStr.limit('The quick brown fox jumps over the lazy dog', 20);\r\n\r\n// 'The quick brown fox...'\r\n```\r\n\r\nYou may pass a third argument to the method to change the string that will be appended to the end of the truncated string:\r\n\r\n```js\r\nStr.limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');\r\n\r\n// 'The quick brown fox (...)'\r\n```\r\n\r\nYou may pass a boolean as fourth argument to the method to ensure the truncation does not cut off in the middle of a word:\r\n\r\n```js\r\nStr.limit('The quick brown fox jumps over the lazy dog', 18, '...', false);\r\n\r\n// 'The quick brown fo...'\r\n```\r\n\r\n```js\r\nStr.limit('The quick brown fox jumps over the lazy dog', 18, '...', true);\r\n\r\n// 'The quick brown...'\r\n```\r\n\r\n#### Str.lower()\r\n\r\nThe `Str.lower` method converts the given string to lowercase:\r\n\r\n```js\r\nStr.lower('LARAVEL');\r\n\r\n// 'laravel'\r\n```\r\n\r\n#### Str.mask()\r\n\r\nThe `Str.mask` method masks a portion of a string with a repeated character, and may be used to obfuscate segments of strings such as email addresses and phone numbers:\r\n\r\n```js\r\nStr.mask('taylor@example.com', '*', 3);\r\n\r\n// 'tay***************'\r\n```\r\n\r\nIf needed, you provide a negative number as the third argument to the mask method, which will instruct the method to begin masking at the given distance from the end of the string:\r\n\r\n```js\r\nStr.mask('taylor@example.com', '*', -15, 3);\r\n\r\n// 'tay***@example.com'\r\n```\r\n\r\n#### Str.match\r\n\r\nThe `Str.match` method will return the portion of a string that matches a given regular expression pattern:\r\n\r\n```js\r\nStr.match(/bar/, 'foo bar');\r\n\r\n// 'bar'\r\n```\r\n\r\n```js\r\nStr.match(/foo (.*)/, 'foo bar');\r\n\r\n// 'bar'\r\n```\r\n\r\n#### Str.matchAll\r\n\r\nThe `Str.matchAll` method will return an array containing the portions of a string that match a given regular expression pattern:\r\n\r\n```js\r\nStr.matchAll(/bar/, 'bar foo bar');\r\n\r\n// ['bar', 'bar']\r\n```\r\n\r\nIf you specify a matching group within the expression, method will return an array of that group's matches:\r\n\r\n```js\r\nStr.matchAll(/f(\\w*)/, 'bar fun bar fly');\r\n\r\n// ['un', 'ly'];\r\n```\r\n\r\nIf no matches are found, an empty array will be returned.\r\n\r\n#### Str.isMatch\r\n\r\nThe `Str.isMatch` method will return true if the string matches a given regular expression:\r\n\r\n```js\r\nStr.isMatch(/foo (.*)/, 'foo bar');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.isMatch(/foo (.*)/, 'laravel');\r\n\r\n// false\r\n```\r\n\r\n#### Str.numbers()\r\n\r\nThe `Str.numbers` method removes all non-numeric characters from a string:\r\n\r\n```js\r\nStr.numbers('(555) 123-4567');\r\n\r\n// 5551234567\r\n```\r\n\r\n```js\r\nStr.numbers('L4r4v3l!');\r\n\r\n// 443\r\n```\r\n\r\nIf no matches are found, an empty string will be returned.\r\n\r\n#### Str.orderedUuid()\r\n\r\nThe `Str.orderedUuid` method generates a \"timestamp first\" UUID that may be efficiently stored in an indexed database column.\r\nEach UUID that is generated using this method will be sorted after UUIDs previously generated using the method:\r\n\r\n```js\r\nStr.orderedUuid();\r\n\r\n// '04fe4df5-7bae-45f4-8040-d0e4568f4054'\r\n```\r\n\r\n#### Str.padBoth()\r\n\r\nThe `Str.padBoth` pads both sides of a string with another string until the final string reaches a desired length:\r\n\r\n```js\r\nStr.padBoth('James', 10, '_');\r\n\r\n// '__James___'\r\n```\r\n\r\n```js\r\nStr.padBoth('James', 10);\r\n\r\n// '  James   '\r\n```\r\n\r\n#### Str.padLeft()\r\n\r\nThe `Str.padLeft` pads the left side of a string with another string until the final string reaches a desired length:\r\n\r\n```js\r\nStr.padLeft('James', 10, '-=');\r\n\r\n// '-=-=-James'\r\n```\r\n\r\n```js\r\nStr.padLeft('James', 10);\r\n\r\n// '     James'\r\n```\r\n\r\n#### Str.padRight()\r\n\r\nThe `Str.padRight` pads the right side of a string with another string until the final string reaches a desired length:\r\n\r\n```js\r\nStr.padRight('James', 10, '-');\r\n\r\n// 'James-----'\r\n```\r\n\r\n```js\r\nStr.padRight('James', 10);\r\n\r\n// 'James     '\r\n```\r\n\r\n#### Str.password()\r\n\r\nThe `Str.password` method may be used to generate a secure, random password of a given length.\r\nThe password will consist of a combination of letters, numbers, symbols, and spaces.\r\nBy default, passwords are 32 characters long:\r\n\r\n```js\r\nStr.password();\r\n\r\n// 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4'\r\n```\r\n\r\n```js\r\nStr.password(12);\r\n\r\n// 'qwuar>#V|i]N'\r\n```\r\n\r\n#### Str.plural()\r\n\r\nThe `Str.plural` method converts a singular word string to its plural form.\r\n\r\n```js\r\nStr.plural('car');\r\n\r\n// 'cars'\r\n```\r\n\r\n```js\r\nStr.plural('child');\r\n\r\n// 'children'\r\n```\r\n\r\nYou may provide an integer as a second argument to the function to retrieve the singular or plural form of the string:\r\n\r\n```js\r\nStr.plural('child', 2);\r\n\r\n// 'children'\r\n```\r\n\r\n```js\r\nStr.plural('child', 1);\r\n\r\n// 'child'\r\n```\r\n\r\n#### Str.pluralStudly()\r\n\r\nThe `Str.pluralStudly` method converts a singular word string formatted in studly caps case to its plural form.\r\n\r\n```js\r\nStr.pluralStudly('VerifiedHuman');\r\n\r\n// 'VerifiedHumans'\r\n```\r\n\r\n```js\r\nStr.pluralStudly('UserFeedback');\r\n\r\n// 'UserFeedback'\r\n```\r\n\r\n#### Str.pluralPascal()\r\n\r\nThe `Str.pluralPascal` method converts a singular word string formatted in Pascal case to its plural form.\r\n\r\n```js\r\nStr.pluralPascal('VerifiedHuman');\r\n\r\n// 'VerifiedHumans'\r\n```\r\n\r\n```js\r\nStr.pluralPascal('UserFeedback');\r\n\r\n// 'UserFeedback'\r\n```\r\n\r\nYou may provide an integer as a second argument to the function to retrieve the singular or plural form of the string:\r\n\r\n```js\r\nStr.pluralPascal('VerifiedHuman', 2);\r\n\r\n// 'VerifiedHumans'\r\n```\r\n\r\n```js\r\nStr.pluralPascal('VerifiedHuman', 1);\r\n\r\n// 'VerifiedHuman'\r\n```\r\n\r\n#### Str.random()\r\n\r\nThe `Str.random` method generates a random string of the specified length:\r\n\r\n```js\r\nStr.random(40);\r\n```\r\n\r\n#### Str.remove()\r\n\r\nThe `Str.remove` method removes the given value or array of values from the string:\r\n\r\n```js\r\nStr.remove('e', 'Peter Piper picked a peck of pickled peppers.');\r\n\r\n// 'Ptr Pipr pickd a pck of pickld ppprs.'\r\n```\r\n\r\nYou may also pass false as a third argument to the remove method to ignore case when removing strings.\r\n\r\n```js\r\nStr.remove('E', 'Peter Piper picked a peck of pickled peppers.', false);\r\n\r\n// 'Ptr Pipr pickd a pck of pickld ppprs.'\r\n```\r\n\r\n#### Str.repeat()\r\n\r\nThe `Str.repeat`  method repeats the given string:\r\n\r\n```js\r\nStr.repeat('a', 5);\r\n\r\n// 'aaaaa'\r\n```\r\n\r\n#### Str.replace()\r\n\r\nThe `Str.replace` method replaces a given string within the string:\r\n\r\n```js\r\nStr.replace('9.x', '10.x', 'Laravel 10.x');\r\n\r\n// 'Laravel 9.x'\r\n```\r\n\r\nThe `replace` method also accepts a caseSensitive argument. By default, the replace method is case-sensitive:\r\n\r\n```js\r\nStr.replace('framework', 'Laravel', 'Framework 10.x', false);\r\n\r\n// 'Framework 10.x'\r\n```\r\n\r\n#### Str.replaceArray()\r\n\r\nThe `Str.replaceArray` method replaces a given value in the string sequentially using an array:\r\n\r\n```js\r\nStr.replaceArray('?', ['8:30', '9:00'], 'The event will take place between ? and ?');\r\n\r\n// 'The event will take place between 8:30 and 9:00'\r\n```\r\n\r\n#### Str.replaceFirst()\r\n\r\nThe `Str.replaceFirst` method replaces the first occurrence of a given value in a string:\r\n\r\n```js\r\nStr.replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');\r\n\r\n// 'a quick brown fox jumps over the lazy dog'\r\n```\r\n\r\n#### Str.replaceLast()\r\n\r\nThe `Str.replaceLast` method replaces the last occurrence of a given value in a string:\r\n\r\n```js\r\nStr.replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');\r\n\r\n// 'the quick brown fox jumps over a lazy dog'\r\n```\r\n\r\n#### Str.replaceMatches()\r\n\r\nThe `Str.replaceMatches` method replaces all portions of a string matching a pattern with the given replacement string:\r\n\r\n```js\r\nStr.replaceMatches(/[^A-Za-z0-9]+/, '', '(+1) 501-555-1000');\r\n\r\n// '15015551000'\r\n```\r\n\r\nThe `replaceMatches` method also accepts a closure that will be invoked with each portion of the string matching the given pattern, allowing you to perform the replacement logic within the closure and return the replaced value:\r\n\r\n```js\r\nStr.replaceMatches(/\\d/, (matches) => '[' + matches[0] + ']', '123');\r\n\r\n// '[1][2][3]'\r\n```\r\n\r\n#### Str.replaceStart()\r\n\r\nThe `Str.replaceStart` method replaces the first occurrence of the given value only if the value appears at the start of the string:\r\n\r\n```js\r\nStr.replaceStart('Hello', 'Laravel', 'Hello World');\r\n\r\n// 'Laravel World'\r\n\r\nStr.replaceStart('World', 'Laravel', 'Hello World');\r\n\r\n// 'Hello World'\r\n```\r\n\r\n#### Str.replaceEnd()\r\n\r\nThe `Str.replaceEnd` method replaces the last occurrence of the given value only if the value appears at the end of the string:\r\n\r\n```js\r\nStr.replaceEnd('World', 'Laravel', 'Hello World');\r\n\r\n// 'Hello Laravel'\r\n\r\nStr.replaceEnd('Hello', 'Laravel', 'Hello World');\r\n\r\n// 'Hello World'\r\n```\r\n\r\n#### Str.reverse()\r\n\r\nThe `Str.reverse` method reverses the given string:\r\n\r\n```js\r\nStr.reverse('Hello World');\r\n\r\n// 'dlroW olleH'\r\n```\r\n\r\n#### Str.singular()\r\n\r\nThe `Str.singular` method converts a string to its singular form.\r\n\r\n```js\r\nStr.singular('cars');\r\n\r\n// 'car'\r\n```\r\n\r\n```js\r\nStr.singular('children');\r\n\r\n// 'child'\r\n```\r\n\r\n#### Str.slug()\r\n\r\nThe `Str.slug` method generates a URL friendly \"slug\" from the given string:\r\n\r\n```js\r\nStr.slug('Laravel 5 Framework', '-');\r\n\r\n// 'laravel-5-framework'\r\n```\r\n\r\n#### Str.snake()\r\n\r\nThe `Str.snake` method converts the given string to snake_case:\r\n\r\n```js\r\nStr.snake('fooBar');\r\n\r\n// 'foo_bar'\r\n```\r\n\r\n```js\r\nStr.snake('fooBar', '-');\r\n\r\n// 'foo-bar'\r\n```\r\n\r\n#### Str.squish()\r\n\r\nThe `Str.squish` method removes all extraneous white space from a string, including extraneous white space between words:\r\n\r\n```js\r\nStr.squish('    laravel    framework    ');\r\n\r\n// 'laravel framework'\r\n```\r\n\r\n#### Str.start()\r\n\r\nThe `Str.start` method adds a single instance of the given value to a string if it does not already start with that value:\r\n\r\n```js\r\nStr.start('this/string', '/');\r\n\r\n// '/this/string'\r\n```\r\n\r\n```js\r\nStr.start('/this/string', '/');\r\n\r\n// '/this/string'\r\n```\r\n\r\n#### Str.startsWith()\r\n\r\nThe `Str.startsWith` method determines if the given string begins with the given value:\r\n\r\n```js\r\nStr.startsWith('This is my name', 'This');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.startsWith('This is my name', 'There');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string begins with any of the values in the array:\r\n\r\n```js\r\nStr.startsWith('This is my name', ['This', 'That', 'There']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.startsWith('This is my name', ['That', 'There']);\r\n\r\n// false\r\n```\r\n\r\n#### Str.doesntStartWith()\r\n\r\nThe `Str.doesntStartWith` method determines if the given string doesn't begin with the given value:\r\n\r\n```js\r\nStr.doesntStartWith('This is my name', 'There');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.doesntStartWith('This is my name', 'This');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string doesn't begin with any of the values in the array:\r\n\r\n```js\r\nStr.doesntStartWith('This is my name', ['There', 'foo']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.doesntStartWith('This is my name', ['This', 'foo']);\r\n\r\n// false\r\n```\r\n\r\n#### Str.studly()\r\n\r\nThe `Str.studly` method converts the given string to Studly caps case:\r\n\r\n```js\r\nStr.studly('foo_bar');\r\n\r\n// 'FooBar'\r\n```\r\n\r\n#### Str.pascal()\r\n\r\nThe `Str.pascal` method converts the given string to Pascal case:\r\n\r\n```js\r\nStr.pascal('foo_bar');\r\n\r\n// 'FooBar'\r\n```\r\n\r\n#### Str.substr()\r\n\r\nThe `Str.substr` method returns the portion of string specified by the start and length parameters:\r\n\r\n```js\r\nStr.substr('The Laravel Framework', 4, 7);\r\n\r\n// 'Laravel'\r\n```\r\n\r\n#### Str.substrCount()\r\n\r\nThe `Str.substrCount` method returns the number of occurrences of a given value in the given string:\r\n\r\n```js\r\nStr.substrCount('If you like ice cream, you will like snow cones.', 'like');\r\n\r\n// 2\r\n```\r\n\r\n#### Str.substrReplace()\r\n\r\nThe `Str.substrReplace` method replaces text within a portion of a string, starting at the position specified by the third argument and replacing the number of characters specified by the fourth argument.\r\nPassing `0` to the method's fourth argument will insert the string at the specified position without replacing any of the existing characters in the string:\r\n\r\n```js\r\nStr.substrReplace('1300', ':', 2);\r\n\r\n// '13:'\r\n```\r\n\r\n```js\r\nStr.substrReplace('1300', ':', 2, 0);\r\n// '13:00'\r\n```\r\n\r\n#### Str.swap()\r\n\r\nThe `Str.swap` method replaces multiple values in the given string:\r\n\r\n```js\r\nStr.swap({ 'Tacos': 'Burritos', 'great': 'fantastic' }, 'Tacos are great!');\r\n\r\n// 'Burritos are fantastic!'\r\n```\r\n\r\n#### Str.title()\r\n\r\nThe `Str.title` method converts the given string to Title Case:\r\n\r\n```js\r\nStr.title('a nice title uses the correct case');\r\n\r\n// 'A Nice Title Uses The Correct Case'\r\n```\r\n\r\n#### Str.toBase64()\r\n\r\nThe `Str.toBase64` method converts the given string to Base64:\r\n\r\n```js\r\nStr.toBase64('Laravel');\r\n\r\n// 'TGFyYXZlbA=='\r\n```\r\n\r\n#### Str.ucfirst()\r\n\r\nThe `Str.ucfirst` method returns the given string with the first character capitalized:\r\n\r\n```js\r\nStr.ucfirst('foo bar');\r\n\r\n// 'Foo bar'\r\n```\r\n\r\n#### Str.ucwords()\r\n\r\nThe `Str.ucwords` method capitalize the first character of each word in a string:\r\n\r\n```js\r\nStr.ucwords('foo bar');\r\n\r\n// 'Foo Bar'\r\n```\r\n\r\nYou can also a custom separator:\r\n\r\n```js\r\nStr.ucwords('foo-bar', '-');\r\n\r\n// 'Foo-Bar'\r\n```\r\n\r\n#### Str.ucsplit()\r\n\r\nThe `Str.ucsplit` method splits the given string into an array by uppercase characters:\r\n\r\n```js\r\nStr.ucsplit('FooBar');\r\n\r\n// [0 => 'Foo', 1 => 'Bar']\r\n```\r\n\r\n#### Str.upper()\r\n\r\nThe `Str.upper` method converts the given string to uppercase:\r\n\r\n```js\r\nStr.upper('laravel');\r\n\r\n// 'LARAVEL'\r\n```\r\n\r\n#### Str.ulid()\r\n\r\nThe `Str.ulid` method generates a ULID, which is a compact, time-ordered unique identifier:\r\n\r\n```js\r\nStr.ulid();\r\n\r\n// '01gd6r360bp37zj17nxb55yv40'\r\n```\r\n\r\n#### Str.unwrap()\r\n\r\nThe `Str.unwrap` method removes the specified strings from the beginning and end of a given string:\r\n\r\n```js\r\nStr.unwrap('-Laravel-', '-');\r\n\r\n// 'Laravel'\r\n```\r\n\r\n```js\r\nStr.unwrap('{framework: \"Laravel\"}', '{', '}');\r\n\r\n// 'framework: \"Laravel\"'\r\n```\r\n\r\n#### Str.uuid()\r\n\r\nThe `Str.uuid` method generates a UUID (version 4):\r\n\r\n```js\r\nStr.uuid();\r\n\r\n// '39923a8e-d504-42b5-894f-55e79e6632dd'\r\n```\r\n\r\n#### Str.uuid7()\r\n\r\nThe `Str.uuid` method generates a UUID (version 7):\r\n\r\n```js\r\nStr.uuid7();\r\n\r\n// '019634be-509d-74ac-b2f2-69ac01a6ac00'\r\n```\r\n\r\nA `Date` may be passed as an optional parameter which will be used to generate the ordered UUID:\r\n\r\n```js\r\nStr.uuid7(new Date('2023-01-01T00:00:00'));\r\n\r\n// '01856a69-d980-72e7-a125-96b2aff45909'\r\n```\r\n\r\n#### Str.wordCount()\r\n\r\nThe `Str.wordCount` method returns the number of words that a string contains:\r\n\r\n```js\r\nStr.wordCount('Hello, world!');\r\n\r\n// 2\r\n```\r\n\r\n#### Str.wordWrap()\r\n\r\nThe `Str.wordWrap` method wraps a string to a given number of characters:\r\n\r\n```js\r\nStr.wordWrap('The quick brown fox jumped over the lazy dog.', 20, \"<br />\\n\");\r\n\r\n/*\r\nThe `quick` brown fox<br />\r\njumped over the lazy<br />\r\ndog.\r\n*/\r\n```\r\n\r\n#### Str.words()\r\n\r\nThe `Str.words` method limits the number of words in a string.\r\nAn additional string may be passed to this method via its third argument to specify which string should be appended to the end of the truncated string:\r\n\r\n```js\r\nStr.words('Perfectly balanced, as all things should be.', 3, ' >>>');\r\n\r\n// 'Perfectly balanced, as >>>'\r\n```\r\n\r\n#### Str.wrap()\r\n\r\nThe `Str.wrap` method wraps the given string with an additional string or a pair of strings\r\n\r\n```js\r\nStr.wrap('Laravel', '\"');\r\n\r\n// '\"Laravel\"'\r\n```\r\n\r\n```js\r\nStr.wrap('is', 'This ', ' Laravel!');\r\n\r\n// 'This is Laravel!'\r\n```\r\n\r\n#### str()\r\n\r\nThe `str` function returns a Stringable instance of the given string.\r\n\r\n```js\r\nimport { str } from '@bjnstnkvc/str'\r\n```\r\n\r\nThis function is equivalent to the `Str.of` method.\r\n\r\n```js\r\nstr('Taylor').append(' Otwell');\r\n\r\n// 'Taylor Otwell'\r\n```\r\n\r\n### Fluent Strings\r\n\r\nFluent strings provide a more fluent, object-oriented interface for working with string values, allowing you to chain multiple string operations together using a more readable syntax compared to traditional string operations.\r\n\r\n#### after\r\n\r\nThe `after` method returns everything after the given value in a string.\r\nThe entire string will be returned if the value does not exist within the string:\r\n\r\n```js\r\nStr.of('This is my name').after('This is');\r\n\r\n// ' my name'\r\n```\r\n\r\n#### afterLast\r\n\r\nThe `afterLast` method returns everything after the last occurrence of the given value in a string.\r\nThe entire string will be returned if the value does not exist within the string:\r\n\r\n```js\r\nStr.of('App\\\\Http\\\\Controllers\\\\Controller').afterLast('\\\\');\r\n\r\n// 'Controller'\r\n```\r\n\r\n#### apa\r\n\r\nThe `apa` method converts the given string to title case following the [APA guidelines](https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case):\r\n\r\n```js\r\nStr.of('a nice title uses the correct case').apa();\r\n\r\n// A Nice Title Uses the Correct Case\r\n```\r\n\r\n#### append\r\n\r\nThe `append` method appends the given values to the string:\r\n\r\n```js\r\nStr.of('Taylor').append(' Otwell');\r\n\r\n// 'Taylor Otwell'\r\n```\r\n\r\n#### ascii\r\n\r\nThe `ascii` method will attempt to transliterate the string into an ASCII value:\r\n\r\n```js\r\nStr.of('ü').ascii();\r\n\r\n// 'u'\r\n```\r\n\r\n#### basename\r\n\r\nThe `basename` method will return the trailing name component of the given string:\r\n\r\n```js\r\nStr.of('/foo/bar/baz').basename();\r\n\r\n// 'baz'\r\n```\r\n\r\nIf needed, you may provide an \"extension\" that will be removed from the trailing component:\r\n\r\n```js\r\nStr.of('/foo/bar/baz.jpg').basename('.jpg');\r\n\r\n// 'baz'\r\n```\r\n\r\n#### before\r\n\r\nThe `before` method returns everything before the given value in a string:\r\n\r\n```js\r\nStr.of('This is my name').before('my name');\r\n\r\n// 'This is '\r\n```\r\n\r\n#### beforeLast\r\n\r\nThe `beforeLast` method returns everything before the last occurrence of the given value in a string:\r\n\r\n```js\r\nStr.of('This is my name').beforeLast('is');\r\n\r\n// 'This '\r\n```\r\n\r\n#### between\r\n\r\nThe `between` method returns the portion of a string between two values:\r\n\r\n```js\r\nStr.of('This is my name').between('This', 'name');\r\n\r\n// ' is my '\r\n```\r\n\r\n#### betweenFirst\r\n\r\nThe `betweenFirst` method returns the smallest possible portion of a string between two values:\r\n\r\n```js\r\nStr.of('[a] bc [d]').betweenFirst('[', ']');\r\n\r\n// 'a'\r\n```\r\n\r\n#### camel\r\n\r\nThe `camel` method converts the given string to camelCase:\r\n\r\n```js\r\nStr.of('foo_bar').camel();\r\n\r\n// 'fooBar'\r\n```\r\n\r\n#### charAt\r\n\r\nThe `charAt` method returns the character at the specified index. If the index is out of bounds, `false` is returned:\r\n\r\n```js\r\nStr.of('This is my name.').charAt(6);\r\n\r\n// 's'\r\n```\r\n\r\n#### chopStart\r\n\r\nThe `chopStart` method removes the given string if it exists at the start of the subject:\r\n\r\n```js\r\nStr.of('Hello, world!').chopStart('Hello, ');\r\n\r\n// 'world!'\r\n```\r\n\r\nYou may also pass an array of strings to remove the first matching string found at the start of the subject:\r\n\r\n```js\r\nStr.of('Hello, world!').chopStart(['Hi, ', 'Hello, ']);\r\n\r\n// 'world!'\r\n```\r\n\r\nIf multiple strings in the array are found at the start of the subject, only the first match will be removed:\r\n\r\n```js\r\nStr.of('Hello, Hello, world!').chopStart(['Hello, ', 'Hello, ']);\r\n\r\n// 'Hello, world!'\r\n```\r\n\r\n#### chopEnd\r\n\r\nThe `chopEnd` method removes the given string if it exists at the end of the subject:\r\n\r\n```js\r\nStr.of('Hello, world!').chopEnd(', world!');\r\n\r\n// 'Hello'\r\n```\r\n\r\nYou may also pass an array of strings to remove the first matching string found at the end of the subject:\r\n\r\n```js\r\nStr.of('Hello, world!').chopEnd(['planet!', ', world!']);\r\n\r\n// 'Hello'\r\n```\r\n\r\nIf multiple strings in the array are found at the end of the subject, only the first match will be removed:\r\n\r\n```js\r\nStr.of('Hello, world!world!').chopEnd(['world!', 'world!']);\r\n\r\n// 'Hello, world!'\r\n```\r\n\r\n#### classBasename\r\n\r\nThe `classBasename` method returns the class name of the given class with the class's namespace removed:\r\n\r\n```js\r\nStr.of('Foo\\\\Bar\\\\Baz').classBasename();\r\n\r\n// 'Baz'\r\n```\r\n\r\n#### contains\r\n\r\nThe `contains` method determines if the given string contains the given value. This method is case-sensitive:\r\n\r\n```js\r\nStr.of('This is my name').contains('my');\r\n\r\n// true\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string contains any of the values in the array:\r\n\r\n```js\r\nStr.of('This is my name').contains(['my', 'foo']);\r\n\r\n// true\r\n```\r\n\r\nYou may disable case sensitivity by setting the `ignoreCase` argument to `true`:\r\n\r\n```js\r\nStr.of('This is my name').contains('MY', true);\r\n\r\n// true\r\n```\r\n\r\n#### containsAll\r\n\r\nThe `containsAll` method determines if the given string contains all the values in the given array:\r\n\r\n```js\r\nStr.of('This is my name').containsAll(['my', 'name']);\r\n\r\n// true\r\n```\r\n\r\nYou may disable case sensitivity by setting the `ignoreCase` argument to `true`:\r\n\r\n```js\r\nStr.of('This is my name').containsAll(['MY', 'NAME'], true);\r\n\r\n// true\r\n```\r\n\r\n#### doesntContain\r\n\r\nThe `doesntContain` method determines if the given string doesn't contain the given value. By default, this method is case-sensitive:\r\n\r\n```js\r\nStr.of('This is name').doesntContain('my');\r\n\r\n// true\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string contains any of the values in the array:\r\n\r\n```js\r\nStr.of('This is name').doesntContain(['my', 'foo']);\r\n\r\n// true\r\n```\r\n\r\nYou may disable case sensitivity by setting the `ignoreCase` argument to `true`:\r\n\r\n```js\r\nStr.of('This is name').doesntContain('MY', true);\r\n\r\n// true\r\n```\r\n\r\n#### convertCase\r\n\r\nThe `Str.convertCase` method converts the case of a string according the mode of conversion (defaults to `MB_CASE_FOLD`). Modes of conversion are:\r\n\r\n##### MB_CASE_UPPER\r\n\r\nPerforms a full upper-case folding.\r\n\r\n```js\r\nStr.of('hello').convertCase(Mode.MB_CASE_UPPER);\r\n\r\n// HELLO\r\n```\r\n\r\n##### MB_CASE_LOWER\r\n\r\nPerforms a full lower-case folding.\r\n\r\n```js\r\nStr.of('HELLO').convertCase(Mode.MB_CASE_UPPER);\r\n\r\n// hello\r\n```\r\n\r\n##### MB_CASE_TITLE\r\n\r\nPerforms a full title-case conversion based on the Cased and CaseIgnorable derived Unicode properties.\r\n\r\n```js\r\nStr.of('a nice title uses the correct case').convertCase(Mode.MB_CASE_TITLE);\r\n\r\n// 'A Nice Title Uses The Correct Case'\r\n```\r\n\r\n##### MB_CASE_FOLD\r\n\r\nPerforms a full case fold conversion which removes case distinctions present in the string.\r\n\r\n```js\r\nStr.of('HeLLo').convertCase(Mode.MB_CASE_FOLD);\r\n\r\n// hello\r\n```\r\n\r\n#### deduplicate\r\n\r\nThe `deduplicate` method replaces consecutive instances of a character with a single instance of that character in the given string. By default, the method deduplicates spaces:\r\n\r\n```js\r\nStr.of('The   Laravel   Framework').deduplicate();\r\n\r\n//  The Laravel Framework \r\n```\r\n\r\n```js\r\nStr.of('The---Laravel---Framework').deduplicate('-');\r\n\r\n// The-Laravel-Framework\r\n```\r\n\r\nYou can also pass an array of characters to replace consecutive instances of:\r\n\r\n```js\r\nStr.of('Thee---Laravell---Frramework').deduplicate(['-', 'e', 'l', 'r']);\r\n\r\n// The-Laravel-Frramework\r\n```\r\n\r\n#### dirname\r\n\r\nThe `dirname` method return the parent directory portion of the given string:\r\n\r\n```js\r\nStr.of('/foo/bar/baz').dirname();\r\n\r\n// '/foo/bar'\r\n```\r\n\r\nIf necessary, you may specify how many directory levels you wish to trim from the string:\r\n\r\n```js\r\nStr.of('/foo/bar/baz').dirname(2);\r\n\r\n// '/foo'\r\n```\r\n\r\n#### excerpt\r\n\r\nThe `excerpt` method extracts an excerpt from the string that matches the first instance of a phrase within that string:\r\n\r\n```js\r\nStr.of('This is my name').excerpt('my', { 'radius': 3 });\r\n\r\n// '...is my na...'\r\n```\r\n\r\nThe `radius` option, which defaults to 100, allows you to define the number of characters that should appear on each side of the truncated string.\r\nIn addition, you may use the omission option to change the string that will be prepended and appended to the truncated string:\r\n\r\n```js\r\nStr.of('This is my name').excerpt('name', { 'radius': 3, 'omission': '(...) ' });\r\n\r\n// '(...) my name'\r\n```\r\n\r\n#### endsWith\r\n\r\nThe `endsWith` method determines if the given string ends with the given value:\r\n\r\n```js\r\nStr.of('This is my name').endsWith('name');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').endsWith('names');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string ends with any of the values in the array:\r\n\r\n```js\r\nStr.of('This is my name').endsWith(['name', 'foo']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').endsWith(['names', 'foo']);\r\n\r\n// false\r\n```\r\n#### doesntEndWith\r\n\r\nThe `doesntEndWith` method determines if the given string doesn't end with a given substring:\r\n\r\n```js\r\nStr.of('This is my name').doesntEndWith('names');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').doesntEndWith('name');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string doesn't end with any of the values in the array:\r\n\r\n```js\r\nStr.of('This is my name').doesntEndWith(['names', 'foo']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').doesntEndWith(['name', 'foo']);\r\n\r\n// false\r\n```\r\n\r\n#### exactly\r\n\r\nThe `exactly` method determines if the given string is an exact match with another string:\r\n\r\n```js\r\nStr.of('Laravel').exactly('Laravel');\r\n\r\n// true\r\n```\r\n\r\n#### explode\r\n\r\nThe `explode` method splits the string by the given delimiter and returns an array containing each section of the split string:\r\n\r\n```js\r\nStr.of('foo bar baz').explode(' ');\r\n\r\n// ['foo', 'bar', 'baz']\r\n```\r\n\r\n#### finish\r\n\r\nThe `finish` method adds a single instance of the given value to a string if it does not already end with that value:\r\n\r\n```js\r\nStr.of('this/string').finish('/');\r\n\r\n// 'this/string/'\r\n```\r\n\r\n```js\r\nStr.of('this/string/').finish('/');\r\n\r\n// 'this/string/'\r\n```\r\n\r\n#### fromBase64\r\n\r\nThe `fromBase64` method converts the given string from Base64:\r\n\r\n```js\r\nStr.of('TGFyYXZlbA==').fromBase64();\r\n\r\n// 'Laravel'\r\n```\r\n\r\n#### headline\r\n\r\nThe `headline` method will convert strings delimited by casing, hyphens, or underscores into a space delimited string with each word's first letter capitalized:\r\n\r\n```js\r\nStr.of('taylor_otwell').headline();\r\n\r\n// 'Taylor Otwell'\r\n```\r\n\r\n```js\r\nStr.of('EmailNotificationSent').headline();\r\n\r\n// 'Email Notification Sent'\r\n```\r\n\r\n#### is\r\n\r\nThe `is` method determines if a given string matches a given pattern. Asterisks may be used as wildcard values\r\n\r\n```js\r\nStr.of('foobar').is('foo*');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('foobar').is('baz*');\r\n\r\n// false\r\n```\r\n\r\nYou may disable case sensitivity by setting the ignoreCase argument to true:\r\n\r\n```js\r\nStr.of('photo.JPG').is('*.jpg', true);\r\n\r\n// true\r\n```\r\n\r\n#### isAscii\r\n\r\nThe `isAscii` method determines if a given string is an ASCII string:\r\n\r\n```js\r\nStr.of('Taylor').isAscii();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('ü').isAscii();\r\n\r\n// false\r\n```\r\n\r\n#### isEmpty\r\n\r\nThe `isEmpty` method determines if the given string is empty:\r\n\r\n```js\r\nStr.of('  ').trim().isEmpty();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('Laravel').trim().isEmpty();\r\n\r\n// false\r\n```\r\n\r\n#### isNotEmpty\r\n\r\nThe `isNotEmpty` method determines if the given string is not empty:\r\n\r\n```js\r\nStr.of('  ').trim().isNotEmpty();\r\n\r\n// false\r\n```\r\n\r\n```js\r\nStr.of('Laravel').trim().isNotEmpty();\r\n\r\n// true\r\n```\r\n\r\n#### isJson\r\n\r\nThe `isJson` method determines if a given string is valid JSON:\r\n\r\n```js\r\nStr.of('[1,2,3]').isJson();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('{\"first\": \"John\", \"last\": \"Doe\"}').isJson();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('{first: \"John\", last: \"Doe\"}').isJson();\r\n\r\n// false\r\n```\r\n\r\n#### isUlid\r\n\r\nThe `isUlid` method determines if a given string is a ULID:\r\n\r\n```js\r\nStr.of('01gd6r360bp37zj17nxb55yv40').isUlid();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('Taylor').isUlid();\r\n\r\n// false\r\n```\r\n\r\n#### isUrl\r\n\r\nThe `isUrl` method determines if a given string is a URL:\r\n\r\n```js\r\nStr.of('http://example.com').isUrl();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('Taylor').isUrl();\r\n\r\n// false\r\n```\r\n\r\n#### isUuid\r\n\r\nThe `isUuid` method determines if a given string is a UUID:\r\n\r\n```js\r\nStr.of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c').isUuid();\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('Taylor').isUuid();\r\n\r\n// false\r\n```\r\n\r\n#### kebab\r\n\r\nThe `kebab` method converts the given string to kebab-case:\r\n\r\n```js\r\nStr.of('fooBar').kebab();\r\n\r\n// 'foo-bar'\r\n```\r\n\r\n#### lcfirst\r\n\r\nThe `lcfirst` method returns the given string with the first character lowercased:\r\n\r\n```js\r\nStr.of('Foo Bar').lcfirst();\r\n\r\n// 'foo Bar'\r\n```\r\n\r\n#### length\r\n\r\nThe `length` method returns the length of the given string:\r\n\r\n```js\r\nStr.of('Laravel').length();\r\n\r\n// 7\r\n```\r\n\r\n#### limit\r\n\r\nThe `limit` method truncates the given string to the specified length:\r\n\r\n```js\r\nStr.of('The quick brown fox jumps over the lazy dog').limit(20);\r\n\r\n// 'The quick brown fox...'\r\n```\r\n\r\nYou may also pass a second argument to change the string that will be appended to the end of the truncated string:\r\n\r\n```js\r\nStr.of('The quick brown fox jumps over the lazy dog').limit(20, ' (...)');\r\n\r\n// 'The quick brown fox (...)'\r\n```\r\n\r\nYou may pass a boolean as fourth argument to the method to ensure the truncation does not cut off in the middle of a word:\r\n\r\n```js\r\nStr.of('The quick brown fox jumps over the lazy dog').limit(18, '...', false);\r\n\r\n// 'The quick brown fo...'\r\n```\r\n\r\n```js\r\nStr.of('The quick brown fox jumps over the lazy dog').limit(18, '...', true);\r\n\r\n// 'The quick brown...'\r\n```\r\n\r\n#### lower\r\n\r\nThe `lower` method converts the given string to lowercase:\r\n\r\n```js\r\nStr.of('LARAVEL').lower();\r\n\r\n// 'laravel'\r\n```\r\n\r\n#### ltrim\r\n\r\nThe `ltrim` method trims the left side of the string:\r\n\r\n```js\r\nStr.of('  Laravel  ').ltrim();\r\n\r\n// 'Laravel  '\r\n```\r\n\r\n```js\r\nStr.of('/Laravel/').ltrim('/');\r\n\r\n// 'Laravel/'\r\n```\r\n\r\n#### mask\r\n\r\nThe `mask` method masks a portion of a string with a repeated character, and may be used to obfuscate segments of strings such as email addresses and phone numbers:\r\n\r\n```js\r\nStr.of('taylor@example.com').mask('*', 3);\r\n\r\n// 'tay***************'\r\n```\r\n\r\nIf needed, you may provide negative numbers as the third or fourth argument to the mask method, which will instruct the method to begin masking at the given distance from the end of the string:\r\n\r\n```js\r\nStr.of('taylor@example.com').mask('*', -15, 3);\r\n\r\n// 'tay***@example.com'\r\n```\r\n\r\n```js\r\nStr.of('taylor@example.com').mask('*', 4, -4);\r\n\r\n// 'tayl**********.com'\r\n```\r\n\r\n#### match\r\n\r\nThe `match` method will return the portion of a string that matches a given regular expression pattern:\r\n\r\n```js\r\nStr.of('foo bar').match(/bar/);\r\n\r\n// 'bar'\r\n```\r\n\r\n```js\r\nStr.of('foo bar').match(/foo (.*)/);\r\n\r\n// 'bar'\r\n```\r\n\r\n#### matchAll\r\n\r\nThe `matchAll` method will return an array containing the portions of a string that match a given regular expression\r\npattern:\r\n\r\n```js\r\nStr.of('bar foo bar').matchAll(/bar/);\r\n\r\n// ['bar', 'bar']\r\n```\r\n\r\nIf you specify a matching group within the expression, method will return an array of that group's matches:\r\n\r\n```js\r\nStr.of('bar fun bar fly').matchAll(/f(\\w*)/);\r\n\r\n// ['un', 'ly'];\r\n```\r\n\r\nIf no matches are found, an empty array will be returned.\r\n\r\n#### isMatch\r\n\r\nThe `isMatch` method will return true if the string matches a given regular expression:\r\n\r\n```js\r\nStr.of('foo bar').isMatch(/foo (.*)/);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('laravel').isMatch(/foo (.*)/);\r\n\r\n// false\r\n```\r\n\r\n#### numbers\r\n\r\nThe `numbers` method removes all non-numeric characters from a string:\r\n\r\n```js\r\nStr.of('(555) 123-4567').numbers();\r\n\r\n// 5551234567\r\n```\r\n\r\n```js\r\nStr.of('L4r4v3l!').numbers();\r\n\r\n// 443\r\n```\r\n\r\nIf no matches are found, an empty string will be returned.\r\n\r\n#### newLine\r\n\r\nThe `newLine` method appends an \"end of line\" character to a string:\r\n\r\n```js\r\nStr.of('Laravel').newLine().append('Framework');\r\n\r\n// 'Laravel\r\n//  Framework'\r\n```\r\n\r\n#### padBoth\r\n\r\nThe `padBoth` method pads both sides of a string with another string until the final string reaches the desired length:\r\n\r\n```js\r\nStr.of('James').padBoth(10, '_');\r\n\r\n// '__James___'\r\n```\r\n\r\n```js\r\nStr.of('James').padBoth(10);\r\n\r\n// '  James   '\r\n```\r\n\r\n#### padLeft\r\n\r\nThe `padLeft` pads the left side of a string with another string until the final string reaches the desired length:\r\n\r\n```js\r\nStr.of('James').padLeft(10, '-=');\r\n\r\n// '-=-=-James'\r\n```\r\n\r\n```js\r\nStr.of('James').padLeft(10);\r\n\r\n// '     James'\r\n```\r\n\r\n#### padRight\r\n\r\nThe `padRight` method pads the right side of a string with another string until the final string reaches the desired length:\r\n\r\n```js\r\nStr.of('James').padRight(10, '-');\r\n\r\n// 'James-----'\r\n```\r\n\r\n```js\r\nStr.of('James').padRight(10);\r\n\r\n// 'James     '\r\n```\r\n\r\n#### pipe\r\n\r\nThe `pipe` method allows you to transform the string by passing its current value to the given callable:\r\n\r\n```js\r\nStr.of('Laravel').pipe('btoa').prepend('Base64 Encoded: ');\r\n\r\n// 'Base64 Encoded: TGFyYXZlbA=='\r\n```\r\n\r\n```js\r\nStr.of('TGFyYXZlbA==').pipe('atob').prepend('Base64 Encoded: ');\r\n\r\n// 'Base64 Decoded: Laravel'\r\n```\r\n\r\n```js\r\nStr.of('Laravel Framework').pipe('toUpperCase');\r\n\r\n// 'LARAVEL FRAMEWORK'\r\n```\r\n\r\n```js\r\nStr.of('LARAVEL FRAMEWORK').pipe((string) => string.title());\r\n\r\n// 'Laravel Framework'\r\n```\r\n\r\n```js\r\nStr.of('foo').pipe(string => 'bar');\r\n\r\n// 'bar'\r\n```\r\n\r\n#### plural\r\n\r\nThe `plural` method converts a singular word string to its plural form.\r\n\r\n```js\r\nStr.of('car').plural();\r\n\r\n// 'cars'\r\n```\r\n\r\n```js\r\nStr.of('child').plural();\r\n\r\n// 'children'\r\n```\r\n\r\nYou may provide an integer as a second argument to the function to retrieve the singular or plural form of the string:\r\n\r\n```js\r\nStr.of('child').plural(2);\r\n\r\n// 'children'\r\n```\r\n\r\n```js\r\nStr.of('child').plural(1);\r\n\r\n// 'child'\r\n```\r\n\r\n#### pluralPascal\r\n\r\nThe `pluralPascal` method converts a singular word string formatted in Pascal case to its plural form.\r\n\r\n```js\r\nStr.of('VerifiedHuman').pluralPascal();\r\n\r\n// 'VerifiedHumans'\r\n```\r\n\r\n```js\r\nStr.of('UserFeedback').pluralPascal();\r\n\r\n// 'UserFeedback'\r\n```\r\n\r\nYou may provide an integer as a second argument to the function to retrieve the singular or plural form of the string:\r\n\r\n```js\r\nStr.of('VerifiedHuman').pluralPascal(2);\r\n\r\n// 'VerifiedHumans'\r\n```\r\n\r\n```js\r\nStr.of('VerifiedHuman').pluralPascal(1);\r\n\r\n// 'VerifiedHuman'\r\n```\r\n\r\n#### position\r\n\r\nThe `position` method returns the position of the first occurrence of a substring in a string.\r\nIf the substring does not exist within the string, `false` is returned:\r\n\r\n```js\r\nStr.of('Hello, World!').position('Hello');\r\n\r\n// 0\r\n```\r\n\r\n```js\r\nStr.of('Hello, World!').position('W');\r\n\r\n// 7\r\n```\r\n\r\nYou may provide an integer as a second argument to the function to retrieve the singular or plural form of the string:\r\n\r\n```js\r\nStr.of('child').plural(2);\r\n\r\n// 'children'\r\n```\r\n\r\n```js\r\nStr.of('child').plural(1);\r\n\r\n// 'child'\r\n```\r\n\r\n#### prepend\r\n\r\nThe `prepend` method prepends the given values onto the string:\r\n\r\n```js\r\nStr.of('Framework').prepend('Laravel ');\r\n\r\n// 'Laravel Framework'\r\n```\r\n\r\n#### remove\r\n\r\nThe `remove` method removes the given value or array of values from the string:\r\n\r\n```js\r\nStr.of('Arkansas is quite beautiful!').remove('quite ');\r\n\r\n// 'Arkansas is beautiful!'\r\n```\r\n\r\nYou may also pass false as a second parameter to ignore case when removing strings.\r\n\r\n#### repeat\r\n\r\nThe `repeat` method repeats the given string:\r\n\r\n```js\r\nStr.of('a').repeat(5);\r\n\r\n// 'aaaaa'\r\n```\r\n\r\n#### replace\r\n\r\nThe `replace` method replaces a given string within the string:\r\n\r\n```js\r\nStr.of('Laravel 9.x').replace('9.x', '10.x');\r\n\r\n// 'Laravel 10.x'\r\n```\r\n\r\nThe `replace` method also accepts a `caseSensitive` argument. By default, the replace method is case-sensitive:\r\n\r\n```js\r\nStr.of('macOS 13.x').replace('macOS', 'iOS', false);\r\n```\r\n\r\n#### replaceArray\r\n\r\nThe `replaceArray` method replaces a given value in the string sequentially using an array:\r\n\r\n```js\r\nStr.of('The event will take place between ? and ?').replaceArray('?', ['8:30', '9:00']);\r\n\r\n// 'The event will take place between 8:30 and 9:00'\r\n```\r\n\r\n#### replaceFirst\r\n\r\nThe `replaceFirst` method replaces the first occurrence of a given value in a string:\r\n\r\n```js\r\nStr.of('the quick brown fox jumps over the lazy dog').replaceFirst('the', 'a');\r\n\r\n// 'a quick brown fox jumps over the lazy dog'\r\n```\r\n\r\n#### replaceLast\r\n\r\nThe `replaceLast` method replaces the last occurrence of a given value in a string:\r\n\r\n```js\r\nStr.of('the quick brown fox jumps over the lazy dog').replaceLast('the', 'a');\r\n\r\n// 'the quick brown fox jumps over a lazy dog'\r\n```\r\n\r\n#### replaceMatches\r\n\r\nThe `replaceMatches` method replaces all portions of a string matching a pattern with the given replacement string:\r\n\r\n```js\r\nStr.of('(+1) 501-555-1000').replaceMatches(/[^A-Za-z0-9]+/, '');\r\n\r\n// '15015551000'\r\n```\r\n\r\nThe `replaceMatches` method also accepts a closure that will be invoked with each portion of the string matching the given pattern,\r\nallowing you to perform the replacement logic within the closure and return the replaced value:\r\n\r\n```js\r\nStr.of('123').replaceMatches(/\\d/, (match) => '[' + match[0] + ']');\r\n\r\n// '[1][2][3]'\r\n```\r\n\r\n#### replaceStart\r\n\r\nThe `replaceStart` method replaces the first occurrence of the given value only if the value appears at the start of the\r\nstring:\r\n\r\n```js\r\nStr.of('Hello World').replaceStart('Hello', 'Laravel');\r\n\r\n// 'Laravel World'\r\n```\r\n\r\n```js\r\nStr.of('Hello World').replaceStart('World', 'Laravel');\r\n\r\n// 'Hello World'\r\n```\r\n\r\n#### replaceEnd\r\n\r\nThe `replaceEnd` method replaces the last occurrence of the given value only if the value appears at the end of the\r\nstring:\r\n\r\n```js\r\nStr.of('Hello World').replaceEnd('World', 'Laravel');\r\n\r\n// 'Hello Laravel'\r\n```\r\n\r\n```js\r\nStr.of('Hello World').replaceEnd('Hello', 'Laravel');\r\n\r\n// 'Hello World'\r\n```\r\n\r\n#### rtrim\r\n\r\nThe `rtrim` method trims the right side of the given string:\r\n\r\n```js\r\nStr.of('  Laravel  ').rtrim();\r\n\r\n// '  Laravel'\r\n```\r\n\r\n```js\r\nStr.of('/Laravel/').rtrim('/');\r\n\r\n// '/Laravel'\r\n```\r\n\r\n#### singular\r\n\r\nThe `singular` method converts a string to its singular form.\r\n\r\n```js\r\nStr.of('cars').singular();\r\n\r\n// 'car'\r\n```\r\n\r\n```js\r\nStr.of('children').singular();\r\n\r\n// 'child'\r\n```\r\n\r\n#### slug\r\n\r\nThe `slug` method generates a URL friendly \"slug\" from the given string:\r\n\r\n```js\r\nStr.of('Laravel Framework').slug('-');\r\n\r\n// 'laravel-framework'\r\n```\r\n\r\n#### snake\r\n\r\nThe `snake` method converts the given string to snake_case:\r\n\r\n```js\r\nStr.of('fooBar').snake();\r\n\r\n// 'foo_bar'\r\n```\r\n\r\n#### split\r\n\r\nThe `split` method splits a string into an array using a regular expression:\r\n\r\n```js\r\nStr.of('one, two, three').split(/[\\s,]+/);\r\n\r\n// [\"one\", \"two\", \"three\"]\r\n```\r\n\r\n#### squish\r\n\r\nThe `squish` method removes all extraneous white space from a string, including extraneous white space between words:\r\n\r\n```js\r\nStr.of('    laravel    framework    ').squish();\r\n\r\n// 'laravel framework'\r\n```\r\n\r\n#### start\r\n\r\nThe `start` method adds a single instance of the given value to a string if it does not already start with that value:\r\n\r\n```js\r\nStr.of('this/string').start('/');\r\n\r\n// '/this/string'\r\n```\r\n\r\n```js\r\nStr.of('/this/string').start('/');\r\n\r\n// '/this/string'\r\n```\r\n\r\n#### startsWith\r\n\r\nThe `startsWith` method determines if the given string begins with the given value:\r\n\r\n```js\r\nStr.of('This is my name').startsWith('This');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').startsWith('There');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string begins with any of the values in the array:\r\n\r\n```js\r\nStr.of('This is my name').startsWith(['This', 'That', 'There']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').startsWith(['That', 'There']);\r\n\r\n// false\r\n```\r\n\r\n#### doesntStartWith\r\n\r\nThe `doesntStartWith` method determines if the given string doesn't begin with the given value:\r\n\r\n```js\r\nStr.of('This is my name').doesntStartWith('There');\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').doesntStartWith('This');\r\n\r\n// false\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string doesn't begin with any of the values in the array:\r\n\r\n```js\r\nStr.of('This is my name').doesntStartWith(['There', 'foo']);\r\n\r\n// true\r\n```\r\n\r\n```js\r\nStr.of('This is my name').doesntStartWith(['This', 'foo']);\r\n\r\n// false\r\n```\r\n\r\n#### studly\r\n\r\nThe `studly` method converts the given string to Studly caps case:\r\n\r\n```js\r\nStr.of('foo_bar').studly();\r\n\r\n// 'FooBar'\r\n```\r\n\r\n#### pascal\r\n\r\nThe `studly` method converts the given string to Pascal case:\r\n\r\n```js\r\nStr.of('foo_bar').pascal();\r\n\r\n// 'FooBar'\r\n```\r\n\r\n#### substr\r\n\r\nThe `substr` method returns the portion of the string specified by the given start and length parameters:\r\n\r\n```js\r\nStr.of('Laravel Framework').substr(8);\r\n\r\n// 'Framework'\r\n```\r\n\r\n```js\r\nStr.of('Laravel Framework').substr(8, 5);\r\n\r\n// 'Frame'\r\n```\r\n\r\n#### substrReplace\r\n\r\nThe `substrReplace` method replaces text within a portion of a string, starting at the position specified by the second argument and replacing the number of characters specified by the third argument.\r\nPassing `0` to the method's third argument will insert the string at the specified position without replacing any of the existing characters in the string:\r\n\r\n```js\r\nStr.of('1300').substrReplace(':', 2);\r\n\r\n// '13:'\r\n```\r\n\r\n```js\r\nStr.of('The Framework').substrReplace(' Laravel', 3, 0);\r\n\r\n// 'The Laravel Framework'\r\n```\r\n\r\n#### swap\r\n\r\nThe `swap` method replaces multiple values in the string:\r\n\r\n```js\r\nStr.of('Tacos are great!').swap({ 'Tacos': 'Burritos', 'great': 'fantastic' });\r\n\r\n// 'Burritos are fantastic!'\r\n```\r\n\r\n#### take\r\n\r\nThe `take` method returns a specified number of characters from the beginning of the string:\r\n\r\n```js\r\nStr.of('Build something amazing!').take(5);\r\n\r\n// 'Build'\r\n```\r\n\r\n#### tap\r\n\r\nThe `tap` method passes the string to the given closure, allowing you to examine and interact with the string while not affecting the string itself.\r\nThe original string is returned by the `tap` method regardless of what is returned by the closure:\r\n\r\n```js\r\nStr.of('Laravel')\r\n    .append(' Framework')\r\n    .tap((string) => string.dump())\r\n    .upper();\r\n\r\n// 'LARAVEL FRAMEWORK'\r\n```\r\n\r\n// 'LARAVEL FRAMEWORK'\r\n```\r\n\r\n#### test\r\n\r\nThe `test` method determines if a string matches the given regular expression pattern:\r\n\r\n```js\r\nStr.of('Laravel Framework').test(/Laravel/);\r\n\r\n// true\r\n```\r\n\r\n#### title\r\n\r\nThe `title` method converts the given string to Title Case:\r\n\r\n```js\r\nStr.of('a nice title uses the correct case').title();\r\n\r\n// 'A Nice Title Uses The Correct Case'\r\n```\r\n\r\n#### toBase64\r\n\r\nThe `toBase64` method converts the given string to Base64:\r\n\r\n```js\r\nStr.of('Laravel').toBase64();\r\n\r\n// 'TGFyYXZlbA=='\r\n```\r\n\r\n#### toHtmlString\r\n\r\nThe `toHtmlString` method converts the string instance to an instance of HTMLElement, which may be displayed in HTML:\r\n\r\n```js\r\nStr.of('<input type=\"text\" placeholder=\"Hello\">').toHtmlString();\r\n\r\n<input type=\"text\" placeholder=\"Hello\">\r\n```\r\n\r\nIf no valid HTML is provided to the method, the method returns an instance of `string`:\r\n\r\n```js\r\nStr.of('Hello').toHtmlString();\r\n\r\n// 'Hello'\r\n```\r\n\r\n#### trim\r\n\r\nThe `trim` method trims the given string:\r\n\r\n```js\r\nStr.of('  Laravel  ').trim();\r\n\r\n// 'Laravel'\r\n```\r\n\r\n```js\r\nStr.of('/Laravel/').trim('/');\r\n\r\n// 'Laravel'\r\n```\r\n\r\n#### ucfirst\r\n\r\nThe `ucfirst` method returns the given string with the first character capitalized:\r\n\r\n```js\r\nStr.of('foo bar').ucfirst();\r\n\r\n// 'Foo bar'\r\n```\r\n\r\n#### ucwords\r\n\r\nThe `ucwords` method capitalize the first character of each word in a string:\r\n\r\n```js\r\nStr.of('foo bar').ucwords();\r\n\r\n// 'Foo Bar'\r\n```\r\n\r\nYou can also a custom separator:\r\n\r\n```js\r\nStr.of('foo-bar').ucwords('-');\r\n\r\n// 'Foo-Bar'\r\n```\r\n\r\n#### ucsplit\r\n\r\nThe `ucsplit` method splits the given string into an array by uppercase characters:\r\n\r\n```js\r\nStr.of('Foo Bar').ucsplit();\r\n\r\n// ['Foo', 'Bar']\r\n```\r\n\r\n#### unwrap\r\n\r\nThe `unwrap` method removes the specified strings from the beginning and end of a given string:\r\n\r\n```js\r\nStr.of('-Laravel-').unwrap('-');\r\n\r\n// 'Laravel'\r\n```\r\n\r\n```js\r\nStr.of('{framework: \"Laravel\"}').unwrap('{', '}');\r\n\r\n// 'framework: \"Laravel\"'\r\n```\r\n\r\n#### upper\r\n\r\nThe `upper` method converts the given string to uppercase:\r\n\r\n```js\r\nStr.of('laravel').upper();\r\n\r\n// 'LARAVEL'\r\n```\r\n\r\n#### when\r\n\r\nThe `when` method invokes the given closure if a given condition is true.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('Taylor').when(true, (string) => string.append(' Otwell'));\r\n\r\n// 'Taylor Otwell'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `when` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n```js\r\nStr.of('Taylor').when(false, (string) => string.append(' Otwell'), (string) => string.append(' Swift'));\r\n\r\n// 'Taylor Swift'\r\n```\r\n\r\n#### unless\r\n\r\nThe `unless` method invokes the given closure if a given condition is false.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('Taylor').unless(false, (string) => string.append(' Otwell'));\r\n\r\n// 'Taylor Otwell'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `unless` method.\r\nThis closure will execute if the condition parameter evaluates to true.\r\n\r\n#### whenContains\r\n\r\nThe `whenContains` method invokes the given closure if the string contains the given value.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('tony stark').whenContains('tony', (string) => string.title());\r\n\r\n// 'Tony Stark'\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string contains any of the values in the array:\r\n\r\n```js\r\nStr.of('tony stark').whenContains(['tony', 'hulk'], (string) => string.title());\r\n\r\n// Tony Stark\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenContains` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenContainsAll\r\n\r\nThe `whenContainsAll` method invokes the given closure if the string contains all the given sub-strings.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('tony stark').whenContainsAll(['tony', 'stark'], (string) => string.title());\r\n\r\n// 'Tony Stark'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenContainsAll` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenEmpty\r\n\r\nThe `whenEmpty` method invokes the given closure if the string is empty.\r\nIf the closure returns a value, that value will also be returned by the `whenEmpty` method.\r\nIf the closure does not return a value, the fluent string instance will be returned:\r\n\r\n```js\r\nStr.of('  ').whenEmpty((string) => string.trim().prepend('Laravel'));\r\n\r\n// 'Laravel'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenEmpty` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenNotEmpty\r\n\r\nThe `whenNotEmpty` method invokes the given closure if the string is not empty.\r\nIf the closure returns a value, that value will also be returned by the `whenNotEmpty` method.\r\nIf the closure does not return a value, the fluent string instance will be returned:\r\n\r\n```js\r\nStr.of('Framework').whenNotEmpty((string) => string.prepend('Laravel '));\r\n\r\n// 'Laravel Framework'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenNotEmpty` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenStartsWith\r\n\r\nThe `whenStartsWith` method invokes the given closure if the string starts with the given sub-string.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('disney world').whenStartsWith('disney', (string) => string.title());\r\n\r\n// 'Disney World'\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string contains any of the values in the array:\r\n\r\n```js\r\nStr.of('disney world').whenStartsWith(['hello', 'disney'], (string) => string.title());\r\n\r\n// 'Disney World'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenStartsWith` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenDoesntStartWith\r\n\r\nThe `whenDoesntStartWith` method invokes the given closure if the string does not start with the given sub-string.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('disney world').whenDoesntStartWith('hello', (string) => string.title());\r\n\r\n// 'Disney World'\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string does not contain any of the values in the array:\r\n\r\n```js\r\nStr.of('disney world').whenDoesntStartWith(['hello', 'world'], (string: Stringable) => string.title());\r\n\r\n// Tony Stark\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenDoesntStartWith` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenEndsWith\r\n\r\nThe `whenEndsWith` method invokes the given closure if the string ends with the given sub-string.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('disney world').whenEndsWith('world', (string) => string.title());\r\n\r\n// 'Disney World'\r\n```\r\n\r\n#### whenDoesntEndWith\r\n\r\nThe `whenDoesntEndWith` method determines if the given string doesn't end with a given substring:\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('disney world').whenDoesntEndWith('land', (string) => string.title());\r\n\r\n// 'Disney World'\r\n```\r\n\r\nYou may also pass an array of values to determine if the given string does not end with any of the values in the array:\r\n\r\n```js\r\nStr.of('disney world').whenDoesntEndWith(['land', 'moon'], (string) => string.title());\r\n\r\n// true\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenDoesntEndWith` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenExactly\r\n\r\nThe `whenExactly` method invokes the given closure if the string exactly matches the given string.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('laravel').whenExactly('laravel', (string) => string.title());\r\n\r\n// 'Laravel'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenExactly` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenNotExactly\r\n\r\nThe `whenNotExactly` method invokes the given closure if the string does not exactly match the given string.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('framework').whenNotExactly('laravel', (string) => string.title());\r\n\r\n// 'Framework'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenNotExactly` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenIs\r\n\r\nThe `whenIs` method invokes the given closure if the string matches a given pattern.\r\nAsterisks may be used as wildcard values.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('foo/bar').whenIs('foo/*', (string) => string.append('/baz'));\r\n\r\n// 'foo/bar/baz'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenIs` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenIsAscii\r\n\r\nThe `whenIsAscii` method invokes the given closure if the string is 7-bit ASCII.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('laravel').whenIsAscii((string) => string.title());\r\n\r\n// 'Laravel'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenIsAscii` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenIsUlid\r\n\r\nThe `whenIsUlid` method invokes the given closure if the string is a valid ULID.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('01gd6r360bp37zj17nxb55yv40').whenIsUlid((string) => string.substr(0, 8));\r\n\r\n// '01gd6r36'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenIsUlid` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenIsUuid\r\n\r\nThe `whenIsUuid` method invokes the given closure if the string is a valid UUID.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('a0a2a2d2-0b87-4a18-83f2-2529882be2de').whenIsUuid((string) => string.substr(0, 8));\r\n\r\n// 'a0a2a2d2'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenIsUuid` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### whenTest\r\n\r\nThe `whenTest` method invokes the given closure if the string matches the given regular expression.\r\nThe closure will receive the fluent string instance:\r\n\r\n```js\r\nStr.of('laravel framework').whenTest(/laravel/, (string) => string.title());\r\n\r\n// 'Laravel Framework'\r\n```\r\n\r\nIf necessary, you may pass another closure as the third parameter to the `whenTest` method.\r\nThis closure will execute if the condition parameter evaluates to false.\r\n\r\n#### wordCount\r\n\r\nThe `wordCount` method returns the number of words that a string contains:\r\n\r\n```js\r\nStr.of('Hello, world!').wordCount();\r\n\r\n// 2\r\n```\r\n\r\n#### words\r\n\r\nThe `words` method limits the number of words in a string. If necessary, you may specify an additional string that will be appended to the truncated string:\r\n\r\n```js\r\nStr.of('Perfectly balanced, as all things should be.').words(3, ' >>>');\r\n\r\n// 'Perfectly balanced, as >>>'\r\n```\r\n\r\n### Miscellaneous\r\n\r\n#### dd\r\n\r\nThe `dd` method dumps the given string and end execution of the script:\r\n\r\n```js\r\nStr.of('Laravel').dd();\r\n\r\n// 'Laravel'\r\n```\r\n\r\nIf you do not want to halt the execution of your script, use the `dump` function instead.\r\n\r\n#### dump\r\n\r\nThe `dump` method dumps the given string to the console:\r\n\r\n```js\r\nStr.of('Laravel').dump();\r\n\r\n// 'Laravel'\r\n```\r\n\r\n#### toString\r\n\r\nGet the raw string value.\r\n\r\n```js\r\nStr.of('Laravel').toString();\r\n\r\n// 'Laravel'\r\n```\r\n\r\n#### toInteger\r\n\r\nThe `toInteger` method returns the underlying string value as an integer.\r\n\r\n```js\r\nStr.of('1').toInteger();\r\n\r\n// 1\r\n```\r\n\r\n```js\r\nStr.of('Laravel').toInteger();\r\n\r\n// 0\r\n```\r\n\r\nYou can specify the base (2-36) for conversion. When b","readmeFilename":"README.md"}