# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [v0.0.55] - 2023-09-11
### Add
- add TryJoinHostPort func
- add before and after func
### Changing
- changing package name
### Fix
- fix test
- fix race condition
### Introduce
- introduce func trace
### Merge
- Merge branch 'main' into introduce_func_trace
### Snapshot
- snapshot memory
### Update
- update variadic param usage
### Use
- use lock
### Using
- using custom error
## [v0.0.54] - 2023-09-04
### Fix
- fix HasCapNetRaw err
### Keep
- keep a changelog ([#251](https://github.com/projectdiscovery/utils/issues/251))
### Update
- update CHANGELOG.md
## [v0.0.53] - 2023-08-29
### Fix
- fix query and fragment issue
### Resolve
- resolve merge conflicts
### Revert
- revert change & fix unit test
## [v0.0.52] - 2023-08-25
### Add
- add HasPrefixAnyI
- add test
### Allow
- allow w/ unsafe
### Decode
- decode unicode chars
## [v0.0.51] - 2023-08-23
### Adding
- adding mutex
### Create
- Create dep-auto-merge.yml
### Excluding
- excluding read-only folders on windows
### Fix
- fix race in synclockMap during Del()
- fix isWritable func
- fix data race warning at connpool
### Improve
- improve home folder detection
### Make
- make it public
### Merge
- Merge branch 'main' into issue-234-data-race
- Merge branch 'main' into issue-234-data-race
### Update
- Update dependabot.yml
### Use
- use os agnostic env variables
## [v0.0.50] - 2023-08-18
### Add
- add default values for TLS_VERIFY and DEBUG
- add UpdateWithEnv func
### Introduce
- introduce generic lockable type
### Move
- move to env
### Support
- support multiple vars
### Using
- using expand prefix
## [v0.0.49] - 2023-08-10
### Fixing
- Fixing conditional build ([#238](https://github.com/projectdiscovery/utils/issues/238))
## [v0.0.48] - 2023-08-09
### Add
- add default permissions
### Adding
- adding value or default context helper
### Fixing
- fixing type
### Merge
- Merge branch 'main' into feat-ctx-or-default
## [v0.0.47] - 2023-08-04
## [v0.0.46] - 2023-07-31
### Add
- add SyncLockMap ctor func
- add FileExistsIn func
### Fix
- fix lint
- fix lint err
### Rejecting
- rejecting allowed relative paths
### Small
- small refactor
### Using
- using variadic options
## [v0.0.45] - 2023-07-28
### Add
- add tests
- add version bump script
### Adding
- adding big number test
### Consider
- consider url ^// as relative
## [v0.0.44] - 2023-07-17
### Adding
- adding arm6
- adding unix 386 fallback
### Using
- using arm
## [v0.0.43] - 2023-07-14
### Add
- add logger to join & split workers
- add channel utils
### Bumping
- bumping go version
### Excluding
- excluding linux with g01.20 with ip extensions
### Fixing
- fixing bugs
### Merge
- Merge branch 'main' into feat-onetimepool
- Merge branch 'main' into feat-onetimepool
- Merge branch 'main' into feat-onetimepool
### Minor
- minor lint stuff
### Moving
- Moving jarm helper to utils
### Release
- release dialer references
### Update
- Update README.md
## [v0.0.42] - 2023-07-12
### Add
- add metrics and model_selection funcs
- add mlutils
### Fixing
- fixing paths
## [v0.0.41] - 2023-07-08
### Add
- add OpenOrCreateFile func
- add guard and remove source dir option
- add async/await
### Fix
- fix MigrateDir func
### Fixing
- fixing func + tests
### Improving
- improving equality check
### Introduce
- introduce MustMigrateDir func
### Removing
- removing dev file
## [v0.0.40] - 2023-06-30
### Add
- add iteration support to orderedparams
- add len method to orderedMap
- add helper for ordered parameters
### Fix
- fix orderMap set method
- fix param order in unit tests
### Fixing
- fixing lint
### More
- more changes
### Orderedparams
- orderedparams deep copy
### Support
- support days unit while parsing time string
### Update
- update and getall methods
## [v0.0.39] - 2023-06-22
### Adding
- adding test with interval
### Changing
- changing endpoint
### Trim
- trim character
## [v0.0.38] - 2023-06-14
### Add
- Add update file permission functio
- Add tests and comment about umask
- Add unix file permissions
### Add
- add common regex patterns
### Adding
- Adding mutex on read ([#176](https://github.com/projectdiscovery/utils/issues/176))
### Adding
- adding note
### Go
- go naming
### Merge
- Merge branch 'main' into pr/163
### Restoring
- restoring cond compilation
### Run
- Run tests only on linux and darwin
### Small
- small refactor
### Update
- Update create file to create temp file to ingore error on windows
## [v0.0.37] - 2023-06-06
### Accept
- accept toolname as param
### Add
- add doc for UserConfigDirOrDefault
- add MigrateDir func
- add UserAppConfigDirOrDefault func
- add UserConfigDirOrDefault func
### Commit
- commit to last commit
- commit to last commit
### Fix
- fix lint err
### Minimize
- minimize return
### Minor
- minor improvements
### Use
- use os
## [v0.0.36] - 2023-05-31
### Add
- add test for syncLockMap
- add Clone to generic map
### Fix
- fix lint error
### Skip
- skip windows race tests
### Use
- use stdlib maps.clone
## [v0.0.35] - 2023-05-30
### Add
- Add file size converter
### Add
- add darwin case to test
- add platform agnostic syscall loadlibrary func
### Use
- use osutils
## [v0.0.34] - 2023-05-28
### Add
- add GetSortedKeys function
### Adding
- adding batcher mechanism
### Changing
- changing condition
### Fixing
- fixing random visit test
- fixing condition
## [v0.0.33] - 2023-05-25
### Add
- add healtcheck api
- add dns resolver
- add connection check hc util
- add PATH env var
- add env healthcheck functionality util
- add exec name to default path list
- add file permission check
### Code
- code refactor
### Fix
- fix ulimit err
### Fixing
- fixing conn error
### Rename
- rename filenames
- rename file to path to make it more generic
### Update
- update test host
## [v0.0.32] - 2023-05-16
### Visit
- Visit helpers + SizeOf ([#152](https://github.com/projectdiscovery/utils/issues/152))
## [v0.0.31] - 2023-05-14
### Add
- add test cases
### Add
- Add ability to set config from env vars
### Fix
- fix ranging over channel
### Rename
- rename func
## [v0.0.30] - 2023-05-09
## [v0.0.29] - 2023-05-08
### Fixing
- Fixing resp body reuse ([#147](https://github.com/projectdiscovery/utils/issues/147))
## [v0.0.28] - 2023-05-06
### Add
- add gitignore
### Adding
- adding tests
- adding safe dereferencing helper
## [v0.0.27] - 2023-05-05
### Check
- Check for Administrator on Windows
### Cleaning
- cleaning up + tests
### Fix
- fix removing semicolon while decoding params ([#145](https://github.com/projectdiscovery/utils/issues/145))
### Fixing
- fixing error
## [v0.0.26] - 2023-04-29
## [v0.0.25] - 2023-04-23
### Add
- Add body in updater error msg
### Fix
- fix panic on err and version empty
## [v0.0.24] - 2023-04-20
### Fix
- fix empty http resp with proxy ([#138](https://github.com/projectdiscovery/utils/issues/138))
## [v0.0.23] - 2023-04-19
### Adding
- Adding process utils
## [v0.0.22] - 2023-04-19
### Add
- add version param & deprecate function
- add path to callback func
- add support for custom org
### Adding
- adding IndexAny
### Fix
- fix lint + tests
### Remove
- remove unused argument from versioncheck
### Render
- render theme update
### Replace
- replace status codes with http.xx variables
### Update
- update if tool installed from dev
## [v0.0.21] - 2023-04-18
### Bug
- bug fix + adds more testcases
### Fix
- fix domain parse error
## [v0.0.20] - 2023-04-11
### Adding
- adding int helper
### Adds
- adds proxy utils
- adds proxy utils
### Fix
- fix send on closed channel
### Fixing
- fixing depbot branch ([#118](https://github.com/projectdiscovery/utils/issues/118))
### Move
- move burp proxy check to proxyutils
## [v0.0.19] - 2023-03-29
### Encoding
- encoding semicolon on windows
## [v0.0.18] - 2023-03-23
### Added
- added also parsing
### Adding
- Adding nil check on url Params
- Adding slice clone helper
### Bug
- bug fix
### Code
- code refactoring
### Fix
- fix on ip return on for loop
### Guard
- guard against concurrent reset ([#109](https://github.com/projectdiscovery/utils/issues/109))
### Ipv4
- ipv4 logic
### Logic
- logic change
### Removing
- removing err details
### Short
- short ip logic
### Unit
- unit test
- unit tests
## [v0.0.17] - 2023-03-18
### Add
- add posix support
### Added
- added unit tests
### Adding
- adding linux + generic interface
- adding console example
- adding keypress reader (win)
- adding isprintable/isctrlc + tests
### Bug
- bug fix upgrade not using timeout
### Chagne
- chagne download asset logic
### ContainsAnyI
- ContainsAnyI added
### Creating
- creating darwin placeholder
### Enabling
- enabling proxy + use defaults
### Finalizing
- finalizing multiplatform keypress
### Fix
- fix resolve conflicts
- fix asset name formation logic
### Fixing
- fixing windows console support
### Increasing
- increasing test coverage
### Merge
- Merge branch 'main' into update-utils-bug-fix
- Merge branch 'main' into feat-console-keypress
### Moving
- moving win syscall
- moving errors to common source file
### Read
- read tagName from method
### Remove
- remove redundant code
### Replacing
- replacing redundant logic with posix constants
## [v0.0.16] - 2023-03-14
### Adds
- adds release notes,version check and more
### Bump
- Bump github.com/ulikunitz/xz from 0.5.7 to 0.5.8 ([#102](https://github.com/projectdiscovery/utils/issues/102))
### Exit
- exit if already updated
### Only
- only skip cert validation in version check
### Selfupdate
- selfupdate callback utils
### Updater
- updater utils
## [v0.0.15] - 2023-03-12
### Removing
- Removing capabilities from linux armv7l
## [v0.0.14] - 2023-03-01
### Adding
- adding key lookup with value helper
### Merge
- Merge permission_darwin.go in permission_other.go
### Remove
- Remove impossible unix buildconstraint
## [v0.0.13] - 2023-02-26
### Added
- added unit tests
- added unit tests
- added generic functions
### Adding
- adding new line
### Check
- check is all have zero items
### Implemented
- implemented fistNonZero
### Moved
- moved all to generic
### Started
- started unit test
### Unit
- unit test
## [v0.0.12] - 2023-02-26
### Bump
- Bump golang.org/x/crypto from 0.0.0-20210921155107-089bfa567519 to 0.1.0 ([#93](https://github.com/projectdiscovery/utils/issues/93))
## [v0.0.11] - 2023-02-24
### Bump
- Bump golang.org/x/net from 0.1.0 to 0.7.0
### Fix
- fix invalid url
### Rename
- rename test variable
### Update
- update url README.md
## [v0.0.10] - 2023-02-12
### Add
- Add truncate test
### Extending
- extending test coverage
### Fix
- Fix issue [#67](https://github.com/projectdiscovery/utils/issues/67)
### Fixing
- fixing typo
## [v0.0.9] - 2023-02-09
### Add
- add url decode test
### Minor
- minor changes
### Use
- use standard url enc format
## [v0.0.8] - 2023-02-09
### Adding
- adding note for goling
- adding synclock tests
- adding sync/lock capabilities to generic map
- adding syncmap prototype
- adding permission to FreeBSD
- adding reverse ptr
### Adding
- Adding proxy utils
### Bug
- bug fixes and improvements
### Bugfix
- bugfix + tests
### Bumping
- bumping go version in GH actions
- bumping go to 1.19
### Fix
- fix missing slash
- fix lint error
### Fixing
- fixing lint errors
### Map
- map with generics and native helpers
### Merge
- Merge branch 'main' into issue-62-rev-ptr
### Minor
- minor improvement & adds documentation
### Small
- small refactor
### Struct
- struct private field get/set via reflect
## [v0.0.7] - 2023-02-03
### Added
- added count with multiple files
- added also count line with separator
### Adding
- adding new err with fmt type
### Bufio
- bufio reader optimizations
### Check
- check on separator
### Code
- code refactor
- code refactoring on CountLinesWithSeparator and CountLines
- code refactor on CountLineLogic()
- code optiomizations
### Comments
- comments + fix
### Finalizing
- finalizing implementation
### Fix
- fix on action error
### Fixed
- fixed problem with windows checks
### Fixes
- fixes and optimizations
### Implemented
- implemented unit tests
- implemented countline feature
### Integration
- integration test files
### Lint
- lint error
### Moving
- moving walk to utils
### Refactoring
- refactoring on Error field
### Removed
- removed old version code
### Removing
- removing third party api test
### Tests
- tests refactoring
## [v0.0.6] - 2023-01-23
### Add
- add context utils
### Addind
- addind os/arch utils
### Allow
- allow localhost as valid hostname
### Fix
- fix lint error
- fix nil pointer dereference in userinfo
### Lint
- lint bypass
### Minor
- minor bug fixes
### New
- new url.URL wrapper
### Remove
- remove omithost (only available in 1.19)
### Update
- update params description
### Use
- use require for unit tests
## [v0.0.5] - 2023-01-20
### Adding
- adding support for nil errors ([#52](https://github.com/projectdiscovery/utils/issues/52))
## [v0.0.4] - 2023-01-19
### Add
- add parameter parsing tests
- add getparams function
### Adding
- adding helpers + tests
- adding extra slice helpers
- adding slice equality helper
- adding port helpers
- adding file helpers
- adding reusable reader
### Adding
- Adding longest sequence helper
### Adds
- adds url encoders
- adds package boolean
- adds errorutils
- adds release checks (closes [#19](https://github.com/projectdiscovery/utils/issues/19))
### Better
- better implementation on isInternal logic
- better login on IsInternal function
### Code
- code formatting
### Created
- created IsInternal functions for ipv4 and ipv6
### Errorutil
- errorutil enriched
### Fix
- fix lint error
- fix + error check
### Fixes
- fixes on package references
### Fixing
- fixing autorelease
- fixing tests
- fixing time.sleep go routine leaks via context with timeout
### Go
- go mod tidy
### Lint
- lint fix and tests
### Moved
- moved naabu routing in utils
### Reader
- reader utils + reusablereadcloser
### Remove
- remove lenreader & add unit tests
- remove extra whitespaces
### Removed
- removed gologger
- removed debug instructions
- removed unused struct
### Removing
- removing redundant check
### Return
- return err
### Unit
- unit tests on IsInternal function
### Updated
- updated sleepTime in TestDeleteFilesOlderThan func
- updated sleep time to 10seconds
### Used
- used log.Fatal, dont create problems with mac action on build
- used panic instead of log.Fatal
## [v0.0.3] - 2022-11-11
### Code
- code refactoring
### Fix
- Fix typo
### Fixing
- fixing linux errors
- fixing match condition
### Merge
- Merge branch 'main' into move-packages-from-naabu
### Misc
- misc updates
### Move
- move packages from naabu
### Renaming
- renaming race to raceutil
### Test
- test cases addition
### Update
- Update mapsutil [#13](https://github.com/projectdiscovery/utils/issues/13) ([#14](https://github.com/projectdiscovery/utils/issues/14))
## [v0.0.1] - 2022-11-03
## v0.0.2 - 2022-11-03
### Added
- added missing label and test action
- added github workflow
- added logutils
### Added
- Added weekly tag + release automation ([#9](https://github.com/projectdiscovery/utils/issues/9))
### CodeQL
- CodeQL Analysis on push
### Fixing
- fixing windows test
### Merge
- Merge branch 'main' into issue-213/logutils
### Misc
- misc changes
### Removed
- removed push from codeql workflow
### Removing
- removing empty line
### Wo
- wo global functions for log util and test cases
[Unreleased]: https://github.com/projectdiscovery/utils/compare/v0.0.55...HEAD
[v0.0.55]: https://github.com/projectdiscovery/utils/compare/v0.0.54...v0.0.55
[v0.0.54]: https://github.com/projectdiscovery/utils/compare/v0.0.53...v0.0.54
[v0.0.53]: https://github.com/projectdiscovery/utils/compare/v0.0.52...v0.0.53
[v0.0.52]: https://github.com/projectdiscovery/utils/compare/v0.0.51...v0.0.52
[v0.0.51]: https://github.com/projectdiscovery/utils/compare/v0.0.50...v0.0.51
[v0.0.50]: https://github.com/projectdiscovery/utils/compare/v0.0.49...v0.0.50
[v0.0.49]: https://github.com/projectdiscovery/utils/compare/v0.0.48...v0.0.49
[v0.0.48]: https://github.com/projectdiscovery/utils/compare/v0.0.47...v0.0.48
[v0.0.47]: https://github.com/projectdiscovery/utils/compare/v0.0.46...v0.0.47
[v0.0.46]: https://github.com/projectdiscovery/utils/compare/v0.0.45...v0.0.46
[v0.0.45]: https://github.com/projectdiscovery/utils/compare/v0.0.44...v0.0.45
[v0.0.44]: https://github.com/projectdiscovery/utils/compare/v0.0.43...v0.0.44
[v0.0.43]: https://github.com/projectdiscovery/utils/compare/v0.0.42...v0.0.43
[v0.0.42]: https://github.com/projectdiscovery/utils/compare/v0.0.41...v0.0.42
[v0.0.41]: https://github.com/projectdiscovery/utils/compare/v0.0.40...v0.0.41
[v0.0.40]: https://github.com/projectdiscovery/utils/compare/v0.0.39...v0.0.40
[v0.0.39]: https://github.com/projectdiscovery/utils/compare/v0.0.38...v0.0.39
[v0.0.38]: https://github.com/projectdiscovery/utils/compare/v0.0.37...v0.0.38
[v0.0.37]: https://github.com/projectdiscovery/utils/compare/v0.0.36...v0.0.37
[v0.0.36]: https://github.com/projectdiscovery/utils/compare/v0.0.35...v0.0.36
[v0.0.35]: https://github.com/projectdiscovery/utils/compare/v0.0.34...v0.0.35
[v0.0.34]: https://github.com/projectdiscovery/utils/compare/v0.0.33...v0.0.34
[v0.0.33]: https://github.com/projectdiscovery/utils/compare/v0.0.32...v0.0.33
[v0.0.32]: https://github.com/projectdiscovery/utils/compare/v0.0.31...v0.0.32
[v0.0.31]: https://github.com/projectdiscovery/utils/compare/v0.0.30...v0.0.31
[v0.0.30]: https://github.com/projectdiscovery/utils/compare/v0.0.29...v0.0.30
[v0.0.29]: https://github.com/projectdiscovery/utils/compare/v0.0.28...v0.0.29
[v0.0.28]: https://github.com/projectdiscovery/utils/compare/v0.0.27...v0.0.28
[v0.0.27]: https://github.com/projectdiscovery/utils/compare/v0.0.26...v0.0.27
[v0.0.26]: https://github.com/projectdiscovery/utils/compare/v0.0.25...v0.0.26
[v0.0.25]: https://github.com/projectdiscovery/utils/compare/v0.0.24...v0.0.25
[v0.0.24]: https://github.com/projectdiscovery/utils/compare/v0.0.23...v0.0.24
[v0.0.23]: https://github.com/projectdiscovery/utils/compare/v0.0.22...v0.0.23
[v0.0.22]: https://github.com/projectdiscovery/utils/compare/v0.0.21...v0.0.22
[v0.0.21]: https://github.com/projectdiscovery/utils/compare/v0.0.20...v0.0.21
[v0.0.20]: https://github.com/projectdiscovery/utils/compare/v0.0.19...v0.0.20
[v0.0.19]: https://github.com/projectdiscovery/utils/compare/v0.0.18...v0.0.19
[v0.0.18]: https://github.com/projectdiscovery/utils/compare/v0.0.17...v0.0.18
[v0.0.17]: https://github.com/projectdiscovery/utils/compare/v0.0.16...v0.0.17
[v0.0.16]: https://github.com/projectdiscovery/utils/compare/v0.0.15...v0.0.16
[v0.0.15]: https://github.com/projectdiscovery/utils/compare/v0.0.14...v0.0.15
[v0.0.14]: https://github.com/projectdiscovery/utils/compare/v0.0.13...v0.0.14
[v0.0.13]: https://github.com/projectdiscovery/utils/compare/v0.0.12...v0.0.13
[v0.0.12]: https://github.com/projectdiscovery/utils/compare/v0.0.11...v0.0.12
[v0.0.11]: https://github.com/projectdiscovery/utils/compare/v0.0.10...v0.0.11
[v0.0.10]: https://github.com/projectdiscovery/utils/compare/v0.0.9...v0.0.10
[v0.0.9]: https://github.com/projectdiscovery/utils/compare/v0.0.8...v0.0.9
[v0.0.8]: https://github.com/projectdiscovery/utils/compare/v0.0.7...v0.0.8
[v0.0.7]: https://github.com/projectdiscovery/utils/compare/v0.0.6...v0.0.7
[v0.0.6]: https://github.com/projectdiscovery/utils/compare/v0.0.5...v0.0.6
[v0.0.5]: https://github.com/projectdiscovery/utils/compare/v0.0.4...v0.0.5
[v0.0.4]: https://github.com/projectdiscovery/utils/compare/v0.0.3...v0.0.4
[v0.0.3]: https://github.com/projectdiscovery/utils/compare/v0.0.1...v0.0.3
[v0.0.1]: https://github.com/projectdiscovery/utils/compare/v0.0.2...v0.0.1