CHANGELOG.md
1 # Changelog 2 3 All notable changes to this project will be documented in this file. 4 5 The format is based on [Common Changelog](https://common-changelog.org/), and 6 this project adheres to 7 [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 8 9 ## [0.4.3] - 2024-01-25 10 11 _Persist state to Redis._ 12 13 ### Added 14 15 - You can now persist state to Redis! Use the `--persist-to-redis` flag with 16 [the connection string to your Redis 17 instance](https://docs.rs/redis/latest/redis/#connection-handling) and the sink 18 will store its state there. Data is persisted under the `apibara:sink:{sink_id}` 19 key and you can easily manage it with `redis-cli`. 20 21 ## [0.4.2] - 2024-01-19 22 23 _Improve `--allow-net` flag usage._ 24 25 ### Changed 26 27 - When the `--allow-net` flag is used and the value passed to it is an empty 28 string, treat it as equivalent to allowing any host. This is especially useful 29 if you're setting the flag with the `ALLOW_NET` environment variable. 30 31 ## [0.4.1] - 2024-01-16 32 33 _Enable network access._ 34 35 ### Added 36 37 - Indexers can now access the network to make HTTP/TCP calls. Use the 38 `--allow-net` flag without arguments to allow connecting to any address, or 39 restrict access to selected domains by specifying the domains as comma-separated 40 values. 41 42 ## [0.4.0] - 2024-01-13 43 44 _Introduce factory mode to dynamically update the stream filter._ 45 46 ### Added 47 48 - Introduce factory mode. Use this to dynamically update the stream filter, for 49 example to start receiving data from a smart contract deployed by another smart 50 contract. Enable factory mode by exporting a `factory` function from your script. 51 - The sink now emits OpenTelemetry metrics to track the sync status. 52 53 ### Changed 54 55 - The status response from the status server now includes the chain's head. 56 57 ### Fixed 58 59 - Fixed an issue with the status server response timing out during the initial sync. 60 61 ## [0.3.8] - 2023-12-02 62 63 _Index data in a specific block range._ 64 65 ### Added 66 67 - Add a new `--ending-block` (`endingBlock` if configured from the script) 68 option to stop the indexer at a specific block. 69 70 ## [0.3.7] - 2023-11-30 71 72 _Control indexer timeouts._ 73 74 ### Added 75 76 - Add new `--script-load-timeout-seconds` and 77 `--script-transform-timeout-seconds` options to control the maximum time the 78 indexer script has to initialize and transform data respectively. 79 80 ## [0.3.6] - 2023-11-16 81 82 _Add new environment-related options._ 83 84 ### Added 85 86 - Add new `--allow-env-from-env` flag to allow the indexer script to access 87 the parent process environment variables. Users can pass a list of 88 comma-separated variables to this option. 89 90 ### Changed 91 92 - Cleanup the default logs to only show the current block number. 93 - To restore the previous, more detailed logs, set the log level to debug. 94 95 ## [0.3.5] - 2023-11-11 96 97 _Fix an issue on Linux._ 98 99 ### Fixed 100 101 - Link against GLIBC 3.5. The most recent build was linking against GLIBC 3.8 102 which caused some issues on non-rolling release distributions. 103 104 ## [0.3.4] - 2023-11-07 105 106 _Improve performance for data-heavy indexers._ 107 108 ### Added 109 110 - Update Starknet's event filter to support the new `includeTransaction`, 111 and `includeReceipt` options. These options control whether the server will 112 send the transaction and/or receipt that generated an event. For indexers 113 that don't need this data, toggling this option on can improve performance 114 drastically. 115 116 ### Changed 117 118 - Update the Deno runtime to `deno_core v0.244` and `deno_runtime v0.130`. 119 - Use the new 120 [`#[op2]`](https://docs.rs/deno_core/0.224.0/deno_core/attr.op2.html) macro 121 to exchange data between Deno and Rust. Data serialization and 122 deserialization between the sink and the script is now faster. 123 124 ## [0.3.3] - 2023-10-27 125 126 _Fix exit code on disconnect._ 127 128 ### Fixed 129 130 - In some cases, the sink would exit with a `0` exit code on error. This 131 version ensures that the sink will return a non-zero exit code on all 132 errors. 133 134 ## [0.3.2] - 2023-10-24 135 136 _Error message improvements._ 137 138 ### Changed 139 140 - This version changes how errors are handled to improve error messages. 141 Errors now show more context and additional information that will help 142 developers debug their indexers. 143 - The sink will return a non-zero error code on failure. We use the standard 144 unix exit codes in `sysexit.h`. Developers can use exit codes to decide 145 whether to restart the indexer or not. 146 147 ## [0.3.1] - 2023-10-11 148 149 _Disconnect when stream hangs._ 150 151 ### Added 152 153 - Add a new `--timeout-duration-seconds` flag to control the timeout between 154 stream messages. If the stream doesn't receive any message in this interval, 155 the sink exits. Defaults to 45 seconds. 156 157 ## [0.3.0] - 2023-09-16 158 159 _Introduce sink status gRPC service._ 160 161 ### Changed 162 163 - The status server is now a gRPC service. This service returns the sink 164 indexing status, the starting block, and the chain's current head block 165 from the upstream DNA service. 166 - The status server now binds on a random port. This means it's easier to run 167 multiple sinks at the same time. 168 169 ## [0.2.0] - 2023-08-21 170 171 _This release improves the developer experience when running locally._ 172 173 ### Added 174 175 - Add a `--persist-to-fs=my-dir` flag to persist the indexer's state to the 176 filesystem. This option creates a new directory (specified by the user) and 177 writes the indexer's current state to a file, with one file per indexer. 178 Developers shouldn't use this option for production, but only for 179 development since it lacks any locking mechanism to prevent multiple copies 180 of the same indexer running at the same time. 181 182 ### Changed 183 184 - The transform function now is invoked with a single block of data. 185 - In "raw mode", each value returned by the transform function is sent as an 186 individual request. 187 188 ## [0.1.0] - 2023-08-08 189 190 _First tagged release 🎉_ 191 192 [0.4.3]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.4.3 193 [0.4.2]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.4.2 194 [0.4.1]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.4.1 195 [0.4.0]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.4.0 196 [0.3.8]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.8 197 [0.3.7]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.7 198 [0.3.6]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.6 199 [0.3.5]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.5 200 [0.3.4]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.4 201 [0.3.3]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.3 202 [0.3.2]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.2 203 [0.3.1]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.1 204 [0.3.0]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.3.0 205 [0.2.0]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.2.0 206 [0.1.0]: https://github.com/apibara/dna/releases/tag/sink-webhook/v0.1.0