fix!: refactor v1 internal state and options logic #780
+346
−348
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refactoring v1 code to align with the changes in #779.
Changes of note:
throw
that limits UUID-generation rate, and instead reset thenode
.Note: While working on this new logic I realized the semantics of the
clockseq
field were unnecessarily complicated. (e.g. incrementing it on clock regression rather than randomizing). So (for UUIDs generated using internal state) theclockseq
andnode
fields are treated as a singlerand
field (v7). They are initialized and updated at the same time - namely if there's a clock regression, or the generation rate exceeds the clock resolution. This significantly simplifies the state transition logic.