Traffic Ops API endpoint for generating SSL keys needs validation

The /api/$version/deliveryservices/sslkeys/generate route currently doesn't validate the request payload very well. If the request payload is missing "deliveryservice" or has that key set to null, the request is passed through successfully. However, downstream components such as Traffic Router that make use of the /cdns/name/*/sslkeys.json endpoint expect the "deliveryservice" key to exist and have a value (the xml_id). Traffic Router can get into a state on startup where it is unable to serve requests until the offending record has been removed from Riak (that in itself is a bug which needs to be fixed - #2254).
Example bad request:
{
  "key": "badkey",
  "hostname": "cdn.anotherbadhostname.foo.net",
  "country": "US",
  "state": "CO",
  "city": "Denver",
  "organization": "blah",
  "businessUnit": "blah",
  "cdn": "my-cdn"
}

This endpoint should validate that the request payload has a deliveryservice that actually exists.

If you generate ssl keys using TP (https://localhost:8442/#!/delivery-services/:ds_id/ssl-keys/generate), the xml-id will be passed with the request so that's good.
But yes, if you use the API directly, I guess there's nothing to stop you from putting in a bad key or leaving it off entirely.


BrowserSync fails with watch task: Assertion failed: (0), function uv_close, file ../deps/uv/src/unix/core.c, line 187

Laravel Mix Version: 5.0.1 (npm list --depth=0)
Node Version (node -v): 13.6.0
NPM Version (npm -v): 6.13.4
OS: macOS

Description:
With a clean install of laravel mix on a non laravel project, browsersync fails and exits on the first file change after running npm run watch;
My webpack.mix.js file:
mix.js("src/app.js", "dist/")
	.sass("src/app.scss", "dist/")
	.browserSync("modular-wordpress.test");

Steps To Reproduce:

Run npm run watch
Modify a scss or js file
It fails with this output:

       Asset       Size     Chunks             Chunk Names
/dist/app.js    280 KiB  /dist/app  [emitted]  /dist/app
dist/app.css  127 bytes  /dist/app  [emitted]  /dist/app
Assertion failed: (0), function uv_close, file ../deps/uv/src/unix/core.c, line 187.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js "--watch"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      /Users/krimo/.npm/_logs/2020-01-18T18_07_52_384Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>watch: `npm run development -- --watch`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>watch script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      /Users/krimo/.npm/_logs/2020-01-18T18_07_52_407Z-debug.log

An update: after updating to Node 13.8.0 and npm 6.13.6, I no longer get the error message and the styles/scripts are compiled properly.
However, browsersync/mix does not inject the styles/reload for js. It's effectively like not having browsersync enabled at all. BrowserSync is working fine on other projects without mix; any insight @JeffreyWay ?

I am using Laravel Mix, Node v13.8.0, npm 6.13.6 and MacOS 10.13.6 and had this error too. I have updated BrowserSync on my package.json to ^2.26.7 run $ yarn install and it seems to be solved for now.


Snackbar not working properly in IOS

Get.snackBar not working properly in IOS but working properly in android.Snackbar is not coming at all in IOS.
Get.snackbar(
                          "Hello",
                          "",
                          margin: EdgeInsets.zero,
                          snackPosition: SnackPosition.BOTTOM,
                          snackStyle: SnackStyle.GROUNDED,
                          backgroundColor: Colors.black)

Get.snackBar not working properly in IOS but working properly in android.Snackbar is not coming at all in IOS.
Get.snackbar(
                          "Hello",
                          "",
                          margin: EdgeInsets.zero,
                          snackPosition: SnackPosition.BOTTOM,
                          snackStyle: SnackStyle.GROUNDED,
                          backgroundColor: Colors.black)

After setting instantInit = true in Get.snackbar, it is working fine.

Get.snackBar not working properly in IOS but working properly in android.Snackbar is not coming at all in IOS.
Get.snackbar(
                          "Hello",
                          "",
                          margin: EdgeInsets.zero,
                          snackPosition: SnackPosition.BOTTOM,
                          snackStyle: SnackStyle.GROUNDED,
                          backgroundColor: Colors.black)

After setting instantInit = true in Get.snackbar, it is working fine.

Sorry for the delay.
I will make instantInit = true the default in future updates.
This is not a problem with Get, but with Flutter, which sometimes hangs in the SchedulingBinding.instance, and while they don't fix it, it might be better to make the default startup automatic.
Glad you solved it on your own.


Could not read iceberg table from s3 "...metadata/version-hint.text": 404 (Not Found)"

What happens?
Can't read iceberg table created with Trino on s3.
D SELECT count(*) FROM iceberg_scan('s3://test/iceberg_p2/orders'); Error: HTTP Error: Unable to connect to URL "https://test.gateway.storjshare.io/iceberg_p2/orders/metadata/version-hint.text": 404 (Not Found) D
trying same way but local drive:
D SELECT count(*) FROM iceberg_scan('/Users/yuriygavrilov/Downloads/orders', ALLOW_MOVED_PATHS=true); Error: IO Error: Cannot open file "/Users/yuriygavrilov/Downloads/orders/metadata/version-hint.text": No such file or directory
it seems the problem in file metadata/version-hint.text but why this is mandatory to have it? .. Trino didn't ask it.
To Reproduce
try to open this with iceberg format
orders.zip
OS:
14.0 (23A344)
DuckDB Version:
v0.9.1
DuckDB Client:
cli
Full Name:
Yuriy Gavrilov
Affiliation:
S7 Airlines
Have you tried this on the latest main branch?
I have not tested with any build
Have you tried the steps to reproduce? Do they include all relevant data and configuration? Does the issue you report still appear there?

[X] Yes, I have

This is a duplicate of https://github.com/duckdb/duckdb_iceberg/issues/10. This extension used the version-hint produced by some services to statically read the table without a catalog. Implementation of different catalogs is planned, but in the meantime you can use a different tool to get the most recent version of a table, then pass the metadata file directly to the ICEBERG_SCAN function: https://github.com/duckdb/duckdb_iceberg/pull/18

I have always a problem with version-hint not found even when i'm using the version duckdb-1.1.3
so my solution is to find the latest version as you say @samansmink and it work very well, Thank you
i share my code with you
def find_latest_metadata(conn, iceberg_table_path):
    """Find the latest metadata file for an Iceberg table"""
    try:
        # List all metadata files
        print("Searching for metadata files...")
        metadata_files = conn.execute(f"""
            SELECT *
            FROM glob('{iceberg_table_path}/metadata/*.json')
            ORDER BY file DESC
        """).fetchdf()

        if metadata_files.empty:
            raise Exception("No metadata files found")

        print(f"\nFound {len(metadata_files)} metadata files:")
        print(metadata_files)

        # Extract metadata file numbers
        def extract_number(filename):
            match = re.search(r'/(\d{5})-', filename)
            return int(match.group(1)) if match else -1

        metadata_files['number'] = metadata_files['file'].apply(extract_number)
        latest_metadata = metadata_files.loc[metadata_files['number'].idxmax(), 'file']

        print(f"\nLatest metadata file: {latest_metadata}")
        return latest_metadata

    except Exception as e:
        print(f"Error finding latest metadata: {str(e)}")
        return None

how to use it
iceberg_table_path = "s3://warehouse/nyc/taxis"
latest_metadata = find_latest_metadata(conn, iceberg_table_path)

query = """
    SELECT
        COUNT(*) AS total_records,
        AVG(trip_distance) AS avg_trip_distance,
        MAX(total_amount) AS max_total_amount,
        MIN(fare_amount) AS min_fare_amount
    FROM iceberg_scan('{metadata_file}')
"""


Rename "CII Best Practices Badge" to "OpenSSF Best Practices Badge"

Describe the bug
Rename "CII Best Practices Badge" to "OpenSSF Best Practices Badge"; the project recently changed its hame.

@naveensrinivasan would you able to tackle this? Can be a P1/P2 item in the current list we have.

I can.

Suggestion:
Copy/paste the existing check/use the same code path for the new one.
Mark the existing as deprecated in one release.
Remove in the next release.

May I suggest that we also change the check description to make it clear we are verifying if the project completed the OpenSSF Best Practices form?
Because, with the current description, it sounds like the check wants you to add a badge to your project. You might not want to display such badge, so it refrain users from completing this check.

May I suggest that we also change the check description to make it clear we are verifying if the project completed the OpenSSF Best Practices form?

It shouldn't. It should determine how fully it meets a badge. You can "fill in a form" and not earn a BP badge. In fact, you can "fill in a form" to show you meet 0 requirements today :-).

Because, with the current description, it sounds like the check wants you to add a badge to your project. In fact, if you score a 0/10 in this check, Scorecard reports "no badge found", but deep down it looks for the form, not the badge. You might not want to display such badge, so it refrain users from completing this check.

If I understand you correctly, that sounds like a bug, let's not enshrine that. I may not be understanding you correctly. Where's the code that does the evaluation?
Here's the current description: https://github.com/ossf/scorecard/blob/main/docs/checks.md#cii-best-practices

The OpenSSF Best Practices badge has 3 tiers: passing, silver, and gold. We give full credit to projects that meet the gold criteria, which is a significant achievement for many projects. Lower scores represent a project that is at least working to achieve a badge, with increasingly more points awarded as more criteria are met.
gold badge: 10
silver badge: 7
passing badge: 5
in progress badge: 2

I'd like to revisit this grading. "Gold" is really hard to achieve. Earning passing is a big deal. I'd suggest this kind of ranking instead:

Gold: 10
Silver: 9
Passing: 8
In progress: Rate 1..5 depending on progress (1=started but 0 progress, 5=99%, convert to closest integer).

I think you're using the term "badge" to mean a graphical image, but in the "best practices badge" we mean the English word, that is, something like an indication of meeting certain criteria. It doesn't matter if a graphical image is displayed, the issue is, "has this project met certain criteria"?

Also: I would delete the text & list beginning with "To earn the passing badge, the project MUST:". That isn't the full list of criteria; the full list is linked-to above.

I think you're using the term "badge" to mean a graphical image, but in the "best practices badge" we mean the English word, that is, something like an indication of meeting certain criteria. It doesn't matter if a graphical image is displayed, the issue is, "has this project met certain criteria"?

Yes, I meant "badge" as a graphical image. I do understand it has a different meaning in English now, thanks for the explanation. Still, I believe "badge" in the GitHub context maps to README badges such as workflow status badges, not "meeting certain criteria".

If I understand you correctly, that sounds like a bug, let's not enshrine that. I may not be understanding you correctly. Where's the code that does the evaluation?

https://github.com/ossf/scorecard/blob/2bde7ca25be9bdc798a6e6ca40e192a24058e2b4/checks/evaluation/cii_best_practices.go#L44

Yes, I meant "badge" as a graphical image. I do understand it has a different meaning in English now, thanks for the explanation. ...

The project is literally named the "OpenSSF Best Practices badge", and I think no one is interested in a rename.
This is not a big deal, I think the Scorecard text could be tweaked to make this very clear. Here's one proposal.
FIRST: The Scorecard README https://github.com/ossf/scorecard says:
Does the project have an [OpenSSF (formerly CII) Best Practices Badge](https://bestpractices.coreinfrastructure.org/en)?

I would change that to:
Has the project earned a [OpenSSF (formerly CII) Best Practices Badge](https://bestpractices.coreinfrastructure.org/) at the passing, silver, or gold level?

Notice the switch from "have" to "earned" (which is what matters), and the express mention of passing / silver / gold level; both make it clear that this isn't just about image. Also, I removed "/en" from the URL; the "/en" forces English display. Don't force the language unless you know you want the user to only see the English display. In this case, I think you want the user to see the browser's preferred locale.
SECOND:
In the details at https://github.com/ossf/scorecard/blob/main/docs/checks.md#cii-best-practices
I would change this text:
This check determines whether the project has earned an OpenSSF (formerly CII) Best Practices Badge, which indicates that the project uses a set of security-focused best development practices for open source software. The check uses the URL for the Git repo and the OpenSSF Best Practices badge API.

The OpenSSF Best Practices badge has 3 tiers: passing, silver, and gold. We give full credit to projects that meet the [gold criteria](https://bestpractices.coreinfrastructure.org/criteria/2), which is a significant achievement for many projects. Lower scores represent a project that is at least working to achieve a badge, with increasingly more points awarded as more criteria are met.

Into this:
This check determines whether the project has earned an OpenSSF (formerly CII) Best Practices Badge at the passing, silver, or gold level. The OpenSSF Best Practices badge indicates whether or not the project uses a set of security-focused best development practices for open source software. The check uses the URL for the Git repo and the OpenSSF Best Practices badge API.

The OpenSSF Best Practices badge has 3 tiers: passing, silver, and gold. We give full credit to projects that meet the [gold criteria](https://bestpractices.coreinfrastructure.org/criteria/2), which is a very significant achievement for projects and requires multiple developers. Lower scores represent a project that has met the silver criteria, passing criteria, or trying achieve the passing badge, is at least working to achieve a badge, with increasingly more points awarded as more criteria are met. Note that even meeting the passing criteria is a significant achievement.

Delete the text "To earn the passing badge, the project MUST:" and the list that follows it. The page already links to the full criteria; listing the criteria here suggests it's the complete list (and it's not).
THIRD:
Regarding:
scorecard/checks/evaluation/cii_best_practices.go
Line 44 in 2bde7ca
Change:
 results = checker.CreateMinScoreResult(name, "no badge detected"

to:
 results = checker.CreateMinScoreResult(name, "no effort to earn a best practices badge found"

FOURTH:
As a separate action, I suggest using a different value ranking (you're renaming it anyway):

Gold: 10
Silver: 9
Passing: 8
In progress: Rate 1..5 depending on progress (1=started but 0 progress, 5=99%, convert to closest integer).
Not in progress: 0

Passing is really good, only about 20% of current projects pursuing a badge achieve a passing badge. Gold is really hard; it requires multiple developers, and that fact by itself excludes the majority of OSS projects.

I agree with the suggestions

Okay, I've create PR https://github.com/ossf/scorecard/pull/2907 to clarify things.
That will give us a better starting point, as it's clearer, but it does NOT resolve this issue. It does not rename the Scorecard criterion, nor does it change the scoring system as suggested above. It simply makes the existing system easier to understand.
So hopefully that PR will be accepted, and that will make it easier to implement this one :-).

Okay, back to the main discussion, presuming that PR https://github.com/ossf/scorecard/pull/2907 or something like it will be accepted.
The main problem now is there's a metric named "CII-Best-Practices" that should be renamed to "OpenSSF-Best-Practices". If we're going to rename it, I suggest also updating to a different scoring system, it's an ideal time to do it. My recommendation, as noted above:

Gold: 10
Silver: 9
Passing: 8
In progress: Rate 1..5 depending on progress (1=started but 0 progress, 5=99%, convert to closest integer).
Not in progress: 0

I personally think the metric should have more weight in Scorecard, but keeping the existing weight is okay if others prefer it as-is. I think it's more important to have a better scoring regardless of its weight.
If possible, I'd love for the Scorecard JSON file to refer to the URL of the Best Practices badge entry. That way, readers of this metric could quickly jump to the badge entry to learn more information. E.g., here's an example of a current result:

{"name":"CII-Best-Practices","score":10,"reason":"badge detected: gold","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/e1d4f3726920cc49615c1cae8d920a75975500d3/docs/checks.md#cii-best-practices"}}

Somewhere in there it'd be great to have a link to https://bestpractices.coreinfrastructure.org/en/projects/1 (e.g., inside "documentation" add "additional-information": "https://bestpractices.coreinfrastructure.org/en/projects/1"), so that it's easy to start from the Scorecard data and go to the Best Practices Badge data.
I don't know if it's important to continue to support the older metric "CII-Best-Practices". If you do, you could keep the old score with a weight of "0". But unless some user needs it, I'd just drop it, it's confusing & it's not clear it's helpful for backwards compatibility.

@david-a-wheeler https://github.com/ossf/scorecard/issues/1549#issuecomment-1522153656 is really hard to follow because GitHub forces users to independently horizontally scroll each blob of text.
diff tagged markdown
Here's the laziest improvement to reading the changes (just grouping everything together into ```diff tagged markdown:
-Does the project have an [OpenSSF (formerly CII) Best Practices Badge](https://bestpractices.coreinfrastructure.org/en)?
+Has the project earned a [OpenSSF (formerly CII) Best Practices Badge](https://bestpractices.coreinfrastructure.org/) at the passing, silver, or gold level?

-This check determines whether the project has earned an OpenSSF (formerly CII) Best Practices Badge, which indicates that the project uses a set of security-focused best development practices for open source software. The check uses the URL for the Git repo and the OpenSSF Best Practices badge API.
-
-The OpenSSF Best Practices badge has 3 tiers: passing, silver, and gold. We give full credit to projects that meet the [gold criteria](https://bestpractices.coreinfrastructure.org/criteria/2), which is a significant achievement for many projects. Lower scores represent a project that is at least working to achieve a badge, with increasingly more points awarded as more criteria are met.
+This check determines whether the project has earned an OpenSSF (formerly CII) Best Practices Badge at the passing, silver, or gold level. The OpenSSF Best Practices badge indicates whether or not the project uses a set of security-focused best development practices for open source software. The check uses the URL for the Git repo and the OpenSSF Best Practices badge API.
+
+The OpenSSF Best Practices badge has 3 tiers: passing, silver, and gold. We give full credit to projects that meet the [gold criteria](https://bestpractices.coreinfrastructure.org/criteria/2), which is a very significant achievement for projects and requires multiple developers. Lower scores represent a project that has met the silver criteria, passing criteria, or trying achieve the passing badge, is at least working to achieve a badge, with increasingly more points awarded as more criteria are met. Note that even meeting the passing criteria is a significant achievement.

- results = checker.CreateMinScoreResult(name, "no badge detected"
+ results = checker.CreateMinScoreResult(name, "no effort to earn a best practices badge found"

diff tagged markdown with text wrapped for readability
-Does the project have an
+Has the project earned a
 [OpenSSF (formerly CII) Best Practices Badge](
-https://bestpractices.coreinfrastructure.org/en
-)?
+https://bestpractices.coreinfrastructure.org/
+) at the passing, silver, or gold level?

 This check determines whether the project has earned an OpenSSF (formerly CII) Best Practices
-Badge, which indicates that
+Badge at the passing, silver, or gold level.
+The OpenSSF Best Practices badge indicates whether or not
 the project uses a set of security-focused best development practices for open source software.
 The check uses the URL for the Git repo and the OpenSSF Best Practices badge API.

 The OpenSSF Best Practices badge has 3 tiers: passing, silver, and gold.
 We give full credit to projects that meet the [gold criteria](https://bestpractices.coreinfrastructure.org/criteria/2),
-which is a significant achievement for many projects.
+which is a very significant achievement for projects and requires multiple developers.
 Lower scores represent a project that
-is at least working to achieve a badge,
+has met the silver criteria, passing criteria, or trying achieve the passing badge,
+is at least working to achieve a badge,
 with increasingly more points awarded as more criteria are met.
+Note that even meeting the passing criteria is a significant achievement.

 results = checker.CreateMinScoreResult(name,
-"no badge detected"
+"no effort to earn a best practices badge found"

--- fwiw, the text changes proposed seem quite reasonable (once I'm able to actually compare before/after).

jsoref - I think the text changes were already merged in https://github.com/ossf/scorecard/pull/2907 - I think what's undone is renaming the criterion (which changes the name of a key!).

Newer structure probe referred to as OpenSSF Best Practices, but older references remain CII Best Practices.
Review old references in code and documentation and update. ~1 hr effort.

but older references remain CII Best Practices

I believe we intentionally didn't rename the check in the code, for both backwards compatibility reasons, as well as BigQuery reasons.


phoenix integration with 1.4.6

This PR contains a code patch for importing data into Apache Phoenix tables from SQL.
The following tasks are pending
a) Unit Tests. As the third party tests related to HBase are failing on a fresh checkout from GIT , I couldn't complete writing all the tests.
b) Code Template format. Are there any specific Eclipse Code Template Formats that I should be configuring .
c) Right now the code is built against 1.4.6 v of Sqoop as we have seen users requesting for Sqoop support in Phoenix mailing list. Based on the comments and feedback, I will come up with a patch against master branches.

Just taking a look through this -- having Phoenix support in Sqoop would be great!
I know that this is an initial cut, but just a few remarks on the code:

Around code style:

it looks like the general Sqoop convention is to use 2 spaces for indentation, but this code uses 4 spaces
the Sqoop code includes a space after an if and before the opening parenthesis, but this code omits that space

The PhoenixImportJob class extends the DataDrivenImportJob class in the com.cloudera.sqoop package, but this is deprecated -- I think that it should probably extend the DataDrivenImportJob in the org.apache.sqoop package. Same thing for the imports in that class.

I'll add a couple of other things I noticed as comments in the commits.

Thanks Gabriel Reid. I will make the necessary corrections and have the patch updated to the ticket and open a RB.

hi, gabrielreid .
i don't know how can i get those code use git.....
can you help me~
thank you ~

any update on this matter ?

I will be nice to see sqoop to phoenix import.


[BanyanDB] Tracking the project bootstrap

I need to figure out below items to set up the project:

[x] The bus system for the data ingesting
[x] Configuraiton system
[x]  Running/Lifecycle framework
[x] Async query framework
[x]  Logging system
[x]  Building tool-chain(linter, Makefile, license checking, etc)
[x] CI

Once finishing the above, we could create fined tasks, then assign them to anyone who wants to contribute.

All sub-tasks are done.


Warn When dispatching During Middleware Setup

Recreates #1345
Closes #1240
Switched this to throw an error now.

Ugh, forgot the branch :)


Explicitly allow side effects for a failed SC

Since PTE updates are specified to occur as a result of "memory accesses" it is possible to interpret the old wording as requiring no PTE update for a failed SC, since there is no memory access.  However, the PTE update is part of the translation process, which on natural implementations will occur before the reservation validity check can occur.
This is consistent with the wording in "Addressing and Memory Protection" which allows traps to prevent the memory access without preventing the PTE update.
(Filing this in a dedicated issue so it can be considered for 1.13.)

I'll bring this up in the ARC meeting next week.  I certainly agree with the intent with respect to PTE A/D bits.
My first question, as IIRC @gfavor mentioned on another thread, is whether this is already a consequence of something already written in the spec.  (I can't figure out what that might be, but he might know.)
My second question is whether "side effects associated with a memory access by the privileged architecture" is too vague or even too broad.  Do we want to include MMIO side effects in that list?  (After all, they arguably fit that description.)  The answer might well be "we don't care", but it would need to be discussed.
We might prefer wording like "for the purposes of memory protection, a failed SC may be treated like a store".  To me, this would subsume the PMP issue and the A/D bit issue, while being less vague.

I agree that the current text should be clarified, and in the sort of way that is proposed.  I'm not aware of something elsewhere in the spec that makes this matter clear.  Although even if there is something somewhere, by the very fact that it isn't obvious to us suggests that it would still be good to add this clarification.  Especially since a literal reading of the current text indicates that notraps and side effects should occur.
I also agree with Andrew that the added text should not be so vague (for generality sake) about what traps and side-effects are being referred to.  That's just creating a vague "exercise for the reader".  And even if a reader figures out much of what is being referred to, how do they know that they have identified all the things that are being referred to.  Off-hand I like Andrew's suggestion for less vague text.

And, to be clear, I think the current text change is not quite suitable as a final version. Something like Andrew's suggestion needs to be incorporated.

I'm fine with Andrew's wording.

Thanks for updating the PR.  We should still discuss this one in the ARC meeting, but hopefully I can simply click the merge button afterwards.

Thank you, @sorear!


poly.containsLocation(): not present in '@ionic-native/google-maps'

I'm submitting a ...  (check one with "x")
[x ] question
[ ] any problem or bug report
[x ] feature request
the member Poly does not seem to be implemented in the plugin even though it is present in the ionic native documentation. How could I proceed in order to be able to make use of poly.containsLocation, without having to make my own algoythm?
thank you

https://github.com/wf9a5m75/ionic-googlemaps-demo/blob/master/src/pages/poly/contains-location/contains-location.ts


Fix single node remove

This PR fixes a couple of bugs around the last node leaving a cluster peacefully:

A node stuck in leaving state could not handle a subsequent cluster destroy
Upon entering leaving state, the scheduler could lose contact with the executor, rendering it unable to tell it to finish correctly
The last node in a cluster does not need to leave a cluster at all

NB A subsequent node remove on an already leaving node will be a no-op. To forcibly stop that node, use node remove --force or cluster destroy

LGTM 👍


Move comparator context to external global state

What feature would you like to have?
We need to improve the app performance by moving the repo info + filters applied from React Contexto to a proper global state solution.
The state manager chosen would be zustand.
What problem will this feature solve?
Right now, every change to the repo selected or filters applied is causing re-renders everywhere. This affects the app performance. You can notice that when selecting a huge range of versions to compare: for a bit you can see an error message that blinks right before showing the results.
Do you want to help make the feature?
Yes
Is there anything else we need to know?
No response

This option sounds great too: https://github.com/teafuljs/teaful


[Bug]: When snapshot testing, jest throws Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'VectorIcons' could not be found

Which package are you using?
@react-native-vector-icons/*
What platform(s) does this occur on?
Android, iOS
What happened?
After scaffolding a new react native app, the default tests pass.
But, upon installing react-native-vector-icons and using them in a component, the test suite crashes with:
Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'VectorIcons' could not be found. Verify that a module by this name is registered in the native binary.

Unsuccessful Workarounds
Mocking out RNVI: https://github.com/thehale/reproduction-react-native-vector-icons-with-jest-invariant-violation/tree/NOT_A_FIX_mocks
Using moduleNameMapper: https://github.com/thehale/reproduction-react-native-vector-icons-with-jest-invariant-violation/tree/NOT_A_FIX_moduleNameMapper
Relevant log output
$ yarn test

yarn run v1.22.15
$ jest
 FAIL  __tests__/App.test.tsx
  ● Test suite failed to run

    Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'VectorIcons' could not be found. Verify that a module by this name is registered in the native binary.

      23 | } from 'react-native';
      24 |
    > 25 | import EntypoIcon from '@react-native-vector-icons/entypo';
         | ^
      26 | import type {PropsWithChildren} from 'react';
      27 | import React from 'react';
      28 |

      at invariant (node_modules/invariant/invariant.js:40:15)
      at Object.getEnforcing (node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js:47:12)
      at Object.getEnforcing (node_modules/@react-native-vector-icons/common/src/NativeVectorIcons.ts:10:36)
      at Object.require (node_modules/@react-native-vector-icons/common/src/create-icon-set.tsx:5:1)
      at Object.require (node_modules/@react-native-vector-icons/common/src/index.ts:3:1)
      at Object.require (node_modules/@react-native-vector-icons/entypo/src/index.ts:9:1)
      at Object.require (App.tsx:25:1)
      at Object.require (__tests__/App.test.tsx:7:1)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.812 s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Minimal reproducible example
https://github.com/thehale/reproduction-react-native-vector-icons-with-jest-invariant-violation
A newly scaffolded app passes tests

Clone the repo
Checkout the blank app scaffolded in the first commit: git checkout HEAD~
Install dependencies: yarn
Run the tests: yarn test
See the tests pass

Adding react-native-vector-icons causes the test suite to crash

Switch to the commit with RNVI: git checkout main
Install updated dependencies: yarn
Run the tests again: yarn test
See the test suite crash.

Your computer environment
info Fetching system and libraries information...
(node:9112) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
System:
  OS: macOS 15.1.1
  CPU: (6) x64 Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz
  Memory: 161.91 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.12.0
    path: ~/.nvm/versions/node/v22.12.0/bin/node
  Yarn:
    version: 1.22.15
    path: /usr/local/bin/yarn
  npm:
    version: 10.9.0
    path: ~/.nvm/versions/node/v22.12.0/bin/npm
  Watchman:
    version: 2<IP_ADDRESS>
    path: /usr/local/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /usr/local/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.1
      - iOS 18.1
      - macOS 15.1
      - tvOS 18.1
      - visionOS 2.1
      - watchOS 11.1
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.2 AI-242.23339.11.2421.12700392
  Xcode:
    version: 16.1/16B40
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: javac 17
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /Users/jhale/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.0.1
    wanted: 15.0.1
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.76.5
    wanted: 0.76.5
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

I can get a different error message if I mock out the Turbo Modules as described in this StackOverflow post: https://stackoverflow.com/a/77498117/14765128
$ yarn test

yarn run v1.22.15
$ jest
 FAIL  __tests__/App.test.tsx
  ● Test suite failed to run

    Jest encountered an unexpected token

    Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.

    Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.

    By default "node_modules" folder is ignored by transformers.

    Here's what you can do:
     • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
     • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/configuration
    For information about custom transformations, see:
    https://jestjs.io/docs/code-transformation

    Details:

    /Users/jhale/git/RNVIandJest/node_modules/@react-native-vector-icons/entypo/fonts/Entypo.ttf:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){

    SyntaxError: Invalid or unexpected token

      23 | } from 'react-native';
      24 |
    > 25 | import EntypoIcon from '@react-native-vector-icons/entypo';
         | ^
      26 | import type {PropsWithChildren} from 'react';
      27 | import React from 'react';
      28 |

      at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
      at Object.require (node_modules/@react-native-vector-icons/entypo/src/index.ts:15:15)
      at Object.require (App.tsx:25:1)
      at Object.require (__tests__/App.test.tsx:7:1)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.599 s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Reproduction: https://github.com/thehale/reproduction-react-native-vector-icons-with-jest-invariant-violation/tree/NOT_A_FIX-mock-turbo-instead-errors-unexpected-token

I suspect you either need to add @react-native-vector-icons/common and/or on ios pod install

I suspect you either need to add @react-native-vector-icons/common

@react-native-vector-icons/common is in the package.json of the reproduction example: https://github.com/thehale/reproduction-react-native-vector-icons-with-jest-invariant-violation/blob/main/package.json#L13

and/or on ios pod install

RNVI works fine on the device itself. The error highlighted in this issue only arises when running Jest tests, which are JS only, no native component.
Typically, when I face this sort of error, I simply mock out the native calls, but even that approach is not working here (see Unsuccessful Workarounds)

Unfortunately, already had common and ran pod install.. Even did a full cache clear, no dice.
 pod deintegrate
rm Podfile.lock
rm -rf build
 pod cache clean --all
 pod install

Ended up going back to the old way of doing it for now.

@thehale Apologies I didn't have time to look at this properly during the week.
I've explored at the repro, and I understand the issue now.
I think the real answer will be the change we are considering in #1682
I suspect there is some way to mock this away as a workaround, but I don't have enough jest experience to help.

@johnf No worries! I'll keep trying to find a workaround too.

I have the same problem,  did u found a solution ? @thehale


Cannot delete thousand selected files

I wanted to delete more than 1300 files in the root directory of my web server.
After selecting the files  to delete, I pressed bottom delete button but no file has been deleted, all selected files still remain within the root directory of my web server.
The project tinyfilemanager has the same issue, see #53

Thank you for the tip :-)
But I have finally deleted the files using my FTP client.
Could be nice to display a warning when number of selected files is greater than max_input_vars, isn't it?


Sidebar not working in IE

My sidebar dosen't collapse in IE but works perfectly in Chrome. Any ideas?
https://influencers-agent-dev.azurewebsites.net/

hi @tsegato
please update @coreui/coreui to 2.0.19 in dependencies and let us know the result


"Avatar of Fire" on Xoph's Blood isn't being recognized as the Keystone

Just started theorycrafting and noticed that I am still getting increases from Avatar of Fire although Xoph's Blood is slotted it.

Are you absolutely sure? Because I can't reproduce it, and given how keystones are handled by the program it is quite impossible for this to happen.

Ok, that's weird. I can'reproduce it either now.
Sorry!


snake_case client api

Issue #1260

Fantastic @dcolligan, thanks for getting stuck into this! I think we will need to snake_case the full client module, or it'll be a real mess for clients to use. Otherwise, looking great.

Great work, thanks @dcolligan. +1 modulo minor issue above.

fixed and merging


azure-cli homebrew release process update request

👋  per discussions in here, you folks need to update the homebrew release process.
Also, I wonder if it would be possible to publish that big source archive to pypi and use that instead. Thanks!
cc @Juliehzl @fengzhou-msft

Thanks for submitting the issue. We'll work on it during the next Sprint.

FYI, it would be useful to update the URL to PyPI to enable the automation of resource updates using brew update-python-resources. The current azure-cli formula seems to have a large number of outdated resources:
https://github.com/carlocab/homebrew-core/commit/57dbe4a285e2af1c5a43e70dadacb20d5cc0cb53
One outdated resource caused this problem: https://github.com/Homebrew/brew/issues/10152#issuecomment-753334171
I fixed that particular problem here https://github.com/Homebrew/homebrew-core/pull/68126, but there's no telling what other problems the still outdated resources could cause.

FYI, it would be useful to update the URL to PyPI to enable the automation of resource updates using brew update-python-resources. The current azure-cli formula seems to have a large number of outdated resources:
https://github.com/carlocab/homebrew-core/commit/57dbe4a285e2af1c5a43e70dadacb20d5cc0cb53
One outdated resource caused this problem: https://github.com/Homebrew/brew/issues/10152#issuecomment-753334171
I fixed that particular problem here https://github.com/Homebrew/homebrew-core/pull/68126, but there's no telling what other problems the still outdated resources could cause.

@carlocab we used az.completion file from our current source code tarball and it's not in the azure-cli pypi source package. Is there some easy ways to use the az.completion file from some URL in the formula if we switch to use the pypi resource for azure-cli packages?

@carlocab we used az.completion file from our current source code tarball and it's not in the azure-cli pypi source package. Is there some easy ways to use the az.completion file from some URL in the formula if we switch to use the pypi resource for azure-cli packages?

Hmm, one way might be to declare az.completion in a resource block, but I think that might break the automation in update-python-resources, as I believe it only works when all the resources come from PyPI.
@Rylan12, thoughts?

Hmm, one way might be to declare az.completion in a resource block, but I think that might break the automation in update-python-resources, as I believe it only works when all the resources come from PyPI.
@Rylan12, thoughts?

Yeah, adding as a resource wouldn't cooperate well with update-python-resources in its current form. There might be another way we can get around that, but I can't think of it off the top of my head.
One thing that some formulae do is have a separate completion formula. So a user could brew install azure-cli but would need to brew install azure-cli-completion if they wanted completion. Probably not ideal as a user would have to install two formulae. Although we could probably put a message in the caveats instructing users to install the completions formula if desired.

Yeah, adding as a resource wouldn't cooperate well with update-python-resources in its current form. There might be another way we can get around that, but I can't think of it off the top of my head.
One thing that some formulae do is have a separate completion formula. So a user could brew install azure-cli but would need to brew install azure-cli-completion if they wanted completion. Probably not ideal as a user would have to install two formulae. Although we could probably put a message in the caveats instructing users to install the completions formula if desired.

@carlocab @Rylan12 thanks for the suggestions. I'm also thinking about moving the az.completion file inside the azure-cli directory, and package it the azure-cli tarball, then I assume it could be accessed in the install step?

@carlocab @Rylan12 thanks for the suggestions. I'm also thinking about moving the az.completion file inside the azure-cli directory, and package it the azure-cli tarball, then I assume it could be accessed in the install step?

Assuming the file is in the source tarball that's downloaded from PyPI (the "Source" file type at https://pypi.org/project/azure-cli/#files), it should be accessible in the install method.
As for how to ensure that it makes it into the tarball, I'm really not sure. It looks like the contents of the tarball nearly matches the src/azure-cli/ directory, so that maybe that's where it goes (maybe that's what you're suggesting). There already is a az.completion.sh file there, so that seems like an appropriate place I think.
Not sure if that's helpful. You know a million times more about azure-cli than I do so it's hard for me to weigh in. The only thing I can say for certain is that if it makes it in the PyPI tarball and that's specified as the formula's url, we will be able to access it in the install method.

Assuming the file is in the source tarball that's downloaded from PyPI (the "Source" file type at https://pypi.org/project/azure-cli/#files), it should be accessible in the install method.
As for how to ensure that it makes it into the tarball, I'm really not sure. It looks like the contents of the tarball nearly matches the src/azure-cli/ directory, so that maybe that's where it goes (maybe that's what you're suggesting). There already is a az.completion.sh file there, so that seems like an appropriate place I think.
Not sure if that's helpful. You know a million times more about azure-cli than I do so it's hard for me to weigh in. The only thing I can say for certain is that if it makes it in the PyPI tarball and that's specified as the formula's url, we will be able to access it in the install method.


No command is working

It shows me the version of the crates beside, but when I try to run some commands when I stay on the same line with crate name - it doesn't do anything at all. For example I try to call lua require('crates').open_crates_io() on any crate and it doesn't work. The only command which works - lua require('crates').show_versions_popup()

What version, of neovim are you using?
On which platform are you?
What does :checkhealth say?

@Saecki I'm having the same issue.
I'm on Neovim nightly v0.10.0-dev-dfa8b58
This is the output of :checkhealth:

Click to expand
==============================================================================
crates: health#crates#check

Checking for required plugins ~
- WARNING health#report_start is deprecated, use vim.health.start instead. :help |deprecated|
  This feature will be removed in Nvim version 0.11
- OK plenary.nvim installed
- WARNING health#report_ok is deprecated, use vim.health.ok instead. :help |deprecated|
  This feature will be removed in Nvim version 0.11
- OK null-ls.nvim installed

Checking for external dependencies ~
- OK curl installed
- OK xdg-open installed

==============================================================================
lazy: require("lazy.health").check()

lazy.nvim ~
- OK Git installed
- OK no existing packages found by other package managers
- OK packer_compiled.lua not found
- WARNING {zk-nvim}: unknown key <requires>

==============================================================================
mason: require("mason.health").check()

mason.nvim ~
- OK mason.nvim version v1.8.0
- OK PATH: prepend
- OK Providers:
    mason.providers.registry-api
    mason.providers.client
- OK neovim version >= 0.7.0

mason.nvim [Registries] ~
- OK Registry `github.com/mason-org/mason-registry version: 2023-09-27-dutch-porgy` is installed.

mason.nvim [Core utils] ~
- OK unzip: `UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send`
- OK wget: `GNU Wget 1.21.4 built on linux-gnu.`
- OK curl: `curl 8.3.0 (x86_64-pc-linux-gnu) libcurl/8.3.0 OpenSSL/3.1.2 zlib/1.3 brotli/1.0.9 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.11.0 nghttp2/1.56.0`
- OK gzip: `gzip 1.13`
- OK tar: `tar (GNU tar) 1.35`
- OK bash: `GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)`
- OK sh: `Ok`

mason.nvim [Languages] ~
- WARNING luarocks: not available
  - ADVICE:
    - spawn: luarocks failed with exit code - and signal -. luarocks is not executable
- WARNING Composer: not available
  - ADVICE:
    - spawn: composer failed with exit code - and signal -. composer is not executable
- WARNING PHP: not available
  - ADVICE:
    - spawn: php failed with exit code - and signal -. php is not executable
- OK Go: `go version go1.21.1 linux/amd64`
- OK Ruby: `ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux]`
- OK node: `v16.20.0`
- OK cargo: `cargo 1.70.0 (ec8a8a0ca 2023-04-25)`
- WARNING julia: not available
  - ADVICE:
    - spawn: julia failed with exit code - and signal -. julia is not executable
- OK python: `Python 3.11.5`
- OK java: `openjdk version "<IP_ADDRESS>" 2023-08-24`
- OK RubyGem: `3.3.25`
- OK javac: `javac <IP_ADDRESS>`
- OK npm: `8.19.4`
- OK pip: `pip 23.2.1 from /usr/lib/python3.11/site-packages/pip (python 3.11)`
- OK python venv: `Ok`

mason.nvim [GitHub] ~
- OK GitHub API rate limit. Used: 0. Remaining: 5000. Limit: 5000. Reset: ons 27 sep 2023 12:20:10.

==============================================================================
noice: require("noice.health").check()

noice.nvim ~
- OK **Neovim** >= 0.8.0
- OK You're using a GUI that should work ok
- OK **vim.go.lazyredraw** is not enabled
- OK **nvim-notify** is installed
- WARNING You added `S` to `vim.opt.shortmess`. Search count messages will not be handled by Noice. So no virtual text for search count.
- OK **TreeSitter vim** parser is installed
- OK **TreeSitter regex** parser is installed
- OK **TreeSitter lua** parser is installed
- OK **TreeSitter bash** parser is installed
- OK **TreeSitter markdown** parser is installed
- OK **TreeSitter markdown_inline** parser is installed
- OK `vim.notify` is set to **Noice**
- OK `vim.lsp.handlers["textDocument/hover"]` is set to **Noice**
- OK `vim.lsp.handlers["textDocument/signatureHelp"]` is set to **Noice**
- OK `vim.lsp.handlers["window/showMessage"]` is set to **Noice**
- WARNING `vim.lsp.util.convert_input_to_markdown_lines` is not configured to be handled by **Noice**
- WARNING `vim.lsp.util.stylize_markdown` is not configured to be handled by **Noice**
- WARNING `cmp.entry.get_documentation` is not configured to be handled by **Noice**

==============================================================================
null-ls: require("null-ls.health").check()

- OK shfmt: the command "shfmt" is executable.
- OK autopep8: the command "autopep8" is executable.
- OK prettier: the command "prettier" is executable.
- OK latexindent: the command "latexindent" is executable.
- dictionary: cannot verify if the command is an executable.
- OK typos: the command "typos" is executable.
- crates.nvim: cannot verify if the command is an executable.

==============================================================================
nvim: require("nvim.health").check()

Configuration ~
- OK no issues found

Runtime ~
- OK $VIMRUNTIME: /usr/share/nvim/runtime

Performance ~
- OK Build type: RelWithDebInfo

Remote Plugins ~
- OK Up to date

terminal ~
- key_backspace (kbs) terminfo entry: `key_backspace=\177`
- key_dc (kdch1) terminfo entry: `key_dc=\E[3~`
- $TERM_PROGRAM="tmux"
- $COLORTERM="truecolor"

tmux ~
- OK escape-time: 0
- WARNING `focus-events` is not enabled. |'autoread'| may not work.
  - ADVICE:
    - (tmux 1.9+ only) Set `focus-events` in ~/.tmux.conf:
      set-option -g focus-events on
- $TERM: tmux-256color

==============================================================================
nvim-treesitter: require("nvim-treesitter.health").check()

Installation ~
- WARNING `tree-sitter` executable not found (parser generator, only needed for :TSInstallFromGrammar, not required for :TSInstall)
- OK `node` found v16.20.0 (only needed for :TSInstallFromGrammar)
- OK `git` executable found.
- OK `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
  Version: cc (GCC) 13.2.1 20230801
- OK Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

 Using the first available executable for diagnostics.
- WARNING Could not load Python 3:
  /usr/bin/python3 does not have the "neovim" module.
  python3.12 not found in search path or not executable.
  /usr/bin/python3.11 does not have the "neovim" module.
  python3.10 not found in search path or not executable.
  python3.9 not found in search path or not executable.
  python3.8 not found in search path or not executable.
  python3.7 not found in search path or not executable.
  /usr/bin/python does not have the "neovim" module.
  - ADVICE:
    - See :help |provider-python| for more information.
    - You may disable this provider (and warning) by adding `let g:loaded_python3_provider = 0` to your init.vim
- Executable: Not found

Python virtualenv ~
- OK no $VIRTUAL_ENV

Ruby provider (optional) ~
- Ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux]
- WARNING `neovim-ruby-host` not found.
  - ADVICE:
    - Run `gem install neovim` to ensure the neovim RubyGem is installed.
    - Run `gem environment` to ensure the gem bin directory is in $PATH.
    - If you are using rvm/rbenv/chruby, try "rehashing".
    - See :help |g:ruby_host_prog| for non-standard gem installations.
    - You may disable this provider (and warning) by adding `let g:loaded_ruby_provider = 0` to your init.vim

Node.js provider (optional) ~
- Node.js: v16.20.0
- WARNING Missing "neovim" npm (or yarn, pnpm) package.
  - ADVICE:
    - Run in shell: npm install -g neovim
    - Run in shell (if you use yarn): yarn global add neovim
    - Run in shell (if you use pnpm): pnpm install -g neovim
    - You may disable this provider (and warning) by adding `let g:loaded_node_provider = 0` to your init.vim

Perl provider (optional) ~
- WARNING "Neovim::Ext" cpan module is not installed
  - ADVICE:
    - See :help |provider-perl| for more information.
    - You may disable this provider (and warning) by adding `let g:loaded_perl_provider = 0` to your init.vim

==============================================================================
telescope: health#telescope#check

Checking for required plugins ~
- OK plenary installed.
- OK nvim-treesitter installed.

Checking external dependencies ~
- OK rg: found ripgrep 13.0.0
- OK fd: found fd 8.7.0

===== Installed extensions ===== ~

Telescope Extension: `bookmarks` ~
- No healthcheck provided

Telescope Extension: `cder` ~
- No healthcheck provided

Telescope Extension: `cheat` ~
- No healthcheck provided

Telescope Extension: `dap` ~
- No healthcheck provided

Telescope Extension: `frecency` ~
- OK sqlite.lua installed.
- OK nvim-web-devicons installed.

Telescope Extension: `fzf` ~
- OK lib working as expected
- OK file_sorter correctly configured
- OK generic_sorter correctly configured

Telescope Extension: `git_worktree` ~
- No healthcheck provided

Telescope Extension: `notify` ~
- No healthcheck provided

Telescope Extension: `zoxide` ~
- No healthcheck provided

==============================================================================
ultimate-autopair: require("ultimate-autopair.health").check()

ultimate-autopair ~
- OK all test in category `backspace` have passed
- OK all test in category `multiline` have passed
- OK all test in category `ext_tsnode` have passed
- OK all test in category `ext_filetype` have passed
- OK all test in category `ext_escape` have passed
- OK all test in category `string` have passed
- OK all test in category `ext_cmdtype` have passed
- OK all test in category `simple` have passed
- OK all test in category `ext_alpha` have passed
- OK all test in category `ext_fly` have passed
- OK all test in category `fastwarp` have passed
- OK all test in category `utf8` have passed
- OK all test in category `ext_suround` have passed
- OK all test in category `newline` have passed
- OK all test in category `filter` have passed
- OK all test in category `rfaswarp` have passed
- OK all test in category `space2` have passed
- OK all test in category `options` have passed
- OK all test in category `tabout` have passed
- OK all test in category `ext_cond` have passed
- OK all test in category `space` have passed
- OK all test in category `close` have passed

==============================================================================
vim.lsp: require("vim.lsp.health").check()

- LSP log level : WARN
- Log path: /home/melker/.local/state/nvim/lsp.log
- Log size: 5240 KB

vim.lsp: Active Clients ~
- null-ls (id=1, root_dir=~/maconomy-cli, attached_to=[1])

==============================================================================
vim.treesitter: require("vim.treesitter.health").check()

- Nvim runtime ABI version: 14
- OK Parser: ada        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ada.so
- OK Parser: agda       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/agda.so
- OK Parser: apex       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/apex.so
- OK Parser: arduino    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/arduino.so
- OK Parser: astro      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/astro.so
- OK Parser: awk        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/awk.so
- OK Parser: bash       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/bash.so
- OK Parser: bass       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/bass.so
- OK Parser: beancount  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/beancount.so
- OK Parser: bibtex     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/bibtex.so
- OK Parser: bicep      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/bicep.so
- OK Parser: bitbake    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/bitbake.so
- OK Parser: blueprint  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/blueprint.so
- OK Parser: c          ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/c.so
- OK Parser: c_sharp    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/c_sharp.so
- OK Parser: cairo      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cairo.so
- OK Parser: capnp      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/capnp.so
- OK Parser: chatito    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/chatito.so
- OK Parser: clojure    ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/clojure.so
- OK Parser: cmake      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cmake.so
- OK Parser: comment    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/comment.so
- OK Parser: commonlisp ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/commonlisp.so
- OK Parser: cooklang   ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cooklang.so
- OK Parser: corn       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/corn.so
- OK Parser: cpon       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cpon.so
- OK Parser: cpp        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cpp.so
- OK Parser: css        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/css.so
- OK Parser: csv        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/csv.so
- OK Parser: cuda       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cuda.so
- OK Parser: cue        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/cue.so
- OK Parser: d          ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/d.so
- OK Parser: dart       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/dart.so
- OK Parser: devicetree ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/devicetree.so
- OK Parser: dhall      ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/dhall.so
- OK Parser: diff       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/diff.so
- OK Parser: dockerfile ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/dockerfile.so
- OK Parser: dot        ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/dot.so
- OK Parser: doxygen    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/doxygen.so
- OK Parser: dtd        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/dtd.so
- OK Parser: ebnf       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ebnf.so
- OK Parser: eds        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/eds.so
- OK Parser: eex        ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/eex.so
- OK Parser: elixir     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/elixir.so
- OK Parser: elm        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/elm.so
- OK Parser: elsa       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/elsa.so
- OK Parser: elvish     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/elvish.so
- OK Parser: embedded_template ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/embedded_template.so
- OK Parser: erlang     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/erlang.so
- OK Parser: fennel     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/fennel.so
- OK Parser: firrtl     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/firrtl.so
- OK Parser: fish       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/fish.so
- OK Parser: foam       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/foam.so
- OK Parser: forth      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/forth.so
- OK Parser: fortran    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/fortran.so
- OK Parser: fsh        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/fsh.so
- OK Parser: func       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/func.so
- OK Parser: fusion     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/fusion.so
- OK Parser: gdscript   ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gdscript.so
- OK Parser: git_config ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/git_config.so
- OK Parser: git_rebase ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/git_rebase.so
- OK Parser: gitattributes ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gitattributes.so
- OK Parser: gitcommit  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gitcommit.so
- OK Parser: gitignore  ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gitignore.so
- OK Parser: gleam      ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gleam.so
- OK Parser: glimmer    ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/glimmer.so
- OK Parser: glsl       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/glsl.so
- OK Parser: go         ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/go.so
- OK Parser: godot_resource ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/godot_resource.so
- OK Parser: gomod      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gomod.so
- OK Parser: gosum      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gosum.so
- OK Parser: gowork     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gowork.so
- OK Parser: gpg        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/gpg.so
- OK Parser: graphql    ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/graphql.so
- OK Parser: groovy     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/groovy.so
- OK Parser: hack       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hack.so
- OK Parser: hare       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hare.so
- OK Parser: haskell    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/haskell.so
- OK Parser: haskell_persistent ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/haskell_persistent.so
- OK Parser: hcl        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hcl.so
- OK Parser: heex       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/heex.so
- OK Parser: hjson      ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hjson.so
- OK Parser: hlsl       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hlsl.so
- OK Parser: hocon      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hocon.so
- OK Parser: hoon       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hoon.so
- OK Parser: html       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/html.so
- OK Parser: htmldjango ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/htmldjango.so
- OK Parser: http       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/http.so
- OK Parser: hurl       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/hurl.so
- OK Parser: ini        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ini.so
- OK Parser: ispc       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ispc.so
- OK Parser: janet_simple ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/janet_simple.so
- OK Parser: java       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/java.so
- OK Parser: javascript ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/javascript.so
- OK Parser: jq         ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/jq.so
- OK Parser: jsdoc      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/jsdoc.so
- OK Parser: json       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/json.so
- OK Parser: json5      ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/json5.so
- OK Parser: jsonc      ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/jsonc.so
- OK Parser: jsonnet    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/jsonnet.so
- OK Parser: julia      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/julia.so
- OK Parser: kconfig    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/kconfig.so
- OK Parser: kdl        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/kdl.so
- OK Parser: kotlin     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/kotlin.so
- OK Parser: lalrpop    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/lalrpop.so
- OK Parser: latex      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/latex.so
- OK Parser: ledger     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ledger.so
- OK Parser: llvm       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/llvm.so
- OK Parser: lua        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/lua.so
- OK Parser: luadoc     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/luadoc.so
- OK Parser: luap       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/luap.so
- OK Parser: luau       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/luau.so
- OK Parser: m68k       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/m68k.so
- OK Parser: make       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/make.so
- OK Parser: markdown   ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/markdown.so
- OK Parser: markdown_inline ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/markdown_inline.so
- OK Parser: matlab     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/matlab.so
- OK Parser: menhir     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/menhir.so
- OK Parser: mermaid    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/mermaid.so
- OK Parser: meson      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/meson.so
- OK Parser: mlir       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/mlir.so
- OK Parser: nickel     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/nickel.so
- OK Parser: ninja      ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ninja.so
- OK Parser: nix        ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/nix.so
- OK Parser: norg       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/norg.so
- OK Parser: norg_meta  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/norg_meta.so
- OK Parser: nqc        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/nqc.so
- OK Parser: objc       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/objc.so
- OK Parser: ocaml      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ocaml.so
- OK Parser: ocaml_interface ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ocaml_interface.so
- OK Parser: ocamllex   ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ocamllex.so
- OK Parser: odin       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/odin.so
- OK Parser: org        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/org.so
- OK Parser: pascal     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/pascal.so
- OK Parser: passwd     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/passwd.so
- OK Parser: pem        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/pem.so
- OK Parser: perl       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/perl.so
- OK Parser: php        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/php.so
- OK Parser: phpdoc     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/phpdoc.so
- OK Parser: pioasm     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/pioasm.so
- OK Parser: po         ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/po.so
- OK Parser: poe_filter ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/poe_filter.so
- OK Parser: pony       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/pony.so
- OK Parser: prisma     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/prisma.so
- OK Parser: promql     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/promql.so
- OK Parser: proto      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/proto.so
- OK Parser: prql       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/prql.so
- OK Parser: psv        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/psv.so
- OK Parser: pug        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/pug.so
- OK Parser: puppet     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/puppet.so
- OK Parser: pymanifest ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/pymanifest.so
- OK Parser: python     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/python.so
- OK Parser: ql         ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ql.so
- OK Parser: qmldir     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/qmldir.so
- OK Parser: qmljs      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/qmljs.so
- OK Parser: query      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/query.so
- OK Parser: r          ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/r.so
- OK Parser: racket     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/racket.so
- OK Parser: rasi       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/rasi.so
- OK Parser: re2c       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/re2c.so
- OK Parser: regex      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/regex.so
- OK Parser: rego       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/rego.so
- OK Parser: requirements ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/requirements.so
- OK Parser: rnoweb     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/rnoweb.so
- OK Parser: robot      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/robot.so
- OK Parser: ron        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ron.so
- OK Parser: rst        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/rst.so
- OK Parser: ruby       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ruby.so
- OK Parser: rust       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/rust.so
- OK Parser: scala      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/scala.so
- OK Parser: scheme     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/scheme.so
- OK Parser: scss       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/scss.so
- OK Parser: slint      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/slint.so
- OK Parser: smali      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/smali.so
- OK Parser: smithy     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/smithy.so
- OK Parser: snakemake  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/snakemake.so
- OK Parser: solidity   ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/solidity.so
- OK Parser: soql       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/soql.so
- OK Parser: sosl       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/sosl.so
- OK Parser: sparql     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/sparql.so
- OK Parser: sql        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/sql.so
- OK Parser: squirrel   ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/squirrel.so
- OK Parser: ssh_config ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ssh_config.so
- OK Parser: starlark   ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/starlark.so
- OK Parser: strace     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/strace.so
- OK Parser: supercollider ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/supercollider.so
- OK Parser: surface    ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/surface.so
- OK Parser: svelte     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/svelte.so
- OK Parser: swift      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/swift.so
- OK Parser: sxhkdrc    ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/sxhkdrc.so
- OK Parser: systemtap  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/systemtap.so
- OK Parser: t32        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/t32.so
- OK Parser: tablegen   ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/tablegen.so
- OK Parser: teal       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/teal.so
- OK Parser: terraform  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/terraform.so
- OK Parser: textproto  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/textproto.so
- OK Parser: thrift     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/thrift.so
- OK Parser: tiger      ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/tiger.so
- OK Parser: tlaplus    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/tlaplus.so
- OK Parser: todotxt    ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/todotxt.so
- OK Parser: toml       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/toml.so
- OK Parser: tsv        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/tsv.so
- OK Parser: tsx        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/tsx.so
- OK Parser: turtle     ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/turtle.so
- OK Parser: twig       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/twig.so
- OK Parser: typescript ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/typescript.so
- OK Parser: ungrammar  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/ungrammar.so
- OK Parser: usd        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/usd.so
- OK Parser: uxntal     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/uxntal.so
- OK Parser: v          ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/v.so
- OK Parser: vala       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/vala.so
- OK Parser: verilog    ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/verilog.so
- OK Parser: vhs        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/vhs.so
- OK Parser: vim        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/vim.so
- OK Parser: vimdoc     ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/vimdoc.so
- OK Parser: vue        ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/vue.so
- OK Parser: wgsl       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/wgsl.so
- OK Parser: wgsl_bevy  ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/wgsl_bevy.so
- OK Parser: wing       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/wing.so
- OK Parser: xml        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/xml.so
- OK Parser: yaml       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/yaml.so
- OK Parser: yang       ABI: 13, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/yang.so
- OK Parser: yuck       ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/yuck.so
- OK Parser: zig        ABI: 14, path: /home/melker/.local/share/nvim/lazy/nvim-treesitter/parser/zig.so
- OK Parser: bash       ABI: 14, path: /usr/lib/nvim/parser/bash.so
- OK Parser: c          ABI: 14, path: /usr/lib/nvim/parser/c.so
- OK Parser: lua        ABI: 14, path: /usr/lib/nvim/parser/lua.so
- OK Parser: markdown   ABI: 14, path: /usr/lib/nvim/parser/markdown.so
- OK Parser: markdown_inline ABI: 14, path: /usr/lib/nvim/parser/markdown_inline.so
- OK Parser: python     ABI: 14, path: /usr/lib/nvim/parser/python.so
- OK Parser: query      ABI: 14, path: /usr/lib/nvim/parser/query.so
- OK Parser: vim        ABI: 14, path: /usr/lib/nvim/parser/vim.so
- OK Parser: vimdoc     ABI: 14, path: /usr/lib/nvim/parser/vimdoc.so

can you share the problematic file?

[package]
name = "foo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rand = {version = "*"}

This is the config that I'm using:
require('crates').setup({
  popup = {
    keys = {
      toggle_feature = { '<space>lf' },
    },
  },
})

I can't reproduce this bug, even on nightly.

@Saecki Here's the full minimal config that I'm using:

Click to expand
local root = vim.fn.fnamemodify(vim.fn.expand('$HOME') .. '/nvim-test-config', ':p')
for _, name in ipairs({ 'config', 'data', 'state', 'cache' }) do
  vim.env[('XDG_%s_HOME'):format(name:upper())] = root .. '/' .. name
end

-- bootstrap lazy.nvim
local lazypath = root .. '/plugins/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ 'git', 'clone', '--filter=blob:none', 'https://github.com/folke/lazy.nvim.git', lazypath, })
end
vim.opt.runtimepath:prepend(lazypath)

local plugins = {
  {
    'saecki/crates.nvim',
    tag = 'v0.3.0',
    dependencies = 'nvim-lua/plenary.nvim',
    event = { "BufRead Cargo.toml" },
    config = function()
      require('crates').setup({
        popup = {
          keys = {
            toggle_feature = { '<space>lf' },
          },
        },
      })
    end
  }
}

require('lazy').setup(plugins, {
  root = root .. '/plugins',
})

You use it by running nvim -u path/to/init.lua
When I do :map <space>lf there doesn't seem to be a <space>lf mapping even created.

Oh, I see. When initially lazy loading the plugin on BufRead the first update doesn't get triggered. Reopening the file using :e will fix that. That bug was fixed some time ago, so if you don't use the stable v0.3.0 tag everything should word fine. It's probably time to make a new release anyway.

@Saecki I tried removing lazy loading and v0.3.0 tag, as well as updating, but I'm still having the same issue. This is what my minimal config looks like now:

Click to expand
local root = vim.fn.fnamemodify(vim.fn.expand('$HOME') .. '/nvim-test-config', ':p')
for _, name in ipairs({ 'config', 'data', 'state', 'cache' }) do
  vim.env[('XDG_%s_HOME'):format(name:upper())] = root .. '/' .. name
end

-- bootstrap lazy.nvim
local lazypath = root .. '/plugins/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ 'git', 'clone', '--filter=blob:none', 'https://github.com/folke/lazy.nvim.git', lazypath, })
end
vim.opt.runtimepath:prepend(lazypath)

local plugins = {
  {
    'saecki/crates.nvim',
    dependencies = 'nvim-lua/plenary.nvim',
    config = function()
      require('crates').setup({
        popup = {
          keys = {
            toggle_feature = { '<space>lf' },
          },
        },
      })
    end
  },
}

require('lazy').setup(plugins, {
  root = root .. '/plugins',
})

I still don't see any key mapping when I do :map <space>lf (I've tried changing to other key mappings as well).

The key mappings defined there only work inside the popup. To do anything from inside the Cargo.toml file you'll have to add your own key mappings.

@Saecki Oh that's my bad for not reading the full documentation! Thanks for the help!


feature/plot_recipes_for_IFF

Summary
This PR implements new @recipes for IFF (IDS_Field_Finder) structures.
The new recipes aim to plot multiple fields at once, i.e., multiple-subplots in a single figure, allowing users to quickly visualize and analyze the data of interest.
Among the given IFF list, this recipe only plots either AbstractVector{<:Real} or AbstractMatrix{<:Real} data to avoid a possible conflict with other @recipes for specific IDS data.

The new recipes have several optional arguments, which can be shown by help_plot.

Feature description
There are two different fallbacks, depending on the datatype.
1.  AbstractVector{<:Real}

This uses the existing recipe @recipe function plot_field
Multiple fields call the plot_field recipe multiple times.

2. AbstractMatrix{<:Real}

This calls one of the basic seriestype in the Plots package for 3-dimensional data (x,y,z), such as contourf, contour, heatmap, andsurface.
Default seriestype is contourf, except for the UnicodePlots backend, where contour is set due to the compatibility issue.

Optional arguments

A recipe for Vector{IMASdd.IDS_Field_Finder}

each_size: Size of each subplot (Default = (500,400))
nrows: Number of rows for subplots' layout (Default=:auto)
ncols: Number of columns for subplots' layout (Default=:auto)

A recipe for IMASdd.IDS_Field_Finder

abbreviations: Abbreviations to shorten titles of subplots
seriestype_2d: Seriestype for 2D data (x,y)
seriestype_3d: Seriestype for 3D data (x,y,z)

See the following output with help_plot for example:

Examples
# Load IMASdd's sample json file
dd = IMAS.json2imas("IMASdd/sample/omas_sample.json");

# Find IFF and plot
IFF = findall(dd, [:psi, :j_tor]);
plot(IFF)

# There is a equivalent wrapper function for the user's convenience
plot(dd, [:psi,:j_tor]) # a wrapper for `findall` & `plot`

1. Default case
plot(dd, [:psi,:j_tor]) # a wrapper for `findall` & `plot`

2. Control each_size and ncols
plot(dd, [:psi,:j_tor]; ncols=2, each_size=(300,300))

3. seriestype_3d and abbreviations
# Use `Heatmap`for 3D data
# with no abbreviation for titles (by providing the empty `Dict`)
plot(dd, [:psi,:j_tor]; seriestype_3d=:heatmap, abbreviations=Dict())

4. More custom examples
# One can use the unicode or LaTexStrings for polishing the titles
new_abbrev = Dict(IMAS.default_abbreviations..., "psi"=>"ψ", "j_tor"=>L"j_{\phi}");
plot(dd, [:psi,:j_tor]; seriestype_2d=:bar, seriestype_3d=:surface, abbreviations=new_abbrev)

I've updated some optional arguments, where I accidentally force-pushed the last commit.
Please let me know if it is better to re-open the pull request with a cleaner commit history.

1.  Added @assert in assert_type_and_record_argument
It seems like the current assert_type_and_record_argument does not check the type of argument. I added @assert which checks the type of argument.
Please review the commit 5b83d2a
2. The new optional argument nicer_title
nicer_title is a flag (Default=true) whether to further polish the title by using the combination of nice_symbol and nice_units as you suggested.
See the following examples:
2.1. nicer_title=true (Default)

2.2. nicer_title=false

3. Behavior change for Matrix data (3D plot)
For AbstractMatrix{<:Real} data, it first checks if its parent_ids has valid grid dimensions, i.e. grid.dim1 and grid.dim2 has sorted ascending values.
If the parent_ids have valid grid dimensions, it uses them with aspect_ratio=:equal.
Otherwise, the recipe shows Matrix data, denoted by row and column, without aspect_ratio.
For example, regarding two 3D plots in the above screenshots,
the left-one (eq.time_sc[2].prof_2d[1].psi [Wb]), (which are MXH coeffecients) shows the  matrix data, and the right-one (eq.time_sc[2].prof_2d[2].psi [Wb]) shows the psi in the (R,Z) geometry.

@mgyoo86 don't hardcode looking for grid. Instead you can use coordinates(ids, field) to get the coordinate of a field.

@orso82 Since "coord.names" is too long for labels, I used the last field (use split with the delimiter of ".") for xlabel and ylabel.

@mgyoo86 could we please use Measures.mm instead of using Plots.PlotMeasures. Note that IMAS already does a import Measures.
In general we try to avoid using since that pollutes the local namespace and makes it hard to know where a function is defined.
PS. Originally IMAS was designed to not have Plots.jl as a dependency. However, this made debugging difficult, since plotting was not available. It's debatable whether we should remove the individual packages PlotUtils, RecipesBase, Measures or just use Plots.jl.

@orso82 Sorry, I didn't know that Measures is already implemented. I fixed it as you recommended!

@mgyoo86 thank you for bearing with me on this one :)
I'll change the base branch for this PR from master to the documentation branch, so that we can see if there's any conflict that we need to deal with (we might be ok, I think). I want to merge the documentation branch by the end of today.

No conflicts 🎉  I'll merge it now into the documentation branch.


camera facing problem

i use quaggaJS-v0.11.2-0 and chrome 55.0.2883.91 in ASUS Zenfone 2, the camera facing environment.
i use quaggaJS-v0.11.6-7 and chrome 55.0.2883.91 in ASUS Zenfone 2, the camera facing user.
i use quaggaJS-v0.11.2-0 and chrome 56.0.2924.87 in LG G3, the camera facing user.
i use quaggaJS-v0.11.6-7 and chrome 56.0.2924.87 in LG G3, the camera facing user.
so, i choose quaggaJS-v0.11.2-0 with my ASUS Zenfone 2, cause the camera facing environment.
the others are bug. please fix this. thank you.

Thanks for reporting this bug. Unfortunately, all the browsers behave differently on different devices. And it also depends from version to version which camera is being selected. The constraint-API is not yet fully specified on that topic.
I suggest you query all the cameras yourself by making use of navigator.mediaDevices.enumerateDevices and let the user decide.


Subcommands?

Is it possible to add subcommands via new Command() ?

You can register a subcommand with the following code
  new Command('slash', 'slash command').options(
    new SubGroupOption('group', 'group option').options(
      new SubOption('sub1', 'sub1 option').options(new Option("text", "text")),
      new SubOption('sub2', 'sub2 option'),
    ),
    new SubOption('sub3', 'sub3 option'),
  ),

However, the handling of the interaction side of the subcommand had not yet been implemented.
In the meantime, you can get the value of the subcommand with the following code.
  .command('slash', c => {
    console.log(c.interaction.data?.options[0]?.options[0]?.options)
    return c.res("slash cmd")
  })

in Discord
/slash group sub1 text:TEST!!

wrangler tail
 (log) [ { name: 'text', type: 3, value: 'TEST!!' } ]

I plan to implement it for easier handling, so please wait a little if you want to use it.

Subcommand is now easier to handle.
Please update to var.0.5.0 or higher and write your code referring to this Docs.

thanks!