You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add `ErrorHandler` methods `isShuttingDown()`, `isShuttingDownOnError()` and `getExitStatus()`
20
+
- Destructors can use these via the `Err` facade to determine the script's exit status during shutdown and respond accordingly
21
+
- Add `Arr::setIf()`
22
+
- Add `getContainer()` to builders
23
+
24
+
#### `Curler`
25
+
26
+
- Add `CurlerInterface::withRequest()` so middleware can use `Curler` to inspect arbitrary requests
27
+
28
+
#### `Sync`
29
+
30
+
- Add `SyncStore::getBinaryRunUuid()` and remove `$binary` parameter from `getRunUuid()`
31
+
- Add `SyncStore::getEntityId()`
32
+
- Add `SyncStoreInterface` and adopt where appropriate
33
+
34
+
#### `PHPStan`
35
+
36
+
- Add PHPStan extensions:
37
+
-`GetCoalesceRule` to report unnecessary use of `Get::coalesce()`
38
+
-`ArrWhereNotEmptyMethodReturnTypeExtension` to resolve return type of `Arr::whereNotEmpty()`, including for constant arrays
39
+
-`ArrWhereNotNullMethodReturnTypeExtension` to similarly resolve return type of `Arr::whereNotNull()`
40
+
41
+
#### `sli`
42
+
43
+
- Add `--no-declare` option to `sli generate builder`
44
+
45
+
### Changed
46
+
47
+
#### `Cache`
48
+
49
+
-**Automatically remove expired items from `CacheStore`**
50
+
- Adopt `CacheStoreInterface` instead of `CacheStore` where appropriate
51
+
52
+
#### `Container`
53
+
54
+
- Resolve internal interfaces to internal implementations by default, e.g. resolve `CacheStoreInterface` to `CacheStore` if it hasn't been bound to something else
55
+
- Move `RequiresContainer` to `Container` namespace
56
+
- In `RequiresContainer::requireContainer()`, fall back to the global container if it exists, otherwise create a standalone container (unless `$createGlobalContainer = true`)
57
+
58
+
#### `Core`
59
+
60
+
- Rename builder methods for consistency and clarity:
61
+
-`build()` -> `create()`
62
+
-`go()` -> `build()`
63
+
- Move `Http` utility class to `Http` namespace
64
+
- Move `Get` methods to new `FormData` class in `Http` namespace:
65
+
-`query()` -> `getQuery()`
66
+
-`formData()` -> `getValues()`
67
+
-`data()` -> `getData()`
68
+
- Rename `QueryFlag` to `FormDataFlag` and move to `Http` namespace
69
+
- Rename `Arr::same()` to `Arr::sameValues()` and add `Arr::same()`, which also checks keys (as one would expect)
70
+
- Simplify `Sys::handleExitSignals()`
71
+
- Move `Char` constants to `Str`
72
+
- Move `SortFlag` constants to `Arr`
73
+
- Rename `AbstractStore::requireUpsert()` to `assertCanUpsert()` and return `void`
74
+
75
+
#### `Curler`
76
+
77
+
- Surface middleware messages via `Curler::getLastRequest()` and `Curler::getLastResponse()`
78
+
- Pass `$curler` to `Curler` cache key callbacks
79
+
- Add signature to `$next` closure in `Curler` middleware annotations
80
+
- Allow `Curler`'s user agent header to be suppressed
81
+
- Rename `CurlerInterface::withQueryFlags()` to `CurlerInterface::withFormDataFlags()`
82
+
- Rename `CurlerBuilder::queryFlags()` to `CurlerBuilder::formDataFlags()`
83
+
84
+
#### `Sync`
85
+
86
+
- Revert serialization changes in @9344acb3, where containers are propagated via serialization rules, in favour of passing an optional entity store to serialize operations
87
+
- This allows serialization of possibly-detached entities--that may belong to a namespace registered with a store they can't locate--without making serialization rules container-dependent
- Fix `Arr::rename()` bug when renaming a key with a `null` value
146
+
- Remove `of object` from container method templates to fix static analysis errors when binding or resolving interfaces
147
+
- Fix issue where serialization rules applied to date and time values trigger an exception
148
+
- Fix issue where nested value paths may be incorrect during serialization, preventing rules from applying correctly
149
+
150
+
### Security
151
+
152
+
- Add "unstable" HTTP header group and use it to filter headers for inclusion in `Curler`'s default cache key instead of "sensitive" headers, which had non-obvious security implications by default
153
+
13
154
## [v0.99.22] - 2024-05-21
14
155
15
156
### Added
@@ -2550,6 +2691,7 @@ This is the final release of `lkrms/util`. It is moving to [Salient](https://git
2550
2691
2551
2692
- Allow `CliOption` value names to contain arbitrary characters
0 commit comments