Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify the takes_value API (range-based takes_values) #2688

Closed
epage opened this issue Aug 13, 2021 Discussed in #2676 · 16 comments
Closed

Simplify the takes_value API (range-based takes_values) #2688

epage opened this issue Aug 13, 2021 Discussed in #2676 · 16 comments
Assignees
Labels
A-builder Area: Builder API C-enhancement Category: Raise on the bar on expectations E-hard Call for participation: Experience needed to fix: Hard / a lot M-breaking-change Meta: Implementing or merging this will introduce a breaking change.
Milestone

Comments

@epage
Copy link
Member

epage commented Aug 13, 2021

Discussed in #2676

Originally posted by epage August 10, 2021
Currently, we have

  • takes_value (accept a value per occurrence)
  • multiple_values (accept multiple values per occurrence)
  • min_values (minimum number of values across all occurrences)
  • max_values (maximum number of values across all occurrences)
  • number_of_values (average number of values per occurrence)

We then have to clarify how these are related to each other, for example:

NOTE: This does not implicitly set Arg::multiple(true). This is because -o val -o val is multiple occurrences but a single value and -o val1 val2 is a single occurrence with multiple values. For positional arguments this does set Arg::multiple(true) because there is no way to determine the difference between multiple occurrences and multiple values.

(taken from docs.rs, since updated to say multiple_occurrences).

I had already been brainstorming on this idea when kbknapp mentioned

I think the crux of the problem is that we previously didn’t do a good job of articulating the difference between multiple_values, multiple_occurrences, and max_values_per_occurrence.

I think we can simplify this problem down to

  • takes_values(num: impl clap::IntoRange) with
    • impl IntoRange for usize
    • impl IntoRange for ...each range type
    • The range is for values per occurrence
  • Remove all other previously mentioned functions as either
    • Redundant
    • Easily confused with takes_values(range) but works differently and the value of native support is relatively low

So you can do take_values(0), take_values(2), take_values(1..), take_values(0..=1)

  • Really, the motivation is to support all the various range types. Taking in a number is just a convenience while we are at it. I considered taking in a bool, but I think that is making it too magical and isn't as needed.
  • This was named based on Remove magic arg type in `Args` #2674 going through and takes_values(1) being the default.

While I was already talking with kbknapp, I brought this up and is thoughts were:

That is an interesting idea! It feels like it might incur some cognitive load to understand, although once you see it it makes total sense. I'd love to find a way to play with this idea without throwing it front and center and in the API all of a sudden.

Notes

For the question from kbknapp

For example, which makes more sense for a positional argument; multiple_values or multiple_occurrences? I think you and I would say multiple_values, but I can totally see how someone may try multiple_occurrences. This was papered over by having just multiple previously and things just working. However, we’ve seen that strategy didn’t work in the long run as it created more ambiguity than it solved.

I would say occurrences, actually. This would leave room for the two features to compose, like multiple_occurrences(true).takes_values(2). Not a common pattern but I think it speaks to an API when the features compose together in a natural way which this allows.

RE Delimiters

I would posit that common cases for multiple values are

  • 0..=1
  • 2
  • 0.. or 1.. with a delimiter

We should raise awareness of require_delimiter in the docs for take_values.

Benefits

  • Clarifies our messaging on these settings plus occurrences since the focus is on fixed number of values or delimiters
  • Reduces ambiguity around how the flags interact with occurrences and values
  • Clear, concise way of specifying all related parameters rather twiddling with each one individual and there being confusion on how they interact
  • Uses higher level Rust types rather than a bool and numbers just hanging around (which ties into the Rust API guidelines)
  • I suspect this will also help us towards a more maintainable value/occurrence/inferring behavior.
@pksunkara pksunkara added this to the 4.0 milestone Aug 14, 2021
@epage epage self-assigned this Oct 19, 2021
@epage epage added the M-breaking-change Meta: Implementing or merging this will introduce a breaking change. label Oct 19, 2021
@epage epage added A-builder Area: Builder API A-derive Area: #[derive]` macro API C-enhancement Category: Raise on the bar on expectations E-hard Call for participation: Experience needed to fix: Hard / a lot and removed C: args A-derive Area: #[derive]` macro API labels Dec 8, 2021
@ldm0 ldm0 self-assigned this May 2, 2022
@ldm0
Copy link
Member

ldm0 commented May 4, 2022

I think this could be a non-breaking change by not changing existing api and behaviour.

Wanna add two methods: takes_values, takes_values_total

  • Without multiple occurrences:

takes_values(X) == takes_values_total(X)
takes_values(1..) == .min_values(1)
takes_values(..4) == .max_values(3)
takes_values(1..4) == .min_values(1).max_values(3)
takes_values(1..=3) == .min_values(1).max_values(3)
takes_values(2) == number of values strictly equals to 2

  • with multiple occurrences:

takes_values_total(2..) == total number of values doesn't smaller than 2
takes_values_total(..4) == total number of values doesn't exceed 3
takes_values_total(..=3) == total number of values doesn't exceed 3
takes_values_total(4) == total number of values equals to 4
takes_values(X) == takes_values_total(X) but for each occurrence

min_values max_values's internal representation can be easily migrated(to share the same internal representation with takes_values_total).

But number_of_values cannot be migrated due to it's strange internal representation.

Currently number_of_values's behaviour with multiple occurrences on is pretty strange: when number_of_values(2), clap accepts --flag 1 --flag 2 3 4, since 4 % 2 == 0.

The reason is that before the refactor for implementing grouped_values_of, there is no way to check number of values in each value group. After takes_values is introduced, we can use takes_values(2) to accept --flag 1 2 --flag 3 4 and reject --flag 1 --flag 2 3 4, which looks much better.

@ldm0
Copy link
Member

ldm0 commented May 4, 2022

After these apis are introduced, deriving Vec<[T; N]> and [[T; N1]; N2] could be implemented.

In clap 4, I think number_of_values should be removed due to it's strange behaviour.

@epage
Copy link
Member Author

epage commented May 5, 2022

There are some points that I think need some clarification

  • Your listing says "Without multiple occurrences", do you mean "Independent of multiple occurrences"?
  • I appreciate showing what the new API maps to in the old API but I think it'd also help if you were explicit on what the intent is
  • Could you explain what is wrong with number_of_values that you feel the new API is needed and why number_of_values should be deprecated?
  • You mention deprecating number_of_values, would you also recommend deprecating min_values and max_values?
  • How much of a use case is there for takes_values_total? I'm used to limiting the number of entries for tuple-like arguments where its tied to the occurrence. Should we instead shift the emphasis to user-side validation or more generic validation mechanisms?
    • As part of our effort to reduce complexity, binary size, and build times, we are wanting to emphasize creating building blocks for users and make things easy in the common cases rather than in every case.

@ldm0
Copy link
Member

ldm0 commented May 5, 2022

Your listing says "Without multiple occurrences", do you mean "Independent of multiple occurrences"?

without multiple occurrences == arg.multiple_occurrence(false)

Could you explain what is wrong with number_of_values that you feel the new API is needed and why number_of_values should be deprecated?

check sentences after "But number_of_values cannot be migrated due to it's strange internal representation."

You mention deprecating number_of_values, would you also recommend deprecating min_values and max_values?

Yes, they can be deprecated, but it's not a must. Since they becomes shortcuts of takes_values_total after #3678

How much of a use case is there for takes_values_total?

Definitly needed. This has little binary size & build times influence and it's makes the logic completes. min_values and max_values are just shortcuts of them.

@epage

@epage
Copy link
Member Author

epage commented May 5, 2022

There is a lot of being elided from the descriptions being given. Instead of copying your past notes, could you re-write this addressing the following:

  • What is the current behavior of min_values and max_values and what problems does it have?
  • What is the current behavior of number_of_values and what problems does it have?
  • What is the proposed behavior of the new functions?
  • How are the new functions related to the old functions?
  • How do the new functions solve problems with existing functions?
  • How do the new functions solve any other use cases, like the derive case?
  • Why should we not solve the problem with other existing or planned features?
    • We are not just targeting binary size and compile times but providing an API surface where people can find the features they need.

I just want to re-emphasize that communicating our thoughts and recording them down is important in a collaborative open source project. We need to get each other on the same page and help people in the future understand the motivation for why things were done.

@ldm0
Copy link
Member

ldm0 commented May 6, 2022

  1. min_values(N) == takes_value_total(N..) max_values(N) == takes_value_total(1..=N), and the only problem is that their functionaliry are duplicated. They can be removed, but I have no bias.
  2. Currently number_of_values's behaviour with multiple occurrences on is pretty strange: when number_of_values(2), clap accepts --flag 1 --flag 2 3 4, since 4 % 2 == 0. I dislike it.
  3. I think this is clear:
  • without multiple occurrences:
    takes_values(X) == takes_values_total(X)
    takes_values(1..) == .min_values(1)
    takes_values(..4) == .max_values(3)
    takes_values(1..4) == .min_values(1).max_values(3)
    takes_values(1..=3) == .min_values(1).max_values(3)
    takes_values(2) == number of values strictly equals to 2
  • with multiple occurrences:
    takes_values_total(2..) == total number of values doesn't smaller than 2
    takes_values_total(..4) == total number of values doesn't exceed 3
    takes_values_total(..=3) == total number of values doesn't exceed 3
    takes_values_total(4) == total number of values equals to 4
    takes_values(X) == takes_values_total(X) but for each occurrence
  1. Stated above。
  2. Currently there is no way to accept --flag 1 2 --flag 3 4 and reject --flag 1 --flag 2 3 4, the new api makes it possible. And also, the new api is not for problem solving, it's for simplicity.
  3. It makes deriving Vec<[T; N]> and [[T; N1]; N2] possible.
  4. The api is simple enough and expressive enough to be added. And people can easily understand them(compared to number_of_values)

@epage
Copy link
Member Author

epage commented May 6, 2022

Please take the time to write up a clear description rather than repeating what has previously been said. If it feels like it'll take a long time to do so, consider how long having unclear explanations has already taken.

Think in terms of a random clap user wanting to look at this proposal to understand what is happening. How well can they understand it?

Currently number_of_values's behaviour with multiple occurrences on is pretty strange: when number_of_values(2), clap accepts --flag 1 --flag 2 3 4, since 4 % 2 == 0. I dislike it.

This is repeating what was said before. This is an example which help to clarify descriptions but aren't sufficient to describe behavior on their own as it leaves the user to infer what is happening which leaves room for misunderstanding

I think this is clear:

The fact that this is now the third time I'm asking for a re-explanation I think demonstrates that this is not an effective way of communicating things

  • Its describing behavior conditioned on what multiple_occurrences is being set to but doesn't describe how the functions behavior with the opposite setting
  • Its describing the API in terms of other parts of the API when I'm looking for a description of intent where it stands alone so there is no ambiguity.
  • If takes_values(1..) == .min_values(1) and min_values(N) == takes_value_total(N..), then doesn't that mean that takes_values(1..) == takes_value_total(1..)?

It makes deriving Vec<[T; N]> and [[T; N1]; N2] possible.

I can't see how the proposed helps with this because as described, it doesn't seem to handle this.

  • See my earlier comment "If takes_values(1..) == .min_values(1) and min_values(N) == takes_value_total(N..), then doesn't that mean that takes_values(1..) == takes_value_total(1..)?"

@epage
Copy link
Member Author

epage commented May 6, 2022

How do these new functions interact with multiple_values and takes_value?

Working on some other Issues reminded me that its not just these flags but how some of them compose together

epage pushed a commit to epage/clap that referenced this issue May 6, 2022
This is split out of clap-rs#2688 as several changes I'm working on need it.
@tmccombs
Copy link
Contributor

Are the issues with the current options resolved by using an action of ArgAction::Append?

For example, if I had:

Arg::new("test")
    .short('t')
    .action(ArgAction::Append)
    .min_values(2)
    .max_values(3)

would that mean that --t 1 2 -t 3 4 -t 3 5 6' is valid, and result in a value of vec![vec!["1", "2"], vec!["3", "4"], vec!["3", "5", "5"]]and -t 1 -t 2 3` is invalid?

The documentation isn't very clear on this.

@tmccombs
Copy link
Contributor

tmccombs commented Jun 15, 2022

Looking through the source code, it looks like it probably doesn't. So I'll try and answer the questions @epage listed in a way that doesn't depend on the new API proposed.

  • What is the current behavior of min_values and max_values and what problems does it have?

min_values and max_values set limits on the total number of values, rather than on the number of values in a single occurrence of the option. So if an option is supplied multiple times, these limits apply to the sum of the number of values in all such occurences. Clap doesn't currently have a way to express limits on the number of values supplied to a single occurrence when multiple_occurences is true, or the Append action is used. This is problematic in a number of scenarios such as:

  • If an option can be supplied than once, and each occurence must have at least one (and possibly more) value supplied. Should generally be used with a delimiter, terminator, etc.
  • If an option can be optionally supplied with a value for each occurence
  • If an option can have at most N values (for some value of n) per occurence

See also #3542

  • What is the current behavior of number_of_values and what problems does it have?

Currently, if number_of_values is supplied, and multiple_occurences is true, or the Append action is used, then rather than requiring each occurrence to have that number of values, it requires that the total number of values is a multiple of that number.

For example, if you supply a number_of_values of 2 for an option that can occur multiple times, then -t 1 -t 3 4, -t 1 2 3 4, -t -t 1 -t 2 3 4, and -t 1 -t 2 -t 3 -t 4 are all considered valid, which is almost certainly not what you want.

I suspect this behavior wasn't intentional, and could probably be considered a bug. However, even if it is fixed, it is somewhat confusing that number_of_values is per-occurrence, while min_values and max_values are total.

  • What is the proposed behavior of the new functions?

From what I understand:

takes_values_total takes a possibly open range that specifies the minium and maximum number of values combined across all occurrences. If the number of values in total is outside of the specified range, the arguments are invalid. This is equivalent to a combination of the currentmin_values and max_values.

takes_values specifies a (possibly open) range of the number of values per occurrence. that is each occurrence of the option must have a number of values that lies within the range. If the number of values given to any one occurrence of the option falls outside the given range, it should be considered invalid.

  • How are the new functions related to the old functions?

I'm not sure there is much to add here. The old functions could be deprecated and implemented in terms of the new ones. And removed in a backwards incompatible release. Or possibly they are considered valuable enough to keep. It's also possible the in a backwards incompatible release, the behavior of these functions is changed to be per-occurrence instead of total. Alternatively, new min_per_occurence, max_per_occurence, and number_of_values_per_occurence (bikeshed the names) could be added.

  • How do the new functions solve problems with existing functions?

takes_values_total does not solve the problems mentioned above, but might be a slightly nicer API.

takes_values provides an api to constrain the number of arguments on a per-occurrence basis when multiple occurrences of the same option are allowed.

  • How do the new functions solve any other use cases, like the derive case?

I'm not sure.

  • Why should we not solve the problem with other existing or planned features?

I don't really care how the problem is solved, as long as there is a way to have constraints on the number of values supplied per-occurrence. I mentioned some other possibilities above. Perhaps another way to do it would be to have a different Action variant, which would switch into a mode where min_values, max_values, and number_of_values applies to each occurrence rather than the total (or maybe change it so the existing Append action behaves that way in v4?)

I would like to mention that the current behavior of min_values bit me, and it took me quite a while to figure out what was going on. At the very least the documentation for min_values and max_values should be updated to explain that it is the total number of values, not the values for a single occurrence.

@epage
Copy link
Member Author

epage commented Jun 15, 2022

I don't really care how the problem is solved, as long as there is a way to have constraints on the number of values supplied per-occurrence

I've updated my original proposal to clarify that takes_values(range) is intended to be per occurrence.

And while I appreciate the thorough investigation into ldm0's work, I think the more important aspect is to understand their intent and working through that to come to agreement before they move forward with their implementation.

epage added a commit to epage/clap that referenced this issue Jul 25, 2022
For num_vals and friends, this only implements hacks until clap-rs#2688

Fixes clap-rs#3021
epage added a commit that referenced this issue Jul 28, 2022
fix: Misc clean up in prep for #2688
@epage
Copy link
Member Author

epage commented Aug 3, 2022

In master (v4) I've started work on the original proposal in this issue.

Current status:

  • Shift focus from takes_value / multiple_values to action in docs
  • Modify number_of_values to take a range
  • Change number_of_values to be per occurrence
  • Change number_of_values to be num_args (ie how many argv items are consumed)
  • Update arg! and derive to use number_of_values for Option<Option<T>>
  • Remove min_values and max_values from the API
  • Remove takes_value and multiple_values from API
  • Resolve how we use takes_value and multiple_values internally
  • Re-evaluate use_value_delimiter and require_value_delimiter with the new num_args behavior
  • Re-evaluate where num_args shows up in rustdoc output
  • Update tutorial to not primarily use arg! to better teach actions, drawing attention away from num_args

Somewhat related

  • Cleaned up rendering of arg values
  • Show ... for ArgAction::Count for args in usage
  • Correctly show optional values in usage for positionals and args

@epage
Copy link
Member Author

epage commented Aug 4, 2022

While not quite done, we've dropped about 2k from .text through this work

This was done by running cargo bloat --release --example cargo-example --features cargo against 11883b6 and #4028

epage added a commit to epage/clap that referenced this issue Aug 4, 2022
TakesValue helps because it provides a way for a lot of settings to say
a value is needed without specifying how many.  Multiple values didn't
have enough call sites to make this worthwhile.

This is a part of clap-rs#2688
@epage
Copy link
Member Author

epage commented Aug 9, 2022

Forgot to call out that #4050 took care of the tutorial

@epage epage closed this as completed Aug 9, 2022
edmondsfastly added a commit to fastly/dnstap-utils that referenced this issue Oct 27, 2022
See the clap CHANGELOG:
https://github.com/clap-rs/clap/blob/v4.0.18/CHANGELOG.md.

`parse(from_os_str)` for a PathBuf just becomes `value_parser`:

  - For `#[clap(parse(from_os_str)]` for `PathBuf`, replace it with
    `#[clap(value_parser)]` (as mentioned earlier this will call
    `value_parser!(PathBuf)` which will auto-select the right `ValueParser`
    automatically).

For `min_values = 2`, this becomes `num_args(2..)`. This is a new
interface that replaces a number of old ones:

    **`Arg::num_args(range)`**

    Clap has had several ways for controlling how many values will be
    captured without always being clear on how they interacted,
    including
    - `Arg::multiple_values(true)`
    - `Arg::number_of_values(4)`
    - `Arg::min_values(2)`
    - `Arg::max_values(20)`
    - `Arg::takes_value(true)`

    These have now all been collapsed into `Arg::num_args` which accepts
    both single values and ranges of values.  `num_args` controls how
    many raw arguments on the command line will be captured as values
    per occurrence and independent of value delimiters.

    See [Issue 2688](clap-rs/clap#2688) for
    more background.

`validator` has been removed, see
https://epage.github.io/blog/2022/06/clap-32-last-call-before-40/. We
were previously using `validator = ...` to set a function to validate
that the value of the DSCP parameter was in the allowed range (0-63).
This no longer requires an entire function and we can just write
`value_parser = clap::value_parser!(u8).range(0..63)`. However, we lose
the ability to detect Windows usage (where we don't support setting the
DSCP value) at argument parsing time.

For setting the verbosity level based on the number of `-v`'s:

  - For `#[clap(parse(from_occurrences))]` replaced with `#[clap(action
    = ArgAction::Count)]` though the field's type must be `u8` (#3794)
tkmcmaster added a commit to FamilySearch/pewpew that referenced this issue Jan 27, 2023
- Cleaned up the start-at to only parse once
- Fixed the multiple --include. Clap no longer allows multiple occurences, it only allows multiple passed on one occurence. See clap-rs/clap#2688 and https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#400---2022-09-28
- This does introduce a bug that if you specify the config file immediately after --include(s) it will think it's part of the --include. The user must either pass another option after -i or put the config file before the -i
tkmcmaster added a commit to FamilySearch/pewpew that referenced this issue Jan 30, 2023
* Fixed clippy warnings

* Initial update of dependencies

* Updated clap and base64 dependencies

* Fixed multiple includes on try

- Cleaned up the start-at to only parse once
- Fixed the multiple --include. Clap no longer allows multiple occurences, it only allows multiple passed on one occurence. See clap-rs/clap#2688 and https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#400---2022-09-28
- This does introduce a bug that if you specify the config file immediately after --include(s) it will think it's part of the --include. The user must either pass another option after -i or put the config file before the -i

* Updated base64 dependency in config and hdr-histogram-wasm

* Updated additional rust dependencies

* Initial update of Node.js dependencies

* Updated Chart.js dependency

* Updated actions to latest versions
tkmcmaster added a commit to FamilySearch/pewpew that referenced this issue Jan 6, 2025
* Fixed clippy warnings

* Initial update of dependencies

* Updated clap and base64 dependencies

* Fixed multiple includes on try

- Cleaned up the start-at to only parse once
- Fixed the multiple --include. Clap no longer allows multiple occurences, it only allows multiple passed on one occurence. See clap-rs/clap#2688 and https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#400---2022-09-28
- This does introduce a bug that if you specify the config file immediately after --include(s) it will think it's part of the --include. The user must either pass another option after -i or put the config file before the -i

* Updated base64 dependency in config and hdr-histogram-wasm

* Updated additional rust dependencies

* Initial update of Node.js dependencies

* Updated Chart.js dependency

* Updated actions to latest versions
tkmcmaster added a commit to FamilySearch/pewpew that referenced this issue Jan 16, 2025
* Add CI with github actions

* Update CI

* Update CI

* Fix clippy warnings

* Make sure CI clippy checks all packages

* See if we can make this test pass on CI
It may need to be disabled

* Show CI status in README

* Add `headers_all` property to both `request` and
`response` to allow the access of multiple header values which share the
same header name
Fixes #19

* Fix bug where non-ascii characters could cause anerror reading a file when using the `line` (default) `format`.Fixes #21

* License check (#23)* Add cargo-deny to CI and hush warnings* Eliminate actix-web dependency. Haven't added backin the `/multipart` endpoint* Add action to create releases

* Change the format of the stats output file so data can be appended to it throughout a test run and less data has to be kept in memory

* Fixes for json stdout summary output
* Fix `summaryType` as showing inverted (showing `bucket` for `test`and
vice versa)
* Fix `timestamp` as showing up as `null` for `bucket` summaries
* Filter out `url` and `method` from `tags` to match previous behavior

* Bump version number

* Update dependencies for results viewer to silence
security warnings

* Tweak auto sized buffers to grow anytime there is
a "endpoing was delayed waiting for provider" event.

* Update the Dockerfile used to build Linux
releases to the latest
version of OpenSSL, and change the url where we pull the source from to
GitHub because the openssl.com url breaks everytime there's a new
release

* Add new section to the guide as an introduction to
some of pewpew's concepts and design.

* Update script for building the guide

* Tweak wording on the design document

* Fix bug where the `line` `format` of a file
provider would incorrectly parse files with lines longer than 8KB

* Add license

* Update references from the old repo to the new

* Fix release CI badge

* Fix issue when, under heavy load, pewpew panicswith message "found a left over previous bucket"

* Update mod_interval to futures 0.3 async/await

* Update select_any to futures 0.3 async/await

* Updating main WIP

* Update body_reader

* Update channel

* Update config/expressions

* Update either

* Update for_each_parallel

* Update mod_interval

* Update select_any

* Update test_common

* Update zip_all

* Update main. Stuck on compiler bug

* All tests passing and watching for changes works

* Fix clippy lints

* Update the GitHub action for releases to check
that the version of the tag matches Cargo.toml, and also give it the
ability to handle building preview builds

* Fix previous issue in release GitHub action
which didn't account for the leading "v".
Also change it so the Cargo.toml version only needs to match the tag
version in non-prerelease releases.

* Fix issue with conditional compilation causing
release builds to fail

* Another attempt to fix release CI
This time, make sure Cargo.toml version is set during the build step

* Fix bug where each segment of a load pattern had
its duration set to the duration of the test instead of for that segment

* Fix failing CI test on windows resulting from
files being checked out with CRLF line endings

* Tweak how we determine the limit for parallel
requests per endpoint and auto-
sized providers grow.

Previously the number of max parallel requests was determined based on
the maximum length of any `send: block` providers that endpoint provides
for, or the `max_parallel_requests` parameter, whichever is smaller.
Now, we instead take into consideration the maximum number of empty
slots in any `send:block` providers multiplied by a multiplier between
1 and 10. If any of the `send:block` providers are empty the multiplier
is incremented. If all of the providers are full the multiplier is
decremented.

For auto-sized providers, previously they would grow (the limit would
increment) whenever the provider is filled and then emptied and anytime
an endpoint determines it should be firing off a request but it was
waiting for a value from the provider. This commit removes the latter
behavior.

* Preview3 (#15)

* Further tweaks to improve the number of max
parallel requests on endpoints which provide for a provider with
`send: block`

* Fix issue in the preview builds where the time
remaining was not being printed after each bucket summary for the
"human" output format

* * Fix issue with integer overflow introduced in
preview3
* Fix issue where pewpew would not exit when `--watch` was being used
* Fix issue where all the output to stdout/stderr may not be fully
written before pewpew exits

* Fixes #17
Fixes issue where in certain cases with a low hit rate and a low
starting load_pattern (greater than 0) the test would never run

* Update release action to build and upload the
guide

* Remove unused dependencies

* Get the results viewer working again
Add test summary charts at the tops
Add dark mode
Change layout of some of the charts to show more on wide screens

* Bump version

* Reduce the amount of warning messages about
"endpoint delayed waiting for provider"

* Fix CI workflows and update Cargo.lock

* Update documentation and CLI help to reflect
recent changes

* Update PR CI workflow to only run the checks if a
rust file or `Cargo.toml` file is changed

* Update to build on stable rust

* Having trouble installing newer versions of
cargo-deny

* Add new workflow for test-server release

* Bump lodash from 4.17.15 to 4.17.19 in /guide/results-viewer

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <[email protected]>

* Bump elliptic from 6.5.1 to 6.5.3 in /guide/results-viewer

Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.1 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.1...v6.5.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Upates for lints

* Update dependencies

* Fixes #29

* Bump version for release and update .gitignore

* Fix regression in v0.5.6 where pewpew does not
sleep properly between endpoint calls, effectively disregarding any
load limits

* bump version for release

* Refactor channels to fix #33

* Fixes #35

* Add in unique providers. Also do some
refactoring of the channels module to improve the intent of the code.

* - Fix cargo clippy lints
- Update easy-to-update dependencies
- Update the version of cargo-deny to hopefully fix the cargo-deny stage
of the PR CI workflow

* Add in the ability for `peak_load` to have a
decimal

* Fix regression in earlier 0.5.8 preview builds
which broke `on_demand`, and was manifest most often by try runs hanging
Add integration test for on_demand

* Add comments and rename a few things for
consistency

* Change from the old (now removed) way of setting
environment variables in GitHub Actions to the new way

* Fix config wasm (#44)

* Fixed the config wasm build per the getrandom docs for javascript

* Fixed issues with running on WSL2 Ubuntu 20.04 which doesn't support SIGINT only INT

* Added comment for the SIGINT -> INT fix

* Added a comment to the fix for getrandom in the config_wasm

* Bump dot-prop from 4.2.0 to 4.2.1 in /guide/results-viewer (#40)

Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/sindresorhus/dot-prop/releases)
- [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* More comments and renaming things for clarity (#45)

* On demand issue46 (#47)

* Turning on watch_config_file causes on_demand to fail

https://github.com/FamilySearch/pewpew/issues/46

* Fixed the issue with --watch and on_demand

When there was a "watcher" it would also add an on_demand listender which would catch the messages preventing the real endpoint from receiving the message and firing.
We now only create a lisenter when something tries to listen (i.e. an endpoint). The config watcher never actually runs anything and therefor never "listens".

* Added some comments from debugging

* Added comments and changes from PR

Fixed/added comments
Removed duplicate code that wasn't needed.

* cargo fmt changes

* Fixed the clippy warning about deprecation

* Fixed clippy warnings

* Fixed clippy warning

* Fixed clippy warning

* Fixed another clippy warning

* Updated a dependency that was failing cargo deny

* Reverted some of the name fixes due to Splunk Dashboard issues (#49)

https://github.com/FamilySearch/pewpew/commit/8ba4062be27d817b8963aa5a545fe319888418cd
Changed the name of the provider name from 'provider' to 'name' breaking
our agent dashboard. Reverted it to fix the dashboard.

* Epoch config wasm (#52)

* Fix for the "unreachable" bug from using an epoch in a log file name

https://github.com/FamilySearch/pewpew/issues/50
For wasm-pack builds, use js_sys::Date::now() instead of SystemTime`

* Added test files used for debugging epoch in logger name

* Added comments for the SytemTime -> js_sys:Date cfg

* Cargo fmt changes

* Fixed require path after moving to tests/

* Merged SystemTest now into one line and added mem free to js

* Added acceptance tests for the config web assembly (wasm)

* Updated the readme files

* Updated the package homepage to the new readme

* Added a job to the pr flow to build and test the config_wasm

* Added wasm build to pr and release

- Pull requests will build the config wasm and run the acceptance tests
- releases will build and zip up the config-wasm as part of the release

* Removed the commented out imports

* Merged the epoch logger test into integration.yaml

* Modified the conditional since_the_epoch to use a cfg macro per suggestion

* Fixed issue with cfg macros needing all imports, no conditionals

* Fixed clippy warning

* Merged the Web Assembly tests and build into a single PR job

* Update for release of 0.5.8 (#53)

* Changed the guild release to use npm ci rather than install for continuous integration environments

* Updated the Readme to include the config parser fix

* Updated the cargo version in preparation for releasing 0.5.8

* Downgraded wasm-pack to 0.8.1 due to issues building the guide (#54)

* Create a devcontainer for development (#55)

Creates a container environment with:
* Rust 1.50.0
* rustfmt
* clippy
* Cargo-deny 0.9.0
* mdBook 0.4.7
* wasm-pack 0.8.1
* Node.js 14.16.0

Also installs the following VS Code extensions within the devcontainer:
* vscode-pull-request-github
* hediet.vscode-drawio
* rust-analyzer
* crates
* svelte-vscode

* Update most dependencies to the latest version (#57)

Fix some clippy lints. Update devcontainer to the latest version of
Rust and configure it to use vscode as the editor for various git
operations.

* Update dependencies (#62)

* Updated results viewer dependencies and fixed sed command

* Added sed fix to update-guild.yml

* Added tests for the hdr-histogram-wasm

* Updated dependencies for config-wasm tests

* Updated the comment to show that wasm-pack v0.10.0 works

* Renamed tests directory to match config directory

* Renamed config_wasm to config-wasm to match hdr-histogram-wasm

* Updated the mdbook and wasm-pack versions in the Dockerfile

* Updated the workflows

- Updated the mdbook and wasm-pack versions
- Updated pr and release to build both config-wasm and hdr-histogram-wasm and run tests

* Updated the lock file to the latest dependencies

* Fixed warning in latest version of Rust

https://github.com/rust-lang/rust/issues/79202

* Changed the config-wasm and hdr-histogram-wasm to be scoped '@fs'

* extraneous spaces from empty lines

* Fixed the names in the Javascript PR workflow

* Initial fixes for clippy (failing tests)

* Updated babel version

* Fixed the tar command

* Added a link to the new online har to yaml converter (#65)

* Added a link to the new online har to yaml converter

* Updated wording based on feedback

* Release59 (#68)

* Updated version for release

* Updated the Readme

* New Feature: Logging (#67)

* Changed the log_provider_stats to be a boolean (default on)

- For historical purposes, durations will be allowed and be considered true
- There was a bug that the duration was ignored and it was always logged at the bucket_size interval
- Rather than fix the bug, changed it to a boolean but made the default on/true

* Added logging crates to pewpew and initialize it in the binary

- Added two logging implementations env_logger and json_env_logger
  - env_logger is the default
  - If the output is json (-f json) then the json_env_logger is used instead

* Added initial logger code to parse it from the yaml config/general section

* Removed the code from src/lib to process the config file

- Added docs for passing the RUST_LOG parameter to the cli

* Updated crate versions

* Fixed failing tests and changed config.log_provider_stats to be a bool

* Added the wasm_logger and init to the config-wasm

- The very first call (only) will initialize the log level.
- There's now a third optional parameter that will set the log level. Defaults to 'info'
- Invalid levels or non strings will panic
- log_level can be set to 'off'

* cargo fmt

* Changed the default log level to Error and cleaned up the README

* Added logging to the hdr-histogram-wasm

- The very first call (only) will initialize the log level.
- There's now a second optional parameter to the contructor that will set the log level. Defaults to 'error'
- Invalid levels or non strings will panic
- log_level can be set to 'off'

* Locked log at 0.4.13 due to a bug in the json_env_logger

- https://github.com/softprops/json-env-logger/issues/6 has a PR https://github.com/softprops/json-env-logger/pull/8 to fix the issue. But hasn't been merged and released.

* Simplified the log_provider_stats logic to a simple match on parse<bool>

* Cargo fmt

* Fixed clippy warnings

* Binary logging (#69)

* Added logging of request/response to the test_server

* Fixed a bug Jon found that we only log one header during a try script rather than all if there are duplicates. Changed the try run to log headers_all rather than headers

* Updated the README with the current changes

* Changed the try script logger to use stdout instead of stderr

Fixed the docs for try and run to show the change from 0.5.2 that stats go to stdout

* Modified the Config WebAssembly (config-wasm) to also return file body paths from the  method

* Added some logging to trace the flow through the pewpew binary and see where things are hanging

* Fixed fmt and clippy warnings

* Updated dependencies

* Wasm optional param (#70)

* Updated wasm-pack to 0.10.1

* Changed the log_level parameter to be optional rather than required (with undefined allowed)

* Fixed a css rule that was giving errors

* Fixed clipy and fmt warnings

* Added fix for Github Actions issue

* Fixed the wasm-opt failure by manually downloading and running wasm-opt

https://github.com/rustwasm/wasm-pack/issues/864

* Updated npm dependencies to fix vulnerabilities

Holding pack parcel still due to no support in parcel 2 for Web Assemblies

* Cleaned up the logic in model to account for requestTimeouts being optional

Fixed several methods that either weren't returning errors, or would return the first success and not look at further checks

* There is a cargo deny error, but there is no fixed version we can move to

* Config logging (#71)

* Changed the release version of the histogram to compile for webpack

* Updated percent-encodings to v2

- The predefined encodings have been removed in v2 (https://github.com/servo/rust-url/blob/master/UPGRADING.md#upgrading-from-percent-encoding-1x-to-2x)
- Created our own encodings to match the old ones and added a new 'non-alphanumeric' encoding that has been added
- Updated the docs to include the new encoding

* Updated percent-encodings to v2

- The predefined encodings have been removed in v2 (https://github.com/servo/rust-url/blob/master/UPGRADING.md#upgrading-from-percent-encoding-1x-to-2x)
- Created our own encodings to match the old ones and added a new 'non-alphanumeric' encoding that has been added
- Updated the docs to include the new encoding

* Added logging to the config parser 'from yaml' functions

* Added debug and trace logs to the config parser

* cargo fmt changes

* Fixed wasm build issues by deriving debug so we can log

* Channel logging (#72)

* Initial logging changes

* cargo fmt

* added the line and col to the Debug for JsonPath

* Added logging to the channels

* Fixed some spelling and added derive Debug

* Fixed clippy errors

* Update clap and other dependencies (#74)

* Initial logging changes

* cargo fmt

* added the line and col to the Debug for JsonPath

* Added logging to the channels

* Fixed some spelling and added derive Debug

* Fixed clippy errors

* Updated clap to v3

* Updated dependencies for config-wasm and histogram

* Updated results viewer minor versions

* Updated workflows to node 14

* Added code to create the directory if it doesn't exist

* Fixed clippy warnings

* Updated the README for the latest updates

* Update docs (#75)

* Update docs

* Update endpoints-section.md

* Bump minimist from 1.2.5 to 1.2.6 in /guide/results-viewer (#76)

Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Request logging (#77)

* Initial logging changes

* cargo fmt

* added the line and col to the Debug for JsonPath

* Added logging to the channels

* Fixed some spelling and added derive Debug

* Fixed clippy errors

* added logging to the body handler send

* Fixed a build issue with ssl

* Added comments and logging to the request file

* Added some helper scripts for running a local PR suite and adding release tags

* Updated various setup configs to the same mdbook/wasm-pack versions

* Updated mdbook and wasm-pack versions to latest

* Updated cargo-deny version

* Updated cargo lock file to latest versions

* Fixed clippy warnings in updated clap dependency

* Fixed clippy warnings

* Node updates (#78)

* Updated results viewer dependencies

* Updated test dependencies

* Updated additional dependencies

* Parse int (#80)

* Added a new parseInt and parseFloat function

- This function will parse a json value and return either an integer (i64) or a float (f64) respectively. It will return null on parse errors

* Added the docs for the parseInt and parseFloat expressions

* Added additional comments and debug outputs

* Updated cargo and node dependencies

- Fixed Clippy warning on is_where https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention

* Updated the README with the parseInt changes

* Release 5.10 (#81)

* Updated version and dependencies for release

* Added a test to check that we can do math after parseInt

* Graviton2 arm build (#82)

* Updated Docker to use Ubuntu 20.04

* Added aarch64 and arm7 builds to the release

* Added a build step to the PR to also build all releases

* Added comment about log_provider_stats that was changed in 5.10

* Added cargo linker file

* Added lock file to the PR check

* Updated lock file

* Fixed some matrix references

* Changed build to use-cross from

https://github.com/actions-rs/cargo#cross-compilation

* Fixed remaining build issues on cross compile

- Removed build for linux/mac/windows from pr since we run cargo test which builds

* Added optimization flags for the ARM build for AWS

- https://github.com/aws/aws-graviton-getting-started/blob/main/rust.md

* Docker arm (#83)

* Changed both arm compiles to statically compile rather than dynamic

* Added a missing backslash

* Added back in the linux build to test the dockerfile

* Arm test server (#84)

* Updated the test-server to also release arm builds

* Updated the release flow to remove -musl from the compressed name

* Added cargo cross install comment

* Added command to build linux static to pr script

* Bump dashmap from 4.0.2 to 5.1.0 (#85)

Bumps [dashmap](https://github.com/xacrimon/dashmap) from 4.0.2 to 5.1.0.
- [Release notes](https://github.com/xacrimon/dashmap/releases)
- [Commits](https://github.com/xacrimon/dashmap/commits/v5.1.0)

---
updated-dependencies:
- dependency-name: dashmap
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump openssl-src from 111.18.0+1.1.1n to 111.20.0+1.1.1o (#86)

Bumps [openssl-src](https://github.com/alexcrichton/openssl-src-rs) from 111.18.0+1.1.1n to 111.20.0+1.1.1o.
- [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases)
- [Commits](https://github.com/alexcrichton/openssl-src-rs/commits)

---
updated-dependencies:
- dependency-name: openssl-src
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* React viewer (#87)

* Initial compiling checkin

* Basic working component

* Added linter

* Working drag and drop file

* Renamed App to ResultsViewer

* Got the new results viewer react working in the guide

* Switched to local wasm until we get it in npm

* Updated the wasm dir to be local and match the old path

- Also added the new viewer to the update-guide github action

* Updated the pr-js to build the new results viewer

* Har to yaml (#88)

* Updated wasm-pack, mdbook, and cargo-deny versions

* Changed javascript pr and guide to install with action

- pr-js and update-guilde will now install wasm-pack and mdbook via cargo install rather than curl to match pr.yml

* Moved the global style to a separate component to share

* Initial working Har to Yaml Converter

* Changed the docs to use the local har to yaml

* Adjust the color to match the rest of the guide

* MOved the main header to the html file from the component

* Changed the inject code

- webpack will now inject the script in the head rather than the body
- The react inject now will replace the entire body rather than just a div

* Changed the serve-guide to watch the results-viewer

- Added a webpack watch to the package.json
- Changed the serve-guide script to run both webpack watch and mdbook serve so results-viewer-react changes will be hot recompiled

* Added Storybook

* Moved the createRoot back to the div since body broke our modals

* Added storybook for TestResults

* Removed results used during debugging

* Merged the yaml css into a styled component

* Removed the Global Div

* Added an Alert for the TestResults errors

* Simplified the pr-js paths

* Results viewer updates (#89)

* Added the summary data that was missing from the Svelte version

- Added summary stats that is filterable by tag name and value
- Fixed some bugs related to the model and memory being freed

* Updated version and dependencies

* Added code to also filter the displayed endpoints (#90)

- The filter is now smarter and no longer regenerates the overall summary unless the filtered list changes
- Display the filtered endpoints only, unless the filtered is empty, then display all

* Rolled back the mdbook/wasm-pack change due to speed

- cargo install of wasm-pack and mdbook were taking 10+ minutes

* Changed pr and release to download wasm-pack rather than install

- cargo install wasm-pack was taking 6+ minutes vs curl which takes less than 1

* Har to yaml filter bug (#91)

* Fixed a bug where we wouldn't get summary if there was no filtered

* Updated NPM dependencies

* Fixed more bugs in the Results Viewer (#92)

- Fixed a typo where we weren't correctly checking changes to filtered length
- Fixed the tag display on filtered when showing all
- Fixed a bug where we wouldn't redraw the summary chart if the number of datapoints didn't change

* Bump openssl-src from 111.20.0+1.1.1o to 111.22.0+1.1.1q (#93)

Bumps [openssl-src](https://github.com/alexcrichton/openssl-src-rs) from 111.20.0+1.1.1o to 111.22.0+1.1.1q.
- [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases)
- [Commits](https://github.com/alexcrichton/openssl-src-rs/commits)

---
updated-dependencies:
- dependency-name: openssl-src
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump moment from 2.29.3 to 2.29.4 in /guide/results-viewer-react (#95)

Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.3...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump moment from 2.29.2 to 2.29.4 in /guide/results-viewer (#94)

Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump svelte from 3.48.0 to 3.49.0 in /guide/results-viewer (#96)

Bumps [svelte](https://github.com/sveltejs/svelte) from 3.48.0 to 3.49.0.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/compare/v3.48.0...v3.49.0)

---
updated-dependencies:
- dependency-name: svelte
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Updated versions of mdbook and Node to 16 (#97)

* Updated versions of mdbook and Node to 16

* Updated dependencies

* Fixed clippy warning

* Removed override wasm-opt code to test

* Removed the separate wasm-opt code now that it's not needed

* Fixed alignment on Firefox

* Updated lock file

* Pewpew updates20220906 (#98)

* Updated dependencies Cargo and npm

* Fixed clippy and format warnings

* Fixed tests that are failing in Rust 1.63

- Rust version 1.63 changed how they convert float to Durations. Previously they truncated, now they round
  - https://github.com/rust-lang/rust/releases/tag/1.63.0
  - https://github.com/rust-lang/rust/pull/96051/
  - 'Rounding is now used when converting a float to a Duration. The converted duration can differ slightly from what it was.'

* Fixed the names of some variables to match what they are

* pewpew -d crash (#99)

* Fixed an issue with out directories and stats file params

- new versions of Clap panic with invalid utf8 passed to value_of_os()
  - https://github.com/clap-rs/clap/issues/3344

* Added comments to changes

* Added tests for the command line parser

- Split the parsing code into separate functions that can be tested
- Moved the logger init out of the match functions so we can test the cli parsing
- Added tests around the path checks. Found we weren't parsing the try -d the same and fixed it

* Added additional tests for the cli parsing

* Cleaned up the cli tests

* Updated the cargo deny.toml
- Unicode license is allowed under our current whitelist
- Ignoring the time advisory since chrono should not be impacted. https://github.com/chronotope/chrono/issues/602

* Update PR flows and update dependencies (#101)

* Updated Cargo versions

* Updated the PR flows to test both Node 16.x and 18.x

* Updated dependencies for the results viewer

* Updated node version and lock files to Node 16

* Updated actions/setup-node to v2

* Updated version and dependencies legacy result-viewer

* Updated version for release (#100)

* Updated version for release

* Added duration changes to the README

* Updated the release script to add a -d option

* Bump decode-uri-component from 0.2.0 to 0.2.2 in /guide/results-viewer (#104)

Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump decode-uri-component in /guide/results-viewer-react (#105)

Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump loader-utils from 1.4.0 to 1.4.2 in /guide/results-viewer-react (#103)

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump json5 from 1.0.1 to 1.0.2 in /guide/results-viewer (#107)

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump json5 from 1.0.1 to 1.0.2 in /guide/results-viewer-react (#108)

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update dependencies20230123 (#110)

* Fixed clippy warnings

* Initial update of dependencies

* Updated clap and base64 dependencies

* Fixed multiple includes on try

- Cleaned up the start-at to only parse once
- Fixed the multiple --include. Clap no longer allows multiple occurences, it only allows multiple passed on one occurence. See https://github.com/clap-rs/clap/issues/2688 and https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#400---2022-09-28
- This does introduce a bug that if you specify the config file immediately after --include(s) it will think it's part of the --include. The user must either pass another option after -i or put the config file before the -i

* Updated base64 dependency in config and hdr-histogram-wasm

* Updated additional rust dependencies

* Initial update of Node.js dependencies

* Updated Chart.js dependency

* Updated actions to latest versions

* Bump openssl-src from 111.24.0+1.1.1s to 111.25.0+1.1.1t (#111)

Bumps [openssl-src](https://github.com/alexcrichton/openssl-src-rs) from 111.24.0+1.1.1s to 111.25.0+1.1.1t.
- [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases)
- [Commits](https://github.com/alexcrichton/openssl-src-rs/commits)

---
updated-dependencies:
- dependency-name: openssl-src
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump webpack from 5.75.0 to 5.76.0 in /guide/results-viewer-react (#113)

Bumps [webpack](https://github.com/webpack/webpack) from 5.75.0 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update dependencies20230327 (#115)

* Updated Cargo dependencies for OpenSSL Vulnerability

* Fixed clippy warnings

* Added MacOS11 Github tests

* Updated ResultsViewer dependencies

* Removed the old Svelte Results Viewer

* Removed the legacy Svelte results-viewer from PRs and scripts

* Added script for testing the command line

* Bump h2 from 0.3.16 to 0.3.17 (#116)

Bumps [h2](https://github.com/hyperium/h2) from 0.3.16 to 0.3.17.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.16...v0.3.17)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update dependencies 20230421 (#117)

* Bump version for release (#118)

* Bump version for release

* Updated Readme for 0.5.12

* Fixed readme version

* Fix histogram (#119)

* Fixed the HDR Histogram build for webpack

- https://github.com/rustwasm/wasm-bindgen/issues/3276#issuecomment-1475805578
- https://github.com/rustwasm/wasm-pack/pull/1224

* Updated Viewer dependencies

* Fix docs (#120)

* Fixed a typo in one of the examples

* Added Node 20.x to the PR flows

* Added the *.md files to the github pr flow

* Use clap derive, fixing behavior of `--include` flag. (#121)

* Add clap derive macros and attributes to structs

* restore default behavior of stats_file

* Use static Lazy for a Regex

* Use Tmp struct for try config, needed for results_dir

* comments

* fix typo in comment

* another typo

* Direct port of tests from builder to derive version.

Some tests now fail as a result of the new `-i` flag behavior.

* Fix broken tests to use new `-i` behavior.

* Add new test that uses built-in clap checker

* Add new test.

Verifies that the config file can come after an --include flag, and checks that a Ne filter can be properly parsed.

* Remove old code, update use paths.

* New test: checks that old `-i` behavior doesn't work

* Improve consistency between output depicted in book and actual output.

The text wrapping of the option descriptions depends on the size of the terminal window when the program is run. A wrapping length that is relatively short but leaves the descriptions in a fully separate column was chosen for the example in the book.

* Small fixes, comments (#122)

* Add summary and doc comments into pewpew source files

* Clean up filter_fn

Result is logically equivalent, and much more clean and concise.

* use bool::then as appropriate

* use `Self` more

* use another bool::then

* Use more predefined Option/Result methods, as opposed to pattern matching.

Also added a couple of Cows

* use matches! instead of nonbinding if let

* Add `zip_all_map` function to `zip_all` lib crate. (#124)

* add ZipAllMap, and some doc comments and tests

* add doctests to pr.sh

* Bump openssl from 0.10.51 to 0.10.55 (#125)

Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.51 to 0.10.55.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.51...openssl-v0.10.55)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Trevorm examples (#127)

* Create a folder of example files

* Added some initial examples with chaining/looping providers

* Added a script to simulate logging in and scrubbing password from the log

* Updated the README and yaml files with additional info on running

* Added 3 different versions of login, force, block, and on_demand

* Added 3 different versions of login, force, block, and on_demand

* Added an example that does a random search on multiple criteria

* Added an example that deletes sequentially

* Renamed file

* Added fixed delete sequential

* Added comments

* Added a test that searches for ids to delete

* Fixed the counter to start at zero

* Added a test that is used to create/update data

* Added some examples using various ramps

* Added comments on options

* Added an example of an API that returns a redirect and fixed the tags on the redirect url

* Added several logging examples including errors and csv

* Added a test that creates, updates, then deletes data

* Removed unneeded var

* Added a delayed burst example

* Updated the README with some descriptions

* Added example generating a grid of calls from a request call

* Bump word-wrap from 1.2.3 to 1.2.4 in /guide/results-viewer-react (#128)

Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump word-wrap from 1.2.3 to 1.2.4 in /guide/results-viewer-react (#128)

Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix yaml loggers (#129)

* Fixed the loggers that were putting invalid values

* Updated Results Viewer Storybook to V7

* Moved storybook main to typescript

* Updated additional dependencies

- Updated eslint-typescript to 6.0 and ran lint
- Updated chart.js and styled-components

* use IsTerminal trait (Rust 1.70.0), removing (direct) dependency on `atty` crate. (#130)

* update jsonpath-lib to 0.3.0, removing all atty deps (#131)

* Added additional examples with different body types including multipart (#132)

* Renamed the Job Name to be able to distinguish it from the normal release job (#133)

* Removed references to SystemTest (#134)

* Added README instructions for building and link to examples (#136)

* Zip all map (#138)

* add ZipAllMap, and some doc comments and tests

* add doctests to pr.sh

---------

Co-authored-by: Zachery Olson <[email protected]>

* Adds skipBody CLI argument - Skips Request and Response Body in Try Output (#140)

* Cargo version upgrade

* Updated the Guide to include the new available flag options for instructional purposes

* Added the ability to include skipBody argument in TryConfig and modified output to honor new skip flag

* included the new argument in the TmpTryConfig for testing purposes

* change version upgrade back to original as requested

* Removed unnessesary matches as requested

* Changes made to output format as requested

* Format changes as requested

* format changes as requested by Rustfmt in the github checks

* Manually fixed format errors

* Fixed additional fmt failure after updating rust to 1.72

---------

Co-authored-by: Trevor McMaster <[email protected]>

* Updated dependencies and fixed deprecations (#143)

* Updated dependencies and fixed deprecations

* Updated Wasm-pack to match the version in the 0.6.0 scripting branch

* Example wasm tests (#147)

* Added additional tests for all the example yaml files

* Updated the README for the current changes

* Open source PPaaS (#149)

* Added initial common directory

* Added open source agent code

* Added initial controller check-in

- Not fully working. Need to get monorepo set up

* Removed references to familysearch.org

* Added code to the pr script to build the hdr-histogram for the controller

* Attempt to fix the common install/build issues in the controller

* Added code to make a monorepo out of the common, agent, and controller

* Added new PPaaS PR flow

- Renamed the old flows to show what they are testing
- Changed the guide PR to only monitor the guide files
- Added new flow for the PPaaS common, agent, and controller

* Updated the PR flow and added husky

* Added the .env.test files we're missing for the github action

* Changed all catch blocks to catch unknown

- Added type checking around the S3 errors

* Basic working build

* Working version of next buildgit status!

* Fixed storybook by removing reference to deprecated zlib

* Removed references to fslocal.org examples

* Removed husky since it's not needed on all check-ins

* Removed duplication in pr script

* Re-enabled the react build now that it's working

* Fixed the Application Name for the controller for unit tests

* Added code to generage a .env.local for the build

* Changed the .env.local file to environment variables

* Cleaned up the global script to improve performance and nyc output

* Fixed the nyc merge

* Changed the build environment files back to .env so it can be overridden

- environment variables override all .env files.

* Fix tests (#152)

* Removed unneeded vars

* Added mock restore

* Fixed grouping of tests into describe

* Added AGENT_APPLICATION_NAME similar to the controller name

* Removed unneeded comment

* Update node dependencies (#154)

* Updated lock files and a few npm dependencies

* More dependencies updates

- Rolled back dotenv-flow due to breaking change with importing config
- Updated fullcalendar now that the next.js issue appears fixed

* Updated the zip yaml files with the updated yaml files

* Updated Next.js to latest version

* Updates on master PPaaS (#156)

* Updated version and dependencies

* Removed old command from README

* Removed references to fsdpt.org

* Removed unneeded vars and added missing ones

* Removed links to Splunk that shouldn't be in OpenSource (#158)

* Changed agent version greaterthan to use semver (#160)

* Bump @babel/traverse in /guide/results-viewer-react (#161)

Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.23.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump rustix from 0.37.23 to 0.37.25 (#163)

Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.37.23 to 0.37.25.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.37.23...v0.37.25)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Updated lock files to fix audit vulnerabilities (#164)

* Updated lock files to fix audit vulnerabilities

* Updated pr flow to fix path

---------

Co-authored-by: Trevor McMaster <[email protected]>

* Update the world (#166)

* Updated cargo lock file to latest versions

* Fixed Clippy warnings

* Updated the PPaaS lock file

- Fixed changes due to AWS SDK Changes on StorageClass

* Updated the Guide lock file

- Removed support for Node 16 from guide

* Removed Node 16.x from github actions

* Update pr.sh

* Bug fixes 2023-10-26 (#168)

* Fixed issue with agent instead of controller acceptance

* Fixed the errorfile validator since it can be an object

* Fixed the acceptance tests if run after the agent tests

* Fixed the start scripts to match the other controller/agent scripts

* Cleaned up the static environment vars

* Added new npm run acceptance:all

- Acceptance:all will start both the agent and controller, and run the acceptance tests for both. You must manually Ctrl -C when finished

* Split the skipBody try parameter into separate request/response skip (#169)

* Split the skipBody try parameter into separate request/response skip

- -k/--skip-response-body will only skip the response body
- -K/--skip-request-body will only skip the request body
- '-k -K' will skip BOTH request and response body

* Fixed cargo fmt

* Turned off fail-fast for the Rest cross os tests (#172)

* Turned off fail-fast for the Rest cross os tests

* Updated storybook and fixed issue with next.js

- https://github.com/storybookjs/storybook/issues/24234

* Updated version and depencies for PPaaS

* Added Apple M1 Arm64 to the PR and Release flow (#174)

* Added Apple M1 Arm64 to the PR and Release flow

* Updated the name for macos m1 to aarch64

* Updated the compressed files to match the linux file name

* Added the Mac M1 build to the test-server (#176)

* Pewpew try hang (#177)

* Simplified the provider names in example

* Fixed the try hang for both provider_chain and provider spread

- provider_loop still has issues with try scripts

* Added example with provider collect

* Added additional logging to find try script issues with provider_loop example

* Fixed cargo fmt

* Updated pewpew version for release (#179)

* Bump openssl from 0.10.57 to 0.10.60 (#181)

Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.57 to 0.10.60.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.57...openssl-v0.10.60)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update 2023-11-28 (#182)

* Reduced log levels to reduce logging to Splunk

* Added the ability to upate the tags on an S3File

* Added code so that the delete API will also delete the files from S3

- We're changing the recurring tests to not be automatically deleted after 6 months so we need to have the delete schedule delete the files from s3

* Added code to re-tag files on the last run of a recurring set

* Updated the postTest recurring to not tag for deletion

- postTest with a recurring schedule will add the tag recurring=true instead of test=true
- Changing from recurring to non-recurring or vice-versa will update the tags accordingly
- Recurring tests should no longer delete after 6 months

* Fixed some issues from the previous shadow variable bug

* Cleaned up a ton of shadow variable bugs

* Cleaned up more shadow variables

* Fixed the last of the shadow variable bugs and added the lint rule

* Updated version and dependencies

* Updated additional dependencies: typescript, next, storybook, etc

* Fixed the copy s3File to use the new tags rather than always re-using the old tags

* Updated the remove test code to return a 500 error if we can't delete any of the files from s3

* Fixed an issue where searching for old tests that were yml failed to find (#184)

* Fixed an issue where searching for old tests that were yml failed to find

- Changed the s3 listFiles by extension and PPaasS3File getAllFilesInS3 to allow an extension array
- Changed the TestManager searchTests to search for both .yaml and .yml files when searching for old tests

* Added code to handle an empty array

* Added code to handle specify the extension(s) to the search page and the search on the index page

* Changed page load error to warn and log userId

* Fixed spelling error in comment

* Cleaned up formatting for readability

* Bump zerocopy from 0.7.15 to 0.7.31 (#185)

* Updated version and dependencies for release of PPaaS (#186)

* Updated version and dependencies for release of PPaaS

* Attempt to get the workflow action to run on package.json changes

* Update readme (#187)

* Moved the pewpew README under the src folder since it's pewpew binary specific

* Added new README for overarching design

* Fixed link to examples after move

* Added fix so we only slice the key if we have a KEYSPACE_PREFIX

* Retain tests longer (#188)

* Added new tags for extra files from tests

- Test files will be the yaml file, status file, and results files (these will be kept longer)
- Test Extra files will be log files, environment variables, and all other files needed by the yaml or logged by the yaml

* Added code to tag extra files correctly

- Stdout, stderr, and all other files generated by the yaml will be tagged as Test Extra files and be tagged for deletion accordingly

* Added code to tag extra files correctly

- Additional files uploaded to the test, or additional files being copied from the old s3 location will be tagged as Test Extra files
- Environment variable files will be tagged as Test Extra files
- When changing from recurring to non-recurring, only yaml and test status files will be tagged as Test files, all others will be tagged as Extra files

* Updated the bucket expiration so that test files are 2 years and all extra files are 6 months

* Updated the integration tests to check the new test extra tags

* Added code to validate that the logger files are tagged as extra

* Added code to clear tests off of the calendar after 1 year (or configured)

- if RUN_HISTORICAL_DELETE is true, then it will remove things off the calendar after DELETE_OLD_FILES_DAYS (365 default) days.

* Cleaned up some of the logging on the historical delete

* Made changes to allow testing faster locally

* Update Dependencies 2023-12-28 (#189)

* Updated dependencies and lock file

- Held back Chai due to breaking change requiring ESM https://github.com/chaijs/chai/issues/1561
- Updated date-fns and react-datepicker both working

* Updated PPaaS version

* Updated guide dependencies

* Additional tagging changes found while deploying (#191)

* Added extra locations that needed specific file tagging

* Added integration test for runHistoricalDelete

* Fixed another spot where we weren't adding the addional tags on all on copyObject

* Bump h2 from 0.3.21 to 0.3.24 (#193)

* Bump h2 from 0.3.21 to 0.3.24

Bumps [h2](https://github.com/hyperium/h2) from 0.3.21 to 0.3.24.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.24/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.21...v0.3.24)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

* Fixed clippy warning

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Trevor McMaster <[email protected]>

* Update20240124 (#194)

* Updated ppaas version and dependencies

* Updated Next.js version

* Updated results viewer dependencies

* Added overrides for S3

- Allows using a different s3 bucket for the controller
- S3 policy adds an expiration of the /s3-environment/ folder to use for shared environments

* Updated ppaas version and dependencies (#196)

* Updated ppaas version and dependencies

- Updated yauzl, react-datepicker, and typescript-eslint to latest
- Updated lock file to latest versions

* Fixed coverage issue and pr build issue

* Updated jsdom for controller to match peer dependency

* Updated additional dependencies

- Yauzl updated the error message for bad zip files. Updated tests
- Fixed build order for npm run build and build:test

* Updated github actions to latest versions

* Updated guide results viewer dependencies

* Replace actions-rs with rustup (#198)

* Updated dependencies

* Attempt to replace actions-rs with rustup

- https://github.com/actions-rs/toolchain/issues/216#issuecomment-1291613319
- Rustup is now available on default github runners, switch to using it. Consider https://github.com/Swatinem/rust-cache in the future

* Removed some missed actions-rs lines

* Added install of cross

* Updated additional github actions to remove actions-rs

- Updated lock files to trigger github actions

* Moved dockerfile to Ubuntu 22.04

* Rolled back docker update due to missing packages

* Bump mio from 0.8.10 to 0.8.11 (#200)

Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add lint rules (#202)

* Fixed duplicate build:agent in build command

* Added additional lint spacing rules

* Fixed common, agent, and controller code for the new lint rules

* Added spacing and no-shadow lint rules to the guide results viewer

* Fixed lint issues in the guide

- Fixed no-shadow issues to match the version from the controller

* Added eslint key-spacing rule (#204)

* Adding toaster, dynamically checking pewpewVersion (#201)

* adding files to dynamically show latest
pewpew version on Toaster

* cleaning up code for lintter to pass

* refactoring code to use tags in S3

* removing files from tsconfig

* fixing lint rules

* fixing spacing as local linter didnt catch those but the build did

* missed one space

* adding tests, cleaning up files

* removing trailing spaces failing on build

* adding DS_Store - make specific file to gitignore

* updating storybook to show pewpew latest version output

* Test mac and windows executables (#209)

* Added common constants for the different os executables to common

- To differentiate Mac in S3, we'll use pewpew.mac as the file name.
- These constants will be used by common, agent, and controller

* Updated the agent to remove hardcoded pewpew references

- The agent will now use os specific versions of the pewpew executable: pewpew (Linux), pewpew.exe (Windows), and pewpew.mac (Mac)
- Updated the README to add instructions for Mac and Windows Users on how to add an OS specific file and where

* Updated the controller to remove hardcoded pewpew and pewpew.zip references

- The controller will now use os specific versions of the pewpew executable: pewpew (Linux), pewpew.exe (Windows), and pewpew.mac (Mac)
- Updated the README to add instructions for Mac and Windows Users on how to add an OS specific file(s) and where

* Updated pewpew to the 0.5.13 release

* Removed deprecated fs and log calls from util

- Removed fs and logger calls from util so it can be used by client functions
- Added default exports of common util functions and constants

* Fixed issue with import from common bringing in fs into controller

* Added fixes for filtering out pre-release versions

* Fixed test that was only ignoring one pewpew executable

* Added sleep on windows to avoid race condition after unzipping files

* Fixed issue with integration tests

- POST /pewpew tests need to run before the GET tests to make sure the data is there
- After the deletes are completed we need to put back any versions we deleted

* Added fix for compiling next.js on Windows

- Symlinks do not work on Windows for compiling so we have to copy the file

* Added fix for acceptance tests on Windows

- Just like the integration tests, we must wait for the unzip to release the lock before we can access the files

* Fixed warning during Next.js build on invalid config

* Fixed security vulnerabilities

* Removed additional hard-coded latest and pewpew strings

* Fixed the getTags call to get the latest tags (#211)

* Fixed the getTags call to get the latest tags

- Unit and Integration tests were not catching the bug, fixed the tests, then fixed the code

* Cleaned up the logging of currentLatestVersion

* Updated version and dependencies (#212)

* Updated version and dependencies

- Updated date-fns, react-datepicker, rc-progress, typescript, storybook, etc
- Updated storybook for v8

* Updated major version due to the many controller dependencies

* Fixed the test that was intermittently failing. Added await

* Update pr script (#214)

* Updated pr script to prompt for coverage/acceptance tests

* Added no-tabs eslint rule and fix errors

* Updated the pewpew acceptance and integration to match fixes in scripting

* Bump h2 from 0.3.24 to 0.3.26 (#216)

Bumps [h2](https://github.com/hyperium/h2) from 0.3.24 to 0.3.26.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.26/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.24...v0.3.26)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Updated version and dependencies (#217)

* Updated version and dependencies

* Fixed the order in the pr script to run agent before controller

* Fixed the pr script to run the clean-up correctly and not exit on fail (#220)

* Fixed issue with shared s3 buckets (#221)

- PPaasTestStatus.getAllStatus on the root s3 folder were finding tests from the shared subfolders on shared s3 buckets. It was then erroring when trying to load the status for those files
- Added export constant for the shared folder which can be overridden by SHARED_ENVIRONMENT_PREFIX env
- Added code to the getAllStatus function to ignore s3 keys that start with SHARED_ENVIRONMENT_PREFIX when our KEYSPACE_PREFIX is an empty string

* Update Dependencies 2024-05-29 (#223)

* Updated version and dependencies

- Updated Storybook and Axios versions

* Simplified _document for styled-components

* Added code to upload pewpew for the agent tests if it's not already there.

* Updated PR flows to add Node v22 testing

* Removed reference to IMDSv1 command since we're not using it

* Fixed a typo in the provider docs (#227)

* Fixed a typo in the provider docs

- The example had endpoint rather than response
- Added some additional examples

* Fixed npm install to be npm ci

* Update Rust Dependencies 2024-05-29 (#226)

* Moved deprecated .cargo/config to config.toml

* Ignore clippy warning

* Updated body_reader and channel dependencies

* Updated config-wasm and hdr-histogram dependencies

* Updated additional dependencies

- Held back hyper, http, and yansi due to major changes

* Updated Yansi to latest version

- Converted Paint::disable to Yansi::disable
- Removed Windows specific code. Yansi now will try to enable on Windows and automatically disables if it can't activate.

* Added build test-server to the PR script and workflow

* Fix dependency loop with ahash on itself

- https://github.com/tkaitchuck/aHash/issues/95#issuecomment-1937448134
- https://github.com/rustwasm/wasm-bindgen/pull/3031#issuecomment-1442610289

* Updated yaml-rust to use yaml-rust2 due to deprecation

- https://github.com/chyh1990/yaml-rust/issues/197
- https://github.com/chyh1990/yaml-rust/issues/160#issuecomment-2008931473

* Updated cargo deny to remove deprecated entries

- https://github.com/EmbarkStudios/cargo-deny/pull/611
- https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html#the-clarify-field-optional

* Updated cargo lock file

* Updated code for deprecations

- Added tests for create_date_diff, then updated deprecated calls and confirmed tests still passed

* Added clippy ignore large results and errors

* Fixed tests to validate to UTC

- Since the PR flow runs on UTC, updated the local PR script to also run UTC
- Updated the create_date_diff test to validate UTC and print a warning to run UTC if it fails

* Update dependencies 2024-07-01 (#231)

* Updated version and lock file

* Updated Nyc coverage to latest

* Updated React-datepicker to latest

* Updated testing-library-react to the latest version

* Added logging of additional variables including injected ones

* Extended acceptance tests AWS (#233)

* Moved some of the shared acceptance code into a util file.

* Added code to upload files for integration and acceptance tests

* Added code to upload files needed for acceptance tests

* Cleaned up files

* Cleaned up files

* Simplified test more

* Fix acceptance test status file (#235)

* Fixed status file name for acceptance test

* FIxed contentType for Test Status File

* Bump openssl from 0.10.64 to 0.10.66 (#238)

Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.64 to 0.10.66.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.64...openssl-v0.10.66)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update rust dependencies 2024-07-18 (#236)

* Updated cargo lock file to latest versions

* Fixed cl…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-builder Area: Builder API C-enhancement Category: Raise on the bar on expectations E-hard Call for participation: Experience needed to fix: Hard / a lot M-breaking-change Meta: Implementing or merging this will introduce a breaking change.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants