/ sinks / sink-webhook / CHANGELOG.md
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