-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathCHANGELOG
172 lines (128 loc) · 7.71 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Changelog
*Functional* changes to the public interface of Redis OM for Node.js will be listed here, by version. *Non-functional* changes may also be included, if they are particularly noteworthy or might impact developers using Redis OM.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and Redis OM adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 0.4.7 - 2024-10-25
### Fixed
- Fixed all CVE issues and updated `jsonpath-plus` package to latest version
## 0.4.4 - 2024-07-15
### Added
- Added better TypeScript support for *Entity*
## 0.4.3 - 2023-10-30
### Fixed
- Fixed issue with change of casing in error message in RediSearch when calling `.dropIndex` on *Repository*
### Added
- Add `.expireAt` method to *Repository*
- Add fuzz matching for 'text' type
## 0.4.2 - 2023-07-26
### Fixed
- Fixed issue with TAGs not properly escaping question marks
## 0.4.1 - 2023-07-26
### Added
- Added new type of `number[]` which works just like `number` but against an array of them
## 0.4.0 - 2023-07-06
### Added
- Added methods to *Repository* to allow you to provide your own *entityId* instead of relying on a generated one.
- Added support for Redis clustering by passing in a Node Redis connection created with `createCluster`.
- Added better and more meaningful exceptions.
### Changed
- *Schema* now supports nested JSON via the `path` option.
- *Schema* now supports specifying the field for a Hash via the `field` option.
- *Schema* now supports `async` functions for *IdStrategy* allowing you to slow down your saves with I/O calls to generate IDs.
- *Repository* now allows adding Entities with properties that are not in the *Schema*. These can even be nested if you are using JSON.
- *Repository* can be now be constructed directly with `new` in addition to being created from a *Client* via `.fetchRepository`.
- *Repository* can now directly be handed an open Node Redis connection. No need to create a *Client* instance.
- *Client* deprecated in favor of using Node Redis connections.
### Removed
- *Breaking Change* Removed *Entity* class. While still a type, it's no longer a class and is mostly just an alias for a JavaScript object.
- *Breaking Change* Removed `.execute` method on *Client*. Use Node Redis instead.
- *Breaking Change* Removed `.createEntity` and `.createAndSave` methods on *Repository*. Entities are simply JavaScript objects—to create one just create a JavaScript object and call `.save`.
- As *Entity* is no longer a class, custom methods on an *Entity* are no longer supported.
### Fixed
- Corrected parsing where empty arrays were saved to a Hash as an empty String.
- Special characters can now, correctly, be field names
## 0.3.6 - 2022-07-12
### Changed
- *Breaking Change* Removed `.fetchMany` and replaced it with a variadic version of `.fetch`.
- Assorted internal cleanup.
- Changed test suite to use vitest.
## 0.3.5 - 2022-06-21
### Added
- Added additional field attributes to control RediSearch indexing behavior.
- Added search methods to retrieve just key name or just *entityIds* instead of the entire entity. Methods include: `.returnAllKeys`, `.returnAllIds`, `.returnFirstKey`, `.returnFirstId`, `.returnPageOfKeys`, `.returnPageOfIds`, `.returnMinKey`, `.returnMinId`, `.returnMaxKey`, `.returnMaxId`
- Added `.fetchMany` to *Repository* which variadicly takes multiple *entityIds* and returns an array of fetch entities.
### Changed
- Search methods that return a single item (like `.first`, `.min`, etc.) and can return *null* are now marked as returning *null* for TypeScript users.
- Repository `.remove` method is now variadic and takes one or more *entityIds* to remove.
## 0.3.4 - 2022-06-07
### Changed
- Added validation for 'point' fields. Throws error when provided invalid longitude or latitude.
### Fixed
- Fixed missing dependency for tslib.
## 0.3.3 - 2022-05-05
### Changed
- Reverted breaking change that changed field `type` from 'string[]' to 'array'. The correct field type is 'string[]'.
## 0.3.2 - 2022-05-03
### Changed
- *Breaking Change*: Date values are stored in EPOCH seconds to align with [date/time APPLY functions](https://redis.io/docs/stack/search/reference/aggregations/#list-of-datetime-apply-functions).
## 0.3.1 - 2022-05-02
### Fixed
- Fixed error when reading `point` containing negative value from HASH.
## 0.3.0 - 2022-04-28
### Changed
- Internal changes in preparation for adding embeddable objects.
- Performance improvements.
- Renamed and reorganized some types that might affect TypeScript users.
- Removed support for Node 12.
- Changed examples in README to assume top-level awaits are available.
### Fixed
- Fixed error in sample code when calling `.use`.
## 0.2.1 - 2022-03-30
### Added
- Added limited ability to sort search results using `.sortBy`.
- Added `.min` and `.max` which returns the *Entity* with the minimum or maximum value for a provided field.
## 0.2.0 - 2022-02-25
### Added
- Added 'point' data type that represents a spot on the globe.
- Added 'date' data type with UNIX, ISO-8601, and JavaScript flavors.
- Perform radius searches on 'point' data type using `.inRadius`.
- Perform searches on 'date' data type using `.before`, `.after`, etc.
- Issue raw RediSearch commands using `Repository.searchRaw`.
- Attach existing Node Redis connections using `.use` on *Client*. Handy if you need to do raw Redis stuff too!
- Added `.keyName` property on *Entity* that lets you to get the Redis keyname storing that *Entity*.
- Added `.expire` method to *Repository* allowing you to expire an *Entity*.
### Changed
- String fields and searches can now be set to numbers or booleans and will be coerced to a string.
- Calls to `.createIndex` will automatically reindex if the index has changed and will do nothing if the index has not changed.
- *Breaking Change*: Changed 'array' type in Schema definitions to 'string[]' in preparation for adding other types of arrays.
- *Breaking Change*: Split 'string' type into 'string' and 'text' types, representing string values that support `.eq` searches and text values that support `.match` searches.
- *Breaking Change*: Removed the `textSearch` property from strings as it was no longer needed with 'string' and 'text' types replacing it.
- *Breaking Change*: *Schema* data structure now defaults to JSON instead of HASH.
### Fixed
- Wildcard searches on text fields no longer fail.
- Tag searches now escape slash and backslash characters.
### Removed
- *Breaking Change*: `Repository` constructor cannot be directly called. Use `client.fetchRepository` instead.
## 0.1.7 - 2022-01-07
### Added
- Added `.isOpen` to *Client*
### Changed
- *Client* no longer errors when opened or closed if already opened or closed.
- Update table of contents in README.
## 0.1.6 - 2022-01-05
### Added
- Added `.return.first` and `.returnFirst` methods to search. Sometimes you really can eat just one.
### Fixed
- *Entity* now has a better default JSON serialization output.
## 0.1.5 - 2021-12-23
### Added
- Added ability to pass in initial values when creating an *Entity* with `.createEntity`.
- Added `.createAndSave` method to Repository that does exactly what you think it does.
### Changed
- More fluent interface on `.return.all`, `return.page`, and `return.count` on *Search*.
- Replace `.return` with `.returnPage` in *Search* class.
## 0.1.4 - 2021-12-17
### Added
- This CHANGELOG file because communicating changes matters.
- Ability to specify and override default stop word behavior when defining a *Schema*.
### Fixed
- Doing an exact match with a stop word used to generate a cryptic error. RediSearch does not permit searching for stop words within an exact match. This error was captured, and a better error is presented that directs the user to either change their stop words or not use stop words in their query.