Problems launching widget from another widget

This is an extension of bug #385. I have read as much documentation as I can find surrounding widget/application/listing launching, but have failed to get it working in my local instance with my custom listings.
I added a custom listing to my OZP instance, but there didn't seem to be a way to assign a "unique name" to the listing. I noticed that there's a "unique_name" column on the listing table, so I updated that column with a name that seemed reasonable.
Here's the database entry for my map app:
id |           title            |         approved_date         |          edited_date          |        description         |                    launch_url                    | version_name | unique_name | what_is_new | description_short | requirements | approval_stat
us | is_enabled | is_featured | avg_rate | total_votes | total_rate5 | total_rate4 | total_rate3 | total_rate2 | total_rate1 | total_reviews | iframe_compatible | security_marking | is_private | agency_id | banner_icon_id | current_rejection_id | large_banner_icon_id |
large_icon_id | last_activity_id | listing_type_id | required_listings_id | small_icon_id
----+----------------------------+-------------------------------+-------------------------------+----------------------------+--------------------------------------------------+--------------+-------------+-------------+-------------------+--------------+--------------
---+------------+-------------+----------+-------------+-------------+-------------+-------------+-------------+-------------+---------------+-------------------+------------------+------------+-----------+----------------+----------------------+----------------------+-
--------------+------------------+-----------------+----------------------+---------------
1 | Map App                    | 2016-02-25 15:20:21.765774+00 | 2016-02-25 15:20:21.792406+00 | Map Application        | http://localhost:8080                            | 1.0          | map.app     |             | Map               | None         | APPROVED
   | t          | f           |        0 |           0 |           0 |           0 |           0 |           0 |           0 |             0 | t                 | UNCLASSIFIED     | f          |         1 |              4 |                      |                    5 |
            3 |                8 |               1 |                      |             2

From a separate custom listing/application, also connected to the IWC Bus, I execute the following JavaScript on a button click:
var locationRequest = new iwc.data.Reference("map.location.request");
var mapOpenRef = new iwc.data.Reference("/applications/open/map.app");
mapOpenRef.get().then(function(val){
    console.log("Map already open. Sending Location Request.");
    locationRequest.set(message);
}).catch(function(err){
    console.log("Map closed. Opening. Error: %O", err);
    var mapRef = new iwc.system.Reference("/application/map.app");
    mapRef.launch()
        .then(function () {
            console.log("Map opened successfully. Sending Location Request.");
            locationRequest.set(message);
        })
        .catch(function(e){
            locationRequest.set(message);
            console.log("Failed to open map. Sending Location Request anyways. Error: %O", e);
        });
});

Which results in the following console output:
Map closed. Opening. Error: noResource
Failed to open map. Sending Location Request anyways. Error: noResource

Note that this output is the same regardless of the open state of the map listing, however if the map listing is open, the locationRequest.set() functionality does succeed. My problem is that I cannot seem to be able to get a reference to my "map.app" listing to view the status of or launch that listing.
Is this a bug in IWC, or user error on my part?

Interesting,
The IWC distributables includes a web-app for debugging/checking api resource values. Iit should be reachable at the /debugger endpoint of where you are hosting the IWC (ex:http://localhost:13000/debugger)
If you navigate to the System API tab you should get a table view of all the Applications the IWC has parsed from your DB. Is the /application/map.app visible there?
Alternatively, if you want to get a list of all applications while developing, you can run the following in your application:
var apps = new iwc.system.Reference('/application');
apps.list().then(function(apps){
   console.log(apps);
});

Before version 1.2.2 application referencing was done based on its database ID, but was moved to use the unique_name, which from your db output seems to match map.app so /application/map.app should be a valid resource.
Let me know if the application is visible under /application from one of the 2 methods above. The github hosted IWC unfortunately doesn't interact with a DB otherwise I would point to examples from there.

I explored the system.api as well, which is how I discovered ticket #385. I haven't been able to pull any data back from that API. As a sanity check it just re-cloned the ozp-anzible repo and deployed a fresh VM, following developer "quick start" setup instructions.

git clone https://github.com/ozone-development/ozp-ansible.git
cd ozp-ansible
mv group_vars/all/vault_unencrypted.yml group_vars/all/vault.yml
vagrant up

After the VM finished installing / initializing, I ssh'ed into the VM (vagrant ssh) and updated the Bread Basket index.html (/usr/local/ozp/frontend/demo_apps/centerSampleListings/breadBasket/index.html) to add some JavaScript:
<!DOCTYPE html>

    <link href="../../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">

 Bread Basket

 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dictum
            lectus faucibus ante dapibus commodo.

I then logged in to https://localhost:4440/hud with wsmith/password (using basic auth), and bookmarked the Bread Basket and Air Mail listings.
Adding Bread Basket to my dashboard and loading the dashboard results in the following output:
Peer URL: https://localhost:4440/iwc/
Applications retrieved via REST Api: Array[2]
Connected to IWC!
Applications retrieved via IWC: Array[0]
Uncaught (in promise) noResource

The REST Api is returning the Bread Basket and Air Mail applications as expected, but I'm getting nothing back over the system.api call via the IWC client.
The same seems to be true when I visit https://localhost:4440/iwc/debugger. The "My Apps" tab of the System API is showing 0 applications.
Any ideas?
Thanks!

Ah ok I see now what is going on, this is likely a configuration issue for the IWC on the ozp-ansible project. I'm investigating it now, but may need to get some feedback from @arw180 regarding any changes needed on that repo.
As a double check while I attempt to replicate on my end, @theJuddson can you open up the debugger again, under the General page there is an endpoints tab and see if the table has any data? Also can you open https://localhost:4440/iwc/js/ozpIwc.conf.js and post here the contents of it.
As a quick check, I  ran the IWC standalone (with grunt serve on the ozp-iwc repo) I get the following (I omitted rows not pertaining to the applications), note this is different than ozp-ansible because its not the same backend. This seems to give me confidence it's not an bug more-so we simply have an invalid config somewhere:

Resource
Rel. Link
Path

Root

/api

system.api
ozp:application
http://localhost:13000/api/listing

@arw180 :
Is the IWC root data still being provided from the /api endpoint?

So this issue may be needing to be redirected to the ozp-ansible repo, I followed the ozp-ansible build steps but don't have an ozp-iwc in the build.
If possible try verifying if the ozpIwc.config.apiRootUrl is set to /iwc-api. in the js/ozpIwc.conf.js of your IWC deployment. By default the IWC ships with it set to /api, but I believe the ozp-ansible build puts all IWC api data on /iwc-api as its root:
Example ozpIwc.conf.js:
var ozpIwc = ozpIwc || {};

ozpIwc.config = {
    logLevel: 6,
    backendSupport: true,
    apiRootUrl: "/iwc-api",
    ajaxPoolSize: 3
};

Okay, here's what I'm getting with my VM:
The endpoints table is mostly empty:

And here's my ozpIwc.conf.js:
var ozpIwc = ozpIwc || {};

ozpIwc.config = {
    logLevel: 6,
    backendSupport: true,
    apiRootUrl: "/api",
    ajaxPoolSize: 3
};

I'll update that conf file now and post results.

That has certainly had a positive impact on the System API. The endpoints table now lists the paths as expected:

And the JavaScript I put into the Bread Basket app is now returning results:
Peer URL: https://localhost:4440/iwc/
Applications retrieved via REST Api: Array[2]
Connected to IWC!
Applications retrieved via IWC: Array[11]
Success!

The only thing that didn't work as expected was the actual launching of the Air Mail listing. Now that my System API is returning data, I'll dig deeper into the launch functionality to see if I can get that working for our custom listings.

Cool good to hear, I'll flow that back so the VM config has the proper endpoint, a quick way to check the mismatch on the air mail listing launching would be verifying the reference path being called matches up to the resource name on the system.api table in the debugger.

It appears as though the launch functionality is working, just not quite as I expected. Maybe you could add some clarity for me.
I noticed that I was getting a Chrome "Pop-up Blocked" warning, so I enabled all pop-ups for localhost:4440. Now the launch is working, but is opening the listing in a new tab in my browser. Is that the expected functionality?
I was hoping for it to open as if the user added it to their dashboard manually through the dashboard interface. Is there any way to achieve this through the System API? If not, I may end up writing a JS utility to emulate the user clicking the "add" button, in their dashboard.

Now the launch is working, but is opening the listing in a new tab in my browser. Is that the expected functionality?

Correct, the launcher by default will call window.open which in part opens the application.

I was hoping for it to open as if the user added it to their dashboard manually through the dashboard interface.

Are you referring to the ozp-webtop dashboard? It would be possible to register the webtop to handle the applicaiton opening by adding it to the dashboard, the code isn't in place on the webtop though.
Short version: As of current development of ozp-iwc & ozp-webtop, launching with the IWC won't open within the dashboard, the IWC launching logic launches in a new window without any added configuration. Additional JS would be needed to produce custom launching.

More info & how to roll out a custom launching handler in the IWC:
This functionality isnt a documented feature due to it's primary used internally to the IWC but  just for further info for you, you can register to handle the Intents API intent that the System API calls when launching applications:
var launcherRef = new iwc.intents.Reference('/application/vnd.ozp-iwc-launch-data-v1+json/run');
var metaData = {
   label: "My custom launch handler"
};
var onLaunch = function(packet) {

  // url to open
  var url = packet.entity.inFlightIntent.entity.entity.url;

  // 2 manditory query params
  var peer = ozpConfig._busRoot;
  var inFlightIntent = packet.entity.inFlightIntent.resource;

 // do something with the launch data rather than window.open
};
launcherRef.register(metaData,onLaunch);

The data that will be returned to onLaunch won't be the prettiest formatted data  but the launching logic will pass both reference to what the bus domain is & an Intents API resource that will give the opening application any launch params passed with the launch call.
As long as the ozpIwc.peer & ozpIwc.inFlightIntent query params are passed onto the resulting url opened (be it new tab, pop-up, iframe, ect) the application should launch & function as if it was opened by the default launcher. This is what the internal launcher calls (util.openWindow essentially is calling window.open and formatting the query params).
util.openWindow(packet.entity.inFlightIntent.entity.entity.url, {
  "ozpIwc.peer": ozpConfig._busRoot,
  "ozpIwc.inFlightIntent": packet.entity.inFlightIntent.resource
});

// This equates to the browser opening a new window at:
// <packet.entity.inFlightIntent.entity.entity.url>?ozpIwc.peer=<ozpConfig._busRoot>&ozpIwc.inFlightIntent=<packet.entity.inFlightIntent.resource>

To test you could put the launcherRef snippet within one of your applications, and when you call launch on an application reference, a popup window should open prompting for where to route the data for opening. The user can select to have the IWC remember that selection so not to be prompted again during their session.

Okay, thanks. You've been extremely helpful. I think I'm at a point where I can put something together to achieve the results we want. Assuming I get something reasonable working, I can share the results if this is functionality that could be generally applicable.
I'm closing this ticket, as all of my immediate issues have been resolved.

@Kevin-K My team is now looking into IWC and came across this thread.  Our ozpIwc.conf.js looks like this:
var ozpIwc = ozpIwc || {};

ozpIwc.config = {
    logLevel: 6,
    backendSupport: true,
    apiRootUrl: "/api",
    ajaxPoolSize: 3
};

In ozp-ansible the api_root_url variable is still /api.  We can obviously change this in our case, but should this be addressed in ozp-ansible?

@chazzlabs correct, there's an open issue on the ozp-ansible repo to have that fixed: #4


SS3 API Documentation - Missing method parameters

Affected Version
Silverstripe 3.6 API Docs
Description
When using the API documentation (for SS 3), I noticed that some methods are missing parameters. For example the DataList's sort() method. This method has the following DocBlocks
framework/model/DataList.php Line 283-296
/**
	 * Return a new DataList instance as a copy of this data list with the sort
	 * order set.
	 *
	 * @see SS_List::sort()
	 * @see SQLQuery::orderby
	 * @example $list = $list->sort('Name'); // default ASC sorting
	 * @example $list = $list->sort('Name DESC'); // DESC sorting
	 * @example $list = $list->sort('Name', 'ASC');
	 * @example $list = $list->sort(array('Name'=>'ASC', 'Age'=>'DESC'));
	 *
	 * @param String|array Escaped SQL statement. If passed as array, all keys and values are assumed to be escaped.
	 * @return DataList
	 */

But when you look at DataList's sort method
in the docs you will see that no Parameters (or examples) are listed.
Now I'm not sure if this is a DocBlock syntax issue or what, but when I brought it up on slack I was asked to create an issue for it. So uh, here it is.
Steps to Reproduce
If you travel to the API documentation for DataList's sort method  you will see that the sort() method has no parameters listed even though the methods DocBlocks have one listed.

Could be an issue with the generator, or docblock format, unsure. Advised the creation of an issue rather than a PR due to unknown cause.

Thanks for reporting. I suspect it's a syntax issue, as you mentioned. The @param is invalid because it doesn't have a parameter name. Also String should be string. The API site runs PHP 7, in where String uppercased would represent a class name, which is a reserved word in PHP 7. There are plenty of occurrences in other parts of the core PHPDocs that use this though, so I don't think this would be the problem.
It looks a little iffy about how to declare this with variadic arguments across multiple PHP versions (SS3 supports PHP 5.3) so I'm not sure what the solution is.
You could test a few things out locally by installing the API site and running a build in a few different contexts to see.

I've triaged this as a bug since we're incorrectly using PHPDoc. Will spend a bit of time now going through some instances of doc blocks in 3.6

fixed by #7994? @robbieaverill

I’m not sure, that PR was a whip over to fix up some of the phpdocs but I didn’t have time to do all of them

Still an issue, just checked


Update functionality to support pydantic 2.0+

What kind of change does this PR introduce?

[x] Bugfix
[ ] New Feature
[x] Feature Improvement
[ ] Refactoring
[x] Documentation
[ ] Other, please describe:

Description:

Since the breaking changes introduced upstream in Pydantic 2.0+, many of the features in this library have not been working correctly.
This PR updates the library and its showcase apps to support the latest Pydantic version (2.7).
This should fix multiple reported issues with the showcase apps and any downstream apps that use anything but very basic functionality.
Fort reference this PR has been tested with:
Pydantic: 2.7
Python: 3.11
Streamlit: 1.33.0
Earlier versions of these might work but are untested.
Change Summary:
The majority of the changes are self explanatory.  Many pydantic functions and structures that this library relied on have changed or have been deprecated upstream.
There are some more significant changes though that should be noted before merging:

The custom FileContent type has been removed in favour of the pydantics 2.0+ built in Base64UrlBytes.  The resulting empty types.py and its documentation have been removed (maybe this is bad idea). (see examples/complex_showcase.py)
The handling of DataClasses has changed significantly in pydantic 2.0+ and this required more rework on the lib side.  As a result though the return of DataClass instances from sp.pydantic_form() is now properly supported (see examples/dataclass_form.py)
sp.pydantic_output() has been improved slightly to support more complex pydantic models but could still use more work.
Pydantic 2.0+handling of Fields tagged as Optional is significantly different (as mentioned in #50) and currently not supported within the library. Examples have been updated to remove the Optional tag.

Checklist:

[x] I have read the CONTRIBUTING document.
[x] My changes don't require a change to the documentation, or if they do, I've added all required information.

Closes #55, #56, #53, #38

@HIL340 thanks for the contribution! 👍 I will take  a closer look later this week

Any updates?

Used this as a way to test using the branch specific implementation.
pip uninstall streamlit_pydantic pydantic-settings
poetry remove streamlit_pydantic
pip install<EMAIL_ADDRESS>poetry add streamlit-pydantic@git+https://github.com/HIL340/streamlit-pydantic.git#pydantic-2.7

Is there an update on this? @LukasMasuch, where can we support you?

Used this as a way to test using the branch specific implementation.
pip uninstall streamlit_pydantic pydantic-settings poetry remove streamlit_pydantic
pip install<EMAIL_ADDRESS>poetry add streamlit-pydantic@git+https://github.com/HIL340/streamlit-pydantic.git#pydantic-2.7

very useful, thanks

@HIL340 I think the github actions versions need to be updated too. The action/checkout current version is v4, not v2.
https://github.com/actions/checkout/releases/tag/v4.1.7

@gaby I updated the action/checkout to v4 but it did not resolve the build issue.

@pablodz Agree the whole ci has to be refactored

This PR is arguably already a bit large and my experience with GitHub actions is fairly limited.
If the CI needs significant rework anyway and as long as this PR is not making the situation worse I'd suggest merging this one in and tackling the CI issues in a separate PR.

@HIL340 , I agree. I also tested this change locally and can confirm it works.
There are still a ton of issues we need to solve, but this is definitely a step forward.
@LukasMasuch , should I merge this? (and, as a general question, do you want me to freely make changes and merge PRs, or do you want to be the one to approve all PRs before they're merged?)

@MatanRubin

and, as a general question, do you want me to freely make changes and merge PRs, or do you want to be the one to approve all PRs before they're merged?

I configured it so that changes to main will require a PR that is approved by at least one other person (it does not have to be me). I'm happy also to add more maintainers if anyone is interested :)


Use the actual generation groups instead of trying to deduce them ourselves

Would this be SimultaneousGroups?

Yep. I'll fix this now

I wonder if the Links with Dst/Src and those in the AiGroups section are consistent with those in SimultaneousGroups?

Not necessarily, and in fact I noticed this because the gen group we were deducing using the entity links was a strict subset of the actual simultaneous generation group and missing several entites.


Extra Objects needed

Please describe the feature that you want to propose
let nodeData: NodeType[] = [{
id: item.uuid,
data: {
label: (

),
expanded: true,
title: item.name
},
position: { x: 0, y: 0 },
}]

When I hovered over the label component, I encountered a bug where the hovercard appeared behind the node. I need assistance with the z-index sequence to ensure the hovercard displays correctly in front.
I need to add a title object to the customNode component to display a title at the location of the "Add Node" button.

This isn't a feature request - there is a Discussion Board that can be used for questions like these ^^

Can you provide a minimal repro of your issue? That way it'd be easier to help you. The small bits and pieces of code you provide don't tell us anything about your setup etc.
You can find a template here.


Add a bend_pitch function

Currently, the only MIDI voice messages we manage are note on and note off. It would be interesting for cardio-crumble to have a richer pool of messages to choose from. I suggest adding another voice message to the Midi module. You can have a look at this summary of midi channel voice messages for ideas and specifications.
One idea would be to add a bend_pitch function sending a Pitch Bend message. The signature could look as follows:
val bend_pitch : bend:char -> timestamp:int32 -> Event.t

where bend represents the pitch bend one wants to send in 14-bit resolution.
This issue is only about adding this new function to the Midi module (as a first step). In another issue later, we can use such a function.

Hi @pitag-ha, I have already completed the setup. I also  compiled  and ran the MirageOS hello-world. Please can I work this issue?

Sure, please go ahead, @kamtoeddy. Let us know if you have any question!

Hi @pitag-ha,
I need your help
This is what I have come up with:
let bend_pitch ~bend ~timestamp () =
  Event.create ~status:'\144' ~data1:bend ~timestamp

The inspiration was drawn from the message_on and message_off methods that have already been implemented in the Midi module
So far I have learned that ~ is used for named parameters in functions just like in python
I have a few doubts about my solution

I am not sure the value of status I am passing to the port midi event is correct
Looking into the documentation of the port midi, here I realised that Event.create expects 4 parameters status:char, data1:char, data2:char & timestamp:int32 but in my solution I do not have a value to pass as data2

Hi @kamtoeddy, great that you're already making progress! To find out which values to pass to Event.create as data1 and data2, you can have a look at this summary of the MIDI speficiations for channel voice messages to which I pointed in the issue. In particular, the following part of the table is what we're interested in:

Status Byte
Data Byte 1
Data Byte 2
Message
Legend

1110nnnn
0fffffff
0ccccccc
Pitch Bend
n=channel c=coarse f=fine (c+f = 14-bit resolution)

--
--
--
--
--

Do you know how to read that table? Or would you like me to explain it?
As a first step to figure out what to pass in as data1 and data2, you can ask yourself the following questions:  In the range from where to where do you expect bend to be? In the range from where to where does data1 have to be? And in the range from where to where does data2 have to be?

Hi @pitag-ha, I have looked into the summary again and this time, with the help of your hints I understand this:

data1 and data2 are represented in binary in 8 bits  (28 = [0, 127])
bend is comprised of the 7 last bits of data2 and data1 in that order. Hence represented as 214 in binary

Does this mean I should do something like this?
let data1 = String.sub bend 7 7
let data2 = String.sub bend 0 7

data1 and data2 are both represented as char in our implementation.
A char in OCaml is an 8bit value.
You are right on how bend is represented, but your solution is not going to work as you are working with strings.
I can give you a few hints on how to work with this:
First, you can move values from int to char in OCaml using Char.chr. (the opposite operation is Char.code, to get a char from an int).
Knowing this you can now reason with chars as numbers rather than actual characters, which is what your are looking for.
Another interesting thing you can do to make your life easier, is that in OCaml, you are allowed to write integers in binary form (or hexadecimal!) using a prefix when writing your number.
For example, writing let i = 0b10 is the same as writing let i = 2.
Let me know if you have more questions.

Thank you @Engil

@pitag-ha @Engil sorry I have not implemented anything yet even with all the info you've shared so far
Maybe the problem is the way I interpret the problem. So here is how I intend to solve the problem

the bend_pitch function takes in bend:char & timestamp:int32 represented using 14bits in binary
convert bend to binary so as to extract data1 & data2
convert data1 & data2 from binary to chars
pass char versions of  data1 & data2, status, timestamp  to Event.create

The only progress so far is getting the value of the status to be '\224'  from the table above and comparing with the value of status of message_on & message_off

@kamtoeddy it is non trivial!
You will need to do some bitwise manipulation to implement it properly. 😊
I can give you some pointers!
Let's first assume the bend pitch you want to build is 16383 (the maximum size 14 bits value in decimal, namely 0x11111111111111.
You need to build data1 and data2 from it. One way to think about it is that you want to split this number in two (not unlike your String.sub proposal from earlier.).
How can one achieve this? Using bitwise operations!
Let's say you want to extract the upper 7 bits of the integer we first described. For this, you could use a logical left shift operation to shift seven bits to the left, removing the lower 7 bits.
To extract the lower 7 bits, you need to be using something else, however. You would need to use some kind of mask to hide the higher 7 bits so you are only left with the lower 7 bits.
This can be done using a logical AND bit operation.
For this one I can give you a simple example, given a value 0b1001 where we want to hide the upper two bits 10, we can do something like this:
0b1001 land 0b0011

This would give us 1, or 01, namely the last two bits of 0b1001. :-)
Let me know if you'd like more example or informations. Also, do note that OCaml is peculiar on naming the bitwise operators, you can find them in the Stdlib documentation here: https://v2.ocaml.org/api/Stdlib.html
(lsl is the name for the logical left shift operator!)

This conversation was very useful in understanding about the repo. I had a great time going through this hehe!! 😁


VM_STATE

Few changes here. Not sure if you'll be OK with "Replace HTML with Unicode in markdown", but it makes vm.md a lot easier to read directly.
The debugger is running timer.asm flawlessly, after fixing a bug in std.send_msg that might have been causing you problems.

Not sure I'm going to like the Unicode, but I'll give it a try.


Add providers API

@FrontEndCoffee Hey! I am creating this PR with the requested changes in https://github.com/sandwave-io/realtimeregister-php/issues/9, but I have a question that maybe makes the PR incomplete.
When we do filter on lists, for every domain object, the code is using a general approach of sending a param named $search.
I did the same for Providers and Downtimes, but I saw that search is not a valid filter, and we have a list of valid params for every listing. Example: https://dm.realtimeregister.com/docs/api/providers/downtime/list
I thought in adding these filters, but it is not convenient to pass so many parameters to a method. Maybe you have planned another approach for this (or maybe I am missunderstanding something :) )
I hope the question has sense. I wait for yout comments, and thanks for letting me work on this issue!

Hi @TanoRojas, well spotted. The search field is nearly right, it should however be set on the $query object as the 'q' property.
(It's a bit hidden), but the API docs contain a page that explains how all listing endpoints have pagination, and how this works: https://dm.realtimeregister.com/docs/api/listings

I agree with you that the filter fields would be way to many parameters, maybe in the future we could work out a way to implement this as well, if you have any ideas please let me know 😉
For now, I would love if you can check all the list functions, and make sure the key q is used on the query object instead of search. The function parameter can stay $search as this is nice and clear for the user of this package.

@TanoRojas I have created a bug issue for this, you can also just fix it for the provider list endpoint(s), and fix the others later.
It's up to you, the issue is here: https://github.com/sandwave-io/realtimeregister-php/issues/23

@FrontEndCoffee Hey Jesse! thanks for the review! I fixed the mentioned errors.
I have some doubts about the extra tests cases for Downtime. In particular on how to validate correct dates provided. I just added try/catch blocks capturing everything (catching Throwable) over the Carbon constructor, and raised a TypeError exception there.
That could be improved but maybe is good enough for the moment, but let me know!
I will handle the issue of changing the query parameters (https://github.com/sandwave-io/realtimeregister-php/issues/23), and once this PR is approved I will take the one related to brands Api (https://github.com/sandwave-io/realtimeregister-php/issues/10) if that sounds good to you.

@FrontEndCoffee I think that there is actually no real need for doing the small change of search for q on another pull request, then I just pushed the change here: https://github.com/sandwave-io/realtimeregister-php/pull/22/commits/3445ba5afb4373bb4ea36c0db7fe8c221376b3dc
I understand that is better to have 1 issue => 1 PR, but maybe is good for this case. I can remove the commit and doing on another PR if you prefer that way.

Sure thing, you can combine it in here no problem.

* [ ]  Fix the `search` -> `q` issue that we talked about.

Hey Jesse! Is missing something for this replacement? I replaced the 'search' with 'q' in all the places I found in the code here: https://github.com/sandwave-io/realtimeregister-php/commit/3445ba5afb4373bb4ea36c0db7fe8c221376b3dc

Hi, my bad, I had the idea that you only changed it for the providers API. I see that you changed all the places :)


policy reporter service account namespaces cannot be overwritten

Which is required if you put service accounts with cluster role bindings in dedicated namespaces

What do you mean exactly? The ServiceAccount created by the Helm Chart should have another namespace as the other components?

Like for all other components, you can use namespaceOverride to set the Namespace for all resources, including the ServiceAccount.

Yes, i want only the service account which i create before using this helm chart to be in a different namespace.
So i have
serviceAccount:   create: false   namespace: my-service-account-namespace  <- this is what i need

Hm don't really get how this would work. As you need to reference a ServiceAccountName in the deployment which lives in the same Namespace.
You don't create an SA with the Chart but you want to set a namespace, where should this namespace be used?

.


inline style URLs being written with trailing )

From user-submitted issue: https://wordpress.org/support/topic/wrong-exported-file-name-for-background-image-url-in-styles
Example code causing the issue:

Results in the plugin writing out a file named combination-safe-top.png)

Any news on this issue?

Hi @sebek64,
This will go out in the next release, but for now, you can see the minor modification needed, which you can do directly:
https://github.com/leonstafford/wordpress-static-html-plugin/commit/daa21a842d33e14bc1c7680759c9357c03595e77
Cheers,
Leon


Fix error in curve integration of ExchangeIssuanceLeveraged

Problem:
The main issue we face when using curve is the fact that they don't have a "exactOutput" swap.
In the past we have used the CurveCalculator to determine the equivalent input amount from the requested output.
While this always had some minor imprecision, we were able to just add a few wei of "rounding" error on top to ensure successfull transactions.
Lately however the difference has grown by many orders of magnitudes (from a few wei to fractions of a percent of the total amount).
Solution:
This smart contract change switches from using the CurveCalculator to just swapping all of the "maxInput" amount of tokens and then swapping the overbought amount back into the input token to achieve the effect of buying a fixed amount of output tokens.
This is of course quite a bit more gas intensive but does bypass the whole issue with the CurveCalculator.
Open Issue:
-The "quote" method that is used by the frontend to get the required input amount has not been adjusted. There are a few ways around this:
a. Just add a small percentage of "slippage" on top of the quoted amount when issuing iceth
b. Static call the issue method using a tenderly fork or something from an impersonated address that has all of the funds necessary to execute the issuance
c. Adjust the quote method to maybe use an iterative method based on the get_dx function of the curve pool to approximate a better input estimation
(In this case gas costs are not really relevant since the quote method is only ever called statically)

Coverage: 81.28% (-0.1%) from 81.387% when pulling 0920595d27110b936d0b5ef6005c4634d73ac41f on increase-curve-error-margin into 4f98409d27bd1ecde13904967dacda2d58fba0f6 on master.

:tada: This PR is included in version 0.13.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


feat: support divider type in _meta.json

Summary
Related Issue
#120

Checklist

[x] I have added changeset via pnpm run change.
[x] I have updated the documentation.
[ ] I have added tests to cover my changes.

Thank you for your nice work for the feature. I will review the code in detail and merge the pr today. But i found some conflicts, please resolve it first :)

Thank you for your nice work for the feature. I will review the code in detail and merge the pr today. But i found some conflicts, please resolve it first :)

ok


Static content: enable field_intro, field_intro_image translation.

What's this PR do?

Translates intro fields: field_intro and field_intro_image of static content

What are the relevant tickets?
A part of #4992, #5575 and #5609.

:+1:


No module named Crypto.Random

Empire Version
1.5
OS Information (Linux flavor, Python version)
Ubuntu 14.04 (64 bits)
Screenshot of error, embedded text output, or Pastebin link to the error
./install.sh

`Traceback (most recent call last):
  File "./setup_database.py", line 4, in
    from Crypto.Random import random
ImportError: No module named Crypto.Random`
cd ../ && ./empire
`Traceback (most recent call last):
  File "./empire", line 4, in
    from flask import Flask, request, jsonify, make_response, abort
ImportError: No module named flask`
Any additional information
Fresh install of Ubuntu
Edit:
It seems that pip is not installed by default on Ubuntu (at least 14.04). For others experiencing the same issue just do an apt-get install python-pip before launching the setup.

Fixes #179

Ubuntu isn't technically "supported" as of right now. We will look at adding this into the setup script and adding support for it.
Thanks!


error starting frame buffer: EOF

Hello, everyone!
I'am trying start example_test on macOs, but always have this error:
panic: error starting frame buffer: EOF
And if I run the tests I see that:
=== RUN   TestHelperProcess
--- PASS: TestHelperProcess (0.00s)
=== RUN   TestFakeExecCommand
--- PASS: TestFakeExecCommand (0.02s)
=== RUN   TestChrome
--- FAIL: TestChrome (1.29s)
	remote_test.go:108: Error starting the ChromeDriver server: error starting frame buffer: EOF
=== RUN   TestFirefoxSelenium3
--- FAIL: TestFirefoxSelenium3 (1.26s)
	remote_test.go:262: Error starting the WebDriver server with binary "vendor/selenium-server-standalone-3.8.1.jar": error starting frame buffer: EOF
=== RUN   TestFirefoxGeckoDriver
--- FAIL: TestFirefoxGeckoDriver (1.29s)
	remote_test.go:262: Error starting the WebDriver server with binary "vendor/geckodriver-v0.19.1-linux64": error starting frame buffer: EOF
...

Help me please, what's wrong?

I'm getting this issue, too.

I have the same problem.

sam problem here

on MacOsx it seems to receive EOF error in service.go:
`
func NewFrameBufferWithOptions(options FrameBufferOptions) (*FrameBuffer, error) {
...
go func() {
bufr := bufio.NewReader(r)
// bufr returns EOF
s, err := bufr.ReadString('\n')
ch <- resp{s, err}
}()
...
}
`

I found a workaround for local usage. On mac you can run xvfb separately sudo /opt/X11/bin/xvfb -nolisten tcp and then run example_test.


Error happened when I return back from offline mode and turn on the wifi, Also a crash happened if I restarted the data store again

Describe the bug
When using DataStore, after configuring the Amplify and start syncing, try to turn off the wifi, then turn it on again, an error will be displayed in XCode logs, if you then forced syncing your DataStore by stopping the DataStore and started it again a crash will happen.
Steps To Reproduce
1. Open your app normally
2. wait until the DataStore and Amplify to be configured and synced
3. turn off the wifi
4. turn it on again
5. An error will be logged that there is an error caused by connection
6. force syncing the DataStore (stop DataStore, then start DataStore)
7. A crash will happen in Storage Engine

        Amplify.DataStore.stop { _ in
            Amplify.DataStore.start { _ in

            }
        }

Expected behavior
To sync data normally.
Amplify Framework Version
1.28.0
Amplify Categories
DataStore
Dependency manager
Cocoapods
Swift version
5.0
CLI version
Not Installed
Xcode version
13.3.1
Relevant log output
Error Log:

User receives a network connection status: true
************************************** HubPayload(eventName: "DataStore.networkStatus", context: nil, data: Optional(AmplifyPlugins.NetworkStatusEvent(active: true)))
2022-08-17 20:30:01.038161+0300 TeamHub[9288:290017] [RealtimeConnectionProvider] Realtime connection is stale, disconnecting.
2022-08-17 20:30:01.039196+0300 TeamHub[9288:290017] ConnectionProviderError.connection
2022-08-17 20:30:01.039787+0300 TeamHub[9288:290017] ConnectionProviderError.connection
2022-08-17 20:30:01.042814+0300 TeamHub[9288:290017] ConnectionProviderError.connection
2022-08-17 20:30:01.055788+0300 TeamHub[9288:290070] [AWSModelReconciliationQueue] receiveCompletion: error: DataStoreError: Subscription item event failed with error
Caused by:
APIError: Subscription item event failed with error
Caused by:
connection
2022-08-17 20:30:01.060776+0300 TeamHub[9288:290017] [AWSDataStorePlugin] StorageEngine completed with error: DataStoreError: Subscription item event failed with error
Caused by:
DataStoreError: Subscription item event failed with error
Caused by:
APIError: Subscription item event failed with error
Caused by:
connection

------------------------------------------------------------------------------------------------

Crash stack trace:

* thread #1, queue = 'AWSDataStorePlugin.storageEngineInitQueue', stop reason = EXC_BREAKPOINT (code=1, subcode=0x102bc5b50)
    frame #0: 0x0000000102bc5b50 libdispatch.dylib`__DISPATCH_WAIT_FOR_QUEUE__ + 456
    frame #1: 0x0000000102bc551c libdispatch.dylib`_dispatch_sync_f_slow + 172
    frame #2: 0x0000000199cede18 libswiftDispatch.dylib`merged implicit closure #2 (() -> ()) -> () in implicit closure #1 (__C.OS_dispatch_queue) -> (() -> ()) -> () in __C.OS_dispatch_queue.sync<τ_0_0>(execute: () throws -> τ_0_0) throws -> τ_0_0 + 152
    frame #3: 0x0000000199ced0ac libswiftDispatch.dylib`partial apply forwarder for implicit closure #2 (() -> ()) -> () in implicit closure #1 (__C.OS_dispatch_queue) -> (() -> ()) -> () in __C.OS_dispatch_queue.sync<τ_0_0>(execute: () throws -> τ_0_0) throws -> τ_0_0 + 40
    frame #4: 0x0000000199cedbb0 libswiftDispatch.dylib`__C.OS_dispatch_queue._syncHelper<τ_0_0>(fn: (() -> ()) -> (), execute: () throws -> τ_0_0, rescue: (Swift.Error) throws -> τ_0_0) throws -> τ_0_0 + 256
    frame #5: 0x0000000199ced140 libswiftDispatch.dylib`__C.OS_dispatch_queue.sync<τ_0_0>(execute: () throws -> τ_0_0) throws -> τ_0_0 + 140
  * frame #6: 0x00000001039dd5cc AmplifyPlugins`AWSDataStorePlugin.initStorageEngine(self=0x00000001040519f0) at AWSDataStorePlugin.swift:114:32
    frame #7: 0x00000001039de4c0 AmplifyPlugins`AWSDataStorePlugin.initStorageEngineAndStartSync(completion=0x00000001039e8b40 AmplifyPlugins`partial apply forwarder for closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in AmplifyPlugins.AWSDataStorePlugin.start(completion: (Swift.Result<(), Amplify.DataStoreError>) -> ()) -> () at <compiler-generated>, self=0x00000001040519f0) at AWSDataStorePlugin.swift:146:16
    frame #8: 0x00000001039e8a88 AmplifyPlugins`AWSDataStorePlugin.start(completion=0x00000001004d8a78 TeamHub`partial apply forwarder for closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in TeamHub.AmplifyManager.syncDataStore(completion: () -> ()) -> () at <compiler-generated>, self=0x00000001040519f0) at AWSDataStorePlugin+DataStoreBaseBehavior.swift:268:9
    frame #9: 0x00000001039eab84 AmplifyPlugins`protocol witness for DataStoreBaseBehavior.start(completion:) in conformance AWSDataStorePlugin at <compiler-generated>:0
    frame #10: 0x0000000102e4ea20 Amplify`DataStoreCategory.start(completion=0x00000001004d8a78 TeamHub`partial apply forwarder for closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in TeamHub.AmplifyManager.syncDataStore(completion: () -> ()) -> () at <compiler-generated>, self=0x000000028343b270) at DataStoreCategory+Behavior.swift:78:16
    frame #11: 0x00000001004d61ec TeamHub`closure #1 in AmplifyManager.syncDataStore(_0=(success = () @ 0x000000016fa38930), completion=0x000000010044a7f0 TeamHub`closure #1 () -> () in TeamHub.EmployeeLoginViewController.didClickLoginButton() -> () at EmployeeLoginViewController.swift:278:9) at AmplifyManager.swift:155:31
    frame #12: 0x00000001039e91f0 AmplifyPlugins`closure #1 in AWSDataStorePlugin.stop(self=0x00000001040519f0, completion=0x00000001004d6248 TeamHub`partial apply forwarder for closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in TeamHub.AmplifyManager.syncDataStore(completion: () -> ()) -> () at <compiler-generated>) at AWSDataStorePlugin+DataStoreBaseBehavior.swift:285:17
    frame #13: 0x00000001039e96b8 AmplifyPlugins`thunk for @callee_guaranteed () -> () at <compiler-generated>:0
    frame #14: 0x00000001039e9718 AmplifyPlugins`thunk for @escaping @callee_guaranteed () -> () at <compiler-generated>:0
    frame #15: 0x0000000102bb5fc8 libdispatch.dylib`_dispatch_client_callout + 16
    frame #16: 0x0000000102bc5790 libdispatch.dylib`_dispatch_lane_barrier_sync_invoke_and_complete + 116
    frame #17: 0x00000001039e8cd0 AmplifyPlugins`AWSDataStorePlugin.stop(completion=0x00000001004d6248 TeamHub`partial apply forwarder for closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in TeamHub.AmplifyManager.syncDataStore(completion: () -> ()) -> () at <compiler-generated>, self=0x00000001040519f0) at AWSDataStorePlugin+DataStoreBaseBehavior.swift:274:32
    frame #18: 0x00000001039eaba4 AmplifyPlugins`protocol witness for DataStoreBaseBehavior.stop(completion:) in conformance AWSDataStorePlugin at <compiler-generated>:0
    frame #19: 0x0000000102e4eab0 Amplify`DataStoreCategory.stop(completion=0x00000001004d6248 TeamHub`partial apply forwarder for closure #1 (Swift.Result<(), Amplify.DataStoreError>) -> () in TeamHub.AmplifyManager.syncDataStore(completion: () -> ()) -> () at <compiler-generated>, self=0x000000028343b270) at DataStoreCategory+Behavior.swift:82:16
    frame #20: 0x00000001004d6100 TeamHub`AmplifyManager.syncDataStore(completion=0x000000010044a7f0 TeamHub`closure #1 () -> () in TeamHub.EmployeeLoginViewController.didClickLoginButton() -> () at EmployeeLoginViewController.swift:278:9, self=0x0000000282f2b740) at AmplifyManager.swift:154:27
    frame #21: 0x000000010044a7d8 TeamHub`EmployeeLoginViewController.didClickLoginButton(self=0x0000000103811650) at EmployeeLoginViewController.swift:276:31
    frame #22: 0x000000010044a818 TeamHub`@objc EmployeeLoginViewController.didClickLoginButton() at <compiler-generated>:0
    frame #23: 0x0000000183e9c0b4 UIKitCore`-[UIApplication sendAction:to:from:forEvent:] + 96
    frame #24: 0x0000000183fbb20c UIKitCore`-[UIControl sendAction:to:forEvent:] + 124
    frame #25: 0x0000000183d5143c UIKitCore`-[UIControl _sendActionsForEvents:withEvent:] + 352
    frame #26: 0x0000000183de8318 UIKitCore`-[UIButton _sendActionsForEvents:withEvent:] + 156
    frame #27: 0x000000018405feb0 UIKitCore`-[UIControl touchesEnded:withEvent:] + 516
    frame #28: 0x0000000183b65e74 UIKitCore`-[UIWindow _sendTouchesForEvent:] + 1228
    frame #29: 0x0000000183b95994 UIKitCore`-[UIWindow sendEvent:] + 4372
    frame #30: 0x0000000183d36504 UIKitCore`-[UIApplication sendEvent:] + 892
    frame #31: 0x0000000183b6a974 UIKitCore`__dispatchPreprocessedEventFromEventQueue + 8148
    frame #32: 0x0000000183b5f838 UIKitCore`__processEventQueue + 6544
    frame #33: 0x0000000183b64c54 UIKitCore`__eventFetcherSourceCallback + 168
    frame #34: 0x000000018177e4ec CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
    frame #35: 0x000000018178e61c CoreFoundation`__CFRunLoopDoSource0 + 204
    frame #36: 0x00000001816d0824 CoreFoundation`__CFRunLoopDoSources0 + 256
    frame #37: 0x00000001816d5ef8 CoreFoundation`__CFRunLoopRun + 768
    frame #38: 0x00000001816e9240 CoreFoundation`CFRunLoopRunSpecific + 572
    frame #39: 0x00000001a1ff3988 GraphicsServices`GSEventRunModal + 160
    frame #40: 0x0000000183ee941c UIKitCore`-[UIApplication _run] + 1080
    frame #41: 0x0000000183c82b88 UIKitCore`UIApplicationMain + 336
    frame #42: 0x00000001004b545c TeamHub`main at AppDelegate.swift:15:7
    frame #43: 0x000000010170c3d0 dyld`start + 444

Is this a regression?
Yes
Regression additional context
No response
Device
iPad 5th generation
iOS Version
15.5
Specific to simulators
No response
Additional context
No response

Thanks for reporting this.  We're tracking a related issue here.

Thanks for reporting this. We're tracking a related issue here.

Ok thank you, but also there is another part for this issue that it causing a crash if you stopped and started the DataStore again.

Hello @ameter, I need to ask a question, are there any way to know that the DataStore is stopped?
like a boolean flag or something?
or a way to know that the above failure happened?

Unfortunately there is not a good event to know that DataStore has stopped in this case. However, calling DataStore stop before start here is unnecessary. Calling start alone should recover from this situation. In addition, any DataStore operation (save, query, delete, etc.) will also start DataStore if it is not already started. The crash is still unexpected behavior so thank you for reporting that.
I see based on the logs that you provided that you are attempting to use the networkStatus hub event as a work around. Unfortunately this will not work because this event is dispatched before DataStore is stopped due to the logic in https://github.com/aws-amplify/amplify-ios/pull/1901. This behavior is intentional to fix a separate issue, however it has unintended side effects here.
All this to say is that this issue will break real time subscriptions, but the remainder of DataStore should function as expected.
We don't have an ETA on the fix at this time.

@dpilch Thank you for your answer, Yes I know that starting the DataStore will avoid the crash, but we have a use case that we are providing the user a force sync button, he can click on it to force sync everything from AppSync, so if the user turn on the wifi and clicked this button the app will crash, because this button implementation is to stop the DataStore and start it again.
force sync button implementation:
Amplify.DataStore.stop { _ in
Amplify.DataStore.start { _ in
    }
}

Ah, I understand. I would say for the time being the solution would be to wrap the stop with another start. This isn't the prettiest solution, but will be fine because DataStore start is a no-op when already started.
Amplify.DataStore.start { _ in
    Amplify.DataStore.stop { _ in
        Amplify.DataStore.start { _ in

        }
    }
}

We will continue to look into the fix for crash as well as the incorrect stopping outlined in https://github.com/aws-amplify/amplify-ios/issues/2152

@dpilch Yes I did that recently to avoid the crash and to maintain the app to work normally for now.
Thank you for your collaboration 🙏🏻

Hello @dpilch @ameter ,
is there a way to let Amplify use the full sync instead of delta sync?
    let lastSyncTime = getLastSyncTime()
    let syncType: SyncType = lastSyncTime == nil ? .fullSync : .deltaSync
    initialSyncOperationTopic.send(.started(modelName: modelSchema.name, syncType: syncType))

I can see here from the library implementation is depending on the last sync time to determine the sync type, so is there another way to set the sync type from our side?

Hi @medhatIbsais-Harri, thanks for reporting this issue. the following code snippet should not crash the app
Amplify.DataStore.stop { _ in
            Amplify.DataStore.start { _ in

            }
        }

Glad @dpilch's workaround is working for you. we'll keep this issue open until we have a fix for the above code snippet does not crash an app

Hi @lawmicha, thank you for your collaboration, but this code snippet will crash the app, the idea if you request Amplify.DataStore.stop while it’s already stopped, this will crash the app, so that I used the workaround which is to request DataStore.start, then DataStore.Stop, then DataStore.start again, so that I avoid the crash.
Amplify.DataStore.stop { _ in
Amplify.DataStore.start { _ in
        }
    }

I suspect that calling from the main thread is what's causing the crash. The crash logs appear to be on thread 1, which is the main thread, calling start and waiting to queue storageEngineInitQueue. Moving the calls (stop then start) off the main thread should fix the problem but if there's a deadlock happening, then its still an issue regardless of the thread it's on

We were able to reproduce the crash and the issue is that start is trying to perform the work synchronously on the same DispatchQueue that stop is currently using. This causes a deadlock because start waits for the queue but is never able to acquire it, since start is called in the completion closure of stop. To get around this, you can dispatch the call to start on a separate thread, for example
Amplify.DataStore.stop { _ in
    DispatchQueue.global(qos: .background).async {
        Amplify.DataStore.start { _ in

        }
    }
}

We have the PR in progress to fix this here: https://github.com/aws-amplify/amplify-swift/pull/2517

@lawmicha thank you, we did another workaround and its working for now, we will wait for your fix

Hi @medhatIbsais-Harri you should be able to upgrade to version 1.28.3, we've released the fix for this issue. Please let us know if you continue to experience any issues. 🙏

Thank you @chrisbonifacio

Hello @chrisbonifacio, I'm still experiencing this issue on Amplify (1.28.3)

Hello @chrisbonifacio, any updates here?

Hello @chrisbonifacio @lawmicha, any updates here?


clean-repo-tabs: adds the menu button to profile page and breaks

Description
Opening a user profile page, e.g. https://github.com/alexanderniebuhr, the clean-repo-tabs menu button is shown. However clicking it shows an empty dropdown and makes some fancy UI jumps for me.

How to replicate the issue + URL
https://github.com/alexanderniebuhr
Extension version
23.11.23
Browser(s) used
Arc (Chromium)

Duplicate of #7106

The logic here is off:
https://github.com/refined-github/refined-github/blob/1c68bce3dccf2b6c23415ff51ea4a357efbd6b7f/source/features/clean-repo-tabs.tsx/#L137-L140
A function that alters the DOM is being used as a check, which may be true, but then fail hasRepoHeader.
clean-repo-tabs and more-dropdown-links  are  not enabled on profiles


CFF: add parsing for INDEX data

Adds support for reading data from CFF INDEX arrays.

TIL! Thanks, I’ll keep that in mind as I move forward and swap it out in cases where it’s helpful.


pydantic type issue

I tried running https://github.com/ScrapeGraphAI/Scrapegraph-ai/blob/main/examples/openai/smart_scraper_schema_openai.py
I'm getting the following issue
pydantic_core._pydantic_core.ValidationError: 1 validation error for Generation
text
Input should be a valid string [type=string_type, input_value=Projects(projects=[Projec...eived maximum grade.')]), input_type=Projects]
For further information visit https://errors.pydantic.dev/2.9/v/string_type
Ps - I'm using pydantic instead of  langchain_core.pydantic_v1

Hi,
It is a duplicate of #598
It has been fixed in the beta version: 1.20.0-beta1
pip install scrapegraphai==1.20.0b1

Hi, please update to the beta

Fixed :)


Attempt to call field 'get_clients' (a nil value)

Hi! I'm getting this exception after the lsp_signature pop-up has appeared, but immediately after I type a character while the pop-up is open:
Error detected while processing function CursorHoldI_Cb[5]..CursorHoldI Autocommands for "<buffer=6>":
E5108: Error executing lua .../nvim/lazy/lsp_signature.nvim/lua/lsp_signature/init.lua:1028: attempt to call field 'get_clients' (a nil value)
stack traceback:
        .../nvim/lazy/lsp_signature.nvim/lua/lsp_signature/init.lua:1028: in function 'check_signature_should_close'
        [string ":lua"]:1: in main chunk
Press ENTER or type command to continue

lsp_signature version: https://github.com/ray-x/lsp_signature.nvim/commit/fc7231f3cf387177c010eae032e0b43499e42709

I met this problem, too.
It seems that the function get_clients is not supported.
So I went to the ~/.local/share/nvim/lazy/lsp_signature.nvim/lua/lsp_signature/init.lua file, and change the 1028 line from
local clients = vim.lsp.get_clients({ bufnr = bufnr })
to
local clients = vim.lsp.get_active_clients ({bufnr = bufnr}),
and it works !

Looks like get_clients is Neovim 0.10+ only. 0.9 (stable) Neovim only provides get_active_clients.
So lsp_signature needs to check the Neovim version and use one of either.
See https://neovim.io/doc/user/news.html

Thanks for the quick fix.


Request: Access Application on the Network

I want to be able to access the running application (ell-studio) on the network via the machine's name host (eg, galaxy.local) on MacOS.  Typically in a javascript app you would need to configure the host to be <IP_ADDRESS> instead of <IP_ADDRESS>. Not sure what the frontend is built on, but I'm sure there are instructions for being able to configure it to start with a custom host.

Think this was fixed https://github.com/MadcowD/ell/commit/c7738f6ecaf9c7597a9fba1699f7a3fd60bc8587

@alex-dixon we should release a new version with this if tis not out yet.
@transcendr can you pip install --upgrade ell-ai

@transcendr oh this isnt out yet
will be out tonight with 0.0.6


explore_json  return error that 'an error occured'

explore_json return error with this content an error occurred for queries that approximately takes time more than '00:01:57' while the query returns in the sql_lab.
This issue happens while I increased the webserver timeout and it's big enough for that!
Expected results
Show table in explore_json
Actual results
Superset just returns error with this content: an error occured
Screenshots

How to reproduce the bug

Go to
Click on '....'
Scroll down to '....'
See error

Environment
(please complete the following information):

superset version: master branch from 3 weeks ago
python version: 3.6

Checklist
Make sure these boxes are checked before submitting your issue - thank you!

[x] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x] I have reproduced the issue with at least the latest released version of superset.
[x] I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context
Add any other context about the problem here.

@mistercrunch Also I have a question about the structure of viz.py. I read the code and realized that in the viz.py superset does not use celery task to run queries of a dashboard or explore_json.
why it should be not used while the dashboards and in general visualization is one major usage of Superset. I mean there are a lot of queries that exist on a dashboard and with celery task, it would be better to run.

It was related to gunicorn timeout.

@blcksrx
What was the fix that you did for gunicorn timeout ?  I see that the timeout happens at 2 minutes in your example. I'm running into similar issue and played with timeout and worker-class but it didn't help.

Increase gunicorn and SUPERSET_WEBSERVER_TIMEOUT both!
In mu case the superset webserver gunicorn was less than gunicorn timeout and in this case the when the gunicorn reached at timeout superset returned error above

SUPERSET_WEBSERVER_TIMEOUT is set to 120 seconds.
gunicorn timeout is set to 150 seconds.
gunicorn \         --bind  "<IP_ADDRESS>:8088" \         --workers $((2 * $(getconf _NPROCESSORS_ONLN) + 1)) \         -k gevent \         --timeout 150 \         --limit-request-line 0 \         --limit-request-field_size 0 \         --access-logfile '-' \         --error-logfile '-' \         superset:app
I'm still getting random timeouts (15 secs, 22 secs,.). Here's the error we get in the browser as the connection gets dropped by the webserver.
POST superset/explore_json/?form_data=%7B%22slice_id%22%3A62%7D&force=true net::ERR_EMPTY_RESPONSE TypeError: Failed to fetch
Do we need any specific timeout setting in ngnix for the above SUPERSET_WEBSERVER_TIMEOUT and gunicorn timeout settings to work ?


Increase line height of description text for readability

For descriptions on the individual app page, I may set the line height to 2.7rem.

Resolved: 1f4da03

Fixed


Custom nginx configuration

To allow iframing zulip into our hub, I added a add_header Content-Security-Policy statement to zulip - first to /etc/nginx/sites-available/zulip-enterprise, but that was overriden with the update, now I used /etc/nginx/zulip-include/headers.
Is this the proper place for that? Is there a file for overrides?

I think the right way to add an override is to add a configuration file in this directory:
include /etc/nginx/zulip-include/app.d/*.conf;
We should document this better; @alexmv FYI.
May I ask what specific content-security-policy you're looking to add?

https://zulip.readthedocs.io/en/latest/production/upgrade-or-modify.html#nginx-configuration-changes is our existing documentation about extending nginx's configuration, and it talks about /etc/nginx/zulip-include/app.d/*.conf and etc/nginx/conf.d/*.conf.  I added a couple more sentences in #22029.
@xeruf, adding the file works for me to add headers:
# cat >/etc/nginx/zulip-include/app.d/example.conf
add_header Content-Security-Policy "frame-ancestors 'self'";
^D

# service nginx restart

# https HEAD https://alexmv-prod.zulipdev.org/
HTTP/1.1 302 Found
Connection: keep-alive
Content-Language: en
Content-Length: 0
Content-Security-Policy: frame-ancestors 'self'
Content-Type: text/html; charset=utf-8
Date: Tue, 10 May 2022 00:10:18 GMT
Location: /login/
Server: nginx/1.18.0 (Ubuntu)
Strict-Transport-Security: max-age=15768000
Vary: Accept-Language, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

The problem you're actually running into is that second-to-last line -- Zulip always adds an X-Frame-Options: DENY line to prevent clickjacking.  If you're going to extend via iframing, you'll need to strip that header out, which is going to require forking Zulip to remove that configuration from puppet/zulip/files/nginx/zulip-include-common/headers, or editing /etc/nginx/zulip-include/headers by hand.

A quick test of ngx_headers_more finds that its more_clear_headers doesn't suffice to clear the header, sadly -- presumably because it's only at the server level, not the location level, so it can't override headers in the locations.

Interestingly, the DENY never produced issues for me.   I'll close this as resolved, then, and #22030 will help improve the docs on this slightly.

Working fine ever since, x-frame-options is obsoleted by the option I added :)
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options


[azure-iot-sdk-c] LTS_08_2023

[azure-iot-sdk-c] LTS_08_2023

Hi @dg0yt, anything else needed to merge this PR?

Note: I will be converting your PR to draft status. When you respond, please revert to "ready for review".
That way, I can be aware that you've responded since you can't modify the tags.


Perform defaulting using mutating webhook

[ ] Issue certificates (like we do for ES)

cc: @the-redback  @aerokite

This issue was moved to kubevault/i2#9


Export current temporary chat without hitting API

I would like to use this extension to save the current chat as json file.
I've noticed that when chat history is set to off, methods like getLastResponse will return messages from my last saved conversation, not the current temporary conversation.
I'm interested in getting the markdown content of messages. I know it exists locally as the copy to clipboard message at the bottom of each response will put it in your keyboard without hitting any API endpoint.
Is this something that could be supported?
Visual reference:

Hey @thomasgauthier indeed it is already supported, both the clipboard icon function and chatgpt.js uses front-end method to get the response (then API method was introduced) but I patched that method to work again, it is
chatgpt.response.getFromDOM(1|2|3|'last') or chatgpt.getResponseFromDOM(1|2|3|'last')

... which works while function is called on the chat page. Also could you share what you're building if you want when you're done?


Convert sections to Python objects

When I designed sections, I thought of the section name as a slug, short identifier, not a verbose name that will be displayed to end users. But we need to store additional data on sections, such as a verbose, translatable name, and maybe some common behaviour that will apply on all preferences.
So, the current section system, based on a single identifier has to evolve to plain Python objects. The API could probably looks like :
@sections.register
class CMSPosts(Section):
    name = 'cms_post'
    verbose_name = _('CMS Posts')

The challenge here will be to keep backward-compatibility.

I think in a couple of weeks I can have this done. Tell me if is an appropiate timespan. Cheers

It would be really great ! There is absolutely no urge for this, and a couple of weeks are fine :)

I'm gonna work on it, I have some spare time right now :)


No module named 'clip'

Traceback (most recent call last):
File "C:\Users\nicol\Desktop\Comfy UI Done\ComfyUI\nodes.py", line 1893, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 940, in exec_module
File "", line 241, in call_with_frames_removed
File "C:\Users\nicol\Desktop\Comfy UI Done\ComfyUI\custom_nodes\ComfyUI-ImageReward_init.py", line 1, in
from .nodes import NODE_CLASS_MAPPINGS
File "C:\Users\nicol\Desktop\Comfy UI Done\ComfyUI\custom_nodes\ComfyUI-ImageReward\nodes.py", line 1, in
import ImageReward as RM
File "C:\Users\nicol\Desktop\Comfy UI Done\python_embeded\Lib\site-packages\ImageReward_init_.py", line 1, in
from .utils import *
File "C:\Users\nicol\Desktop\Comfy UI Done\python_embeded\Lib\site-packages\ImageReward\utils.py", line 19, in
from .ImageReward import ImageReward
File "C:\Users\nicol\Desktop\Comfy UI Done\python_embeded\Lib\site-packages\ImageReward\ImageReward.py", line 16, in
from .models.BLIP.blip_pretrain import BLIP_Pretrain
File "C:\Users\nicol\Desktop\Comfy UI Done\python_embeded\Lib\site-packages\ImageReward\models_init_.py", line 1, in
from .AestheticScore import *
File "C:\Users\nicol\Desktop\Comfy UI Done\python_embeded\Lib\site-packages\ImageReward\models\AestheticScore.py", line 16, in
import clip
ModuleNotFoundError: No module named 'clip'
Cannot import C:\Users\nicol\Desktop\Comfy UI Done\ComfyUI\custom_nodes\ComfyUI-ImageReward module for custom nodes: No module named 'clip'
And module Clip dosen't exsist inside the embeded python in comfy ui

clip @ git+https://github.com/openai/CLIP.git
I had same problem (on windows 11) adding the line above to requirements.txt. problem solved

Thanks for the bug report and solution, I've added this to the requirements.txt now :)


bootstrap glyphicons fonts path is wrong

according to bootstrap/_variables.scss the glyphicons fonts are expected to live in <project_root>/public/fonts/bootstrap/ — however the generator puts them in <project_root>/public/fonts/.

I tired to move them into /public/fonts/bootstrap but I still can't get them to work, It seems the browser doesn't even try to request the woff files (when looking in the network panel). Not sure how to debug this as I'm no css expert and new to sass.

I had this same bug (using master v0.4). Changing the variable declarations to the following works:
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url("../fonts/glyphicons-halflings-regular.eot");
  src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); }


Add Source 2 Typed variant

Description
Adds Source 2 Typed variant to the frontend.
PR marked as draft until source-academy/js-slang#1320 is merged and js-slang version is bumped. For now, this PR serves to aid in the testing of source-academy/js-slang#1320.
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Code quality improvements

How to test
Checkout js-slang to source-academy/js-slang#1320, link local js-slang to local frontend, and start the frontend locally. The Source 2 Typed variant should now be available as a selection. Switch to Source 2 Typed and test by writing Source 2 code with types.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 32.933%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
4359

Relevant Lines:
12309

💛  - Coveralls


SRG requests

SRG Requests to the JTC – Day 1 (Feb 19, 2019)

Please include a catch stream level of 500,000 t in the forecast tables of relative spawning biomass at the beginning of the year and fishing intensity and the risk tables showing probabilities related to spawning biomass, relative fishing intensity, and the 2020 default harvest policy catch for alternative 2019 catch options and 2020 catch options. See Issue #574

Think about utility of Age-1 index in context of MSE based on previous presentation in 2016 from Alan Hicks. How can this work be carried forward in the context of the improved MSE to stabilize our estimates of recruitment. Does an age-1 index provide value to the assessment? Under what circumstances, if any, does an age-1 index help? This is a longer-term request

Take a look at c23bee8c1266dd6a1330c63065d9ac4cea4f615c and ced9cdfe2051e6ea11346591c45a3e4e4798ef20 as a step toward understanding uncertainty with age-2 cohorts in the retrospectives. Trevor asked for this.


vtexplain groundwork

Minor changes needed to support vtexplain:

Add an optional QueryLogger to the fakesqldb that calls a registered callback whenever
Add an accessor to expose the vtgate executor's plan cache outside of the package
Expose a constructor to create a vttablet QueryExecutor and to get the tablet execution plan

@sougou It's been challenging to get Travis to pass on this PR, but I also have a very hard time seeing how any of these changes could have actually introduced a regression since all they do is add hooks for future use by vtexplain. Can you take a look?

Looks like your build went green.

I decided in hindsight that having two separate PRs for the vtexplain groundwork and the actual implementation was hindering as opposed to helping the review. I'm going to close this one as I've moved these commits into #3082.


[MM-30449] - Hide create category option when unread filter is enabled

Summary
Hide the option to create new category when unread filter is enabled.
Ticket Link
https://mattermost.atlassian.net/browse/MM-30449

Thanks @nevyangelova - I see the option to create categories when unread filter is enabled on the test server. Can you please check? Thanks

I am a little confused with this test case then. As far as I know the unread filter is clicked and then you only display the unread channels. At that point you shouldn't create categories. If the filter is present which seems to be always the case, shouldn't the user have the option at this point? Or is there a way to not display it at all? From what I am seeing in the code it's not the case.


Automatically generate docs for Conditional Prop Style Helpers from code

Problem
This is a follow-up issue from Document Conditional Props using a Static file.
The conditional prop style helper docs are managed in a static markdown file. This will be hard to maintain long-term.
Solution
The exact solution will vary depending on how the conditional props have been implemented (at this time it's not clear).

In the ui-extensions components() script generator, you'll need to call the createDepandancyGraph() function from docs-tools for a file that exports the style helpers
You may need to support certain new TS types from within the docs-tools package
You may also need to adjust the propTypes() in ui-extensions to handle them

Hey @jamesvidler, would chatting with @ncardeli and me about how conditional props are implemented help generate the doc?

It is worth noting there have been discussions and a desire from @jffortier to not have the conditional props page on every component that uses a conditional prop. Instead, the desired result may be conditional props on their own page, with a link from a documented conditional prop to that page for additional information.


Rewrite mutiny deprecation for reworked Uni combination APIs

See https://github.com/smallrye/smallrye-mutiny/releases/tag/2.5.0 and https://github.com/smallrye/smallrye-mutiny/pull/1362
Not sure if it belongs here, but I couldn't find any place for Mutiny rewrites itself.
Tested this on one of my local projects and simply rewrites the methods from combinedWith to with and compiles successfully without any deprecation warnings afterwards with Quarkus 3.5.0

Oh, nice. It belongs here as it's part of the core repository.
Let's see what CI has to say (we are not using the latest version of OpenRewrite so the doc might not completely be consistent with the version we are using).

Oh, nice. It belongs here as it's part of the core repository.
Good to hear!

Let's see what CI has to say (we are not using the latest version of OpenRewrite so the doc might not completely be consistent with the version we are using).

Yeah if it works, I could add another trivial one for https://github.com/smallrye/smallrye-mutiny/pull/1356 that was changed in Mutiny 2.5.0

@jponge I let you have a look? It looks like a good idea to me to start doing that if it doesn't require too much effort.

@gsmet I'm not part of this repo so I'll let you or anybody else handle the merge.

Let's wait for CI and merge. This is good stuff and a nice template for future changes.

I force pushed to remove the merge commit as we don't want them in pull requests.

I force pushed to remove the merge commit as we don't want them in pull requests.

thanks, I'll keep it in mind for next PRs. Is this good to merge now?

Thanks!


Fix #599 Bottom Navigation will be never shown

Issue

close #599

Overview (Required)
The cause was due to the fact that the state of BottomNavigationView was not reset at the switching of the behavior.
Screenshot

Before
After

I trust you 😉

Thanks!
Let's merge. ⚔


[material-nextjs] Fix release script

closes #40522
This PR fixes the NextJS integration package release script. After migrating from yarn to pnpm, the entire "mui-material-nextjs" folder is being published, which breaks imports of package components.

[x] I have followed (at least) the PR section of the contributing guide.

👍 Thanks for the quick fix! Great first PR.

Thank you!
Could you merge it, please?


stripInterval does not strip @internal for .js input, even though JSDoc doesn't care about JS vs. TS, it's JSDoc.

🔎 Search Terms
--stripInternal
🕗 Version & Regression Information

This changed between versions 3.6 and 3.7

⏯ Playground Link
https://www.typescriptlang.org/play?stripInternal=true&filetype=js#code/PQKhCgAIUgBBLAdgFwKYCdEEMA2UTDg6rKQD6ZAJgPYoDKAFtQO4AqD8AzpALyQCMAJgDMAbnBA
💻 Code
/**
 * @internal
 */
let __dontShowThis = 123;

🙁 Actual behavior
The DTS file is
/**
 * @internal
 */
declare let __dontShowThis: number;

🙂 Expected behavior
The DTS file should be empty, because the JSDoc says there is nothing public in this file.
Additional information about the issue
When picking "typescript" as language in v3.7 and above, the DTS file is empty as it should be.
When picking "javascript" as language in 3.7 and above, the DTS file is not empty, despite the fact that there is no difference between the two when it comes to JSDoc.

The documentation says

This is an internal compiler option; use at your own risk, because the compiler does not check that the result is valid

And now I'm reporting it misbehaving so that can get fixed, because "use at your own risk" doesn't mean "we don't care if it does the right thing". It does the right thing, it just needs to do the right thing irrespective of the input language. Because that shouldn't matter, and 3.6 shows it didn't in the past.

(not to mention that if issues like https://github.com/microsoft/TypeScript/issues/46515 get taken seriously, with code fixes, closing this just because it's about an internal option makes no sense)

(@RyanCavanaugh ping to unmark this as completed)

I'm not sure we're on the same page here. The feature isn't supported. Our discretion to not bother to fix this is what it means for something to be unsupported.

Apparently we're not. If a feature is not supported, don't expose it, and don't add it to the public docs. If you do, accept bug reports for it and consider whether they're easy to fix or not and decide to close based on that instead.


[request]: Support presigning for all S3 operations

A note for the community

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue, please leave a comment

Tell us about your request
All S3 requests should be presignable—this is the behavior of the Ruby SDK.
Tell us about the problem you're trying to solve.
Make a request to S3 from a context where the credentials are not directly available
Are you currently working around this issue?
routing requests through the server
Additional context
No response

Are there any plans when this will be done?
I am interested in pre-signing the ListObjectsV2 operation with a fixed prefix, will this be possible?


Cleanup vcpkg_configure_cmake.cmake

Cleanup code.

Remove/fix possibly redundant call to vcpkg_find_acquire_program(), thus setting PATH twice
Fix accessing ENV{PROCESSOR_ARCHITECTURE}, which is Windows only
Use macro()s to improve readability.
Use variables to reduce redundant checks and increase clarity

Overall this looks like a good improvement to the readability of the file.  Changes to this file do not yet trigger a full build in the PR test system when the build pipelines run so we will want to run some additional tests for verification.

resolved merge conflicts

Running full rebuild test https://dev.azure.com/vcpkg/public/_build/results?buildId=4590

This looks good, the only test failures in the full rebuild were unrelated to this change (some ports can be flaky)


Add first moment inside interval

Fix https://github.com/JuliaApproximation/SingularIntegrals.jl/issues/7

I think this is good to go @dlfivefifty

@ioannisPApapadopoulos I think with this we have a fast code for building collocation matrices with power law kernels


Support for graphql

Hello all,
I'd like to know if any strong support for GraphQL APIs is planned for the future of WSO2 ? GraphQL has an ever growing adoption among API developer with strong arguments against REST.
There is a lot of great tools for GraphQL today, but imho the big bottleneck for massive adoption is the very poor support by API gateways today.
Of course it still works.  But today this is far for optimum and by design you can't use correctly most of WSO2 APIM features.
The reason is, you usually have the whole schema of your API cluster in a single endpoint. Even if you have dozens of microservices serving their own GraphQL APIs, the good practice is to aggregate them through an API router like Apollo tools https://www.apollographql.com/docs/graphql-tools/schema-stitching.html.
Because of this, we can't properly use throttling and monetization features in WSO2, which are configured by endpoint but in GraphQL we want to be able to configure them by GraphQL functions. Configuring an GraphQL endpoint today defeat most of the usefulness of an API gateway, except maybe for the anti-DDOS needs.
I'd love to be able to create my GraphQL microservices, aggregate them with an Apollo server and properly securing, monetize and monitor with WSO2 gateway. I understand this is a lot of work, but today the support for GraphQL APIs among API gateways is so poor that I hope this can be a strong competitive advantage for WSO2 and a big opportunity. Even for analytics, today there is no open-source analytics for GraphQL, the only analytics I can think is apollo Optics and it's closed-source.
Thanks for listening to my point, I'm looking forward to know more about your roadmap if this is something planned.
Best regards,

+1

+1

+1

+1

+1

:+1:

Hi @YannickB,
Thanks for bringing this up. We would like to add this to our roadmap.
I haven't used GraphQL much and hence having some trouble understanding the exact scope of the requirement. For some clarity, could you explain the exact limitations of the current functionality using an example maybe? Basically what is exposed through the Apollo server and how would you have to expose this through the API Gateway today vs what would have been the ideal way of exposing it through the API Gateway.
Thanks,
Nuwan.

+1

Hi @nuwand,
First as disclaimer, even if I opened the ticket I'm not sure I am the best person to describe how the feature should work. Think of me as someone studying to build a really good software architecture, so including stuff like GraphQL and API Gateway, and as I was studying this I became obvious to me that no API Gateways on the market today was designed to fully support GraphQL. Hence I have no real use case in production as of yet, but I'll do my best to help.
I agree the best way to explain will be an example so here it is :
Let's say you have an API providing CRUD functions for two objects, product and invoice.
With a Rest API, you'd have two endpoints to use, http://myapi.com/api/product and http://myapi.com/api/invoice, and you then do GET/POST/PUT/DELETE operations on them.
In WSO2, you can configure each endpoint independently, one for product and one for invoice, and then give a specific configuration for each of them to manage independently the security/throttling/monetization/etc... features provided by WSO2.
But if we are providing a GraphQL API we are currently much much more limited. This is due to the fact both objects will be accessible in the same endpoint http://myapi.com/graphql. And there is no way to create several endpoints http://myapi.com/graphql/product and http://myapi.com/graphql/invoice, this is completely anti-pattern with the best practices of GraphQL and will make most the tools in its ecosystem to stop working. Moreover, I believe all HTTP operations are POST.
So as example, we may want to do theses requests on the GraphQL endpoint :
query {
  product(id: 1) {
    id
    name
  }
}

mutation {
  createInvoice(data: {
    'customerID': 1
    'productID': 1
    'price': 20
  }) {
    id
    number
    total
  }
}

The first request will query the informations of the specified product, and the second will create an invoice for this product. Both queries are executed on http://myapi.com/graphql endpoint.
So with current state of WSO2 Gateway, which if I'm not wrong only allow to configure per endpoint, if I want for example to monetize at 0.01cent each call to createInvoice by configuring the http://myapi.com/graphql endpoint, then the call to product will also be monetized at 0.01cent. With REST, you'd just configure the 0.01cent to the http://myapi.com/api/invoice on POST and that would be all.
I hope this is enough for you to understand my point, this is a simple example but we can find plenty others, at current state it's impossible to use the Gateway features with GraphQL due to lack of flexibility in configuration. And it's not your fault, I believe all other API Gateway in the market have the same problem.
So the solution IMHO is allowing to attach WSO2 configuration not only to endpoint, but to GraphQL functions as well. This may prove to be a technical challenge I think, but there is definitely a need for this in the market because currently GraphQL just does not work with API Gateways, or in a very degraded way.
It seems this suggestion attracted quite some attention. To people following this issue, I invite you to give some informations about your use case and how WSO2 should design this feature. I hope I did my best to describe the situation, but I believe they'll need some real example to properly implement this.
Best regards,
Yannick

As temporary solution it would be great to have at least possibility to import in WSO2-AM graphql endpoints, in order to use it as Service Directory while waiting for a full support into the API Gateway

Hi @YannickB,
Thanks for you explanation. Forgive me, but I'm still trying to figure out the limitations with the endpoints. Let me explain the capability API Manager has with regard to endpoints and then maybe you can pin point the limitation.
Assume you have two endpoints as http://myapi.com/api/invoice and http://myapi.com/api/product. Note that I'm using the same example as you did, on which both endpoints seem to be on the same host (myapi.com). If your requirement is to have a single API on API Manager to proxy both endpoints, what you have to do is to create two resources, one as POST /invoice and the other as POST /product and specify http://myapi.com/api/ as the endpoint of the respective API. This will enable you to access both endpoints above using a single API. For example, if your gateway host is gateway.myapi.com and the context of the API you create is /graphql and its version is 1.0.0, the following requests would proxy each to the appropriate endpoint as below.
POST http://gateway.myqpi.com/graphql/1.0.0/invoice -> POST http://myqpi.com/api/invoice
POST http://gateway.myqpi.com/graphql/1.0.0/product -> POST http://myqpi.com/api/product
Note that you only have to create 1 API (/graphql/1.0.0) to proxy both endpoints. I'm sorry if I'm repeating something you already know :), but if you could pin point the limitation on our resource to mapping that makes it impossible to use GraphQL that would help me to understand the problem better.
Thanks,
Nuwan.

nuwand, i'm less technical than you.   But in my understanding with an APIM / Identity server  we define on API Level  the management of an API (security, throttling, ... ..) .   GraphQL is a kind of 'super' language combining API's via a 'meta' language .  What would be of interest of me is to understand how the concepts of GraphQL and the concepts of a WS02 APIM is matched.  and if both concepts will be integrated.  Offcourse you can consider the GraphQL als 1 resource which itself manage everything ....  but than the value of WS02 is limited if all my 'legacy'services will be accessible via the graphql server.

+1

With GraphQL, there really is only a single endpoint, so there is no such thing as myapi.com/graphql/invoice and graphql/product,  the endoint is just "myapi.com/graphql", and nothing after that. It is literally the same URL for each query and mutation, with the operations defined inside the body of the request.
Some api management features then would require introspection of the request body, knowledge of the graphql schema, etc. Let's assume that this is not feasible on a short term: WSO2 should almost become a GraphQL server/gateway in itself (or integrate one).
Instead, we should focus on what API management features are possible. I guess we need co-operation between WSO2 and the actual GraphQL server/gateway, e.g. by setting headers. For example monetization: the GraphQL server can compute the complexity of the query, add this information as a HTTP header to the response, where WSO2 translates this value into a price. Similarly for monitoring, the GraphQL server can 'convert' the JSON-shaped query into (a list of) rest-like pseudo-endpoint(s), which WSO2 reads from the response header to update the monitoring information. The same thing can be done for security, maybe in 2 phases: 1st ask the GraphQL server to convert the query into rest-like endpoints, WSO2 decides to pass or not, forwarding the query to the actual endpoint.
I'm completely new to WSO2 and haven't read most of the documentation, so maybe these features are already in WSO2 (more specifically: for any functionality of WSO2 that is usually derived from the exact REST endpoint URI, whether that same functionality can be derived in a alternative way (e.g. a header value or some other API to WSO2 itself)). It is likely that a GraphQL server needs to be modified to support these WSO2-specific features. The question is: what low hanging fruit can we start with?
(Of course I would like to see WSO2 make a big commitment into GraphQL... but we need to start somehwere, right?)

Great feedback , i  feel the same ;)
Op di 6 nov. 2018 om 12:06 schreef fourth44<EMAIL_ADDRESS>
With GraphQL, there really is only a single endpoint, so there is no such
thing as myapi.com/graphql/invoice and graphql/product, the endoint is
just "myapi.com/graphql", and nothing after that. It is literally the
same URL for each query and mutation, with the operations defined inside
the body of the request.
Some api management features then would require introspection of the
request body, knowledge of the graphql schema, etc. Let's assume that this
is not feasible on a short term: WSO2 should almost become a GraphQL
server/gateway in itself (or integrate one).
Instead, we should focus on what API management features are possible.
I guess we need co-operation between WSO2 and the actual GraphQL
server/gateway, e.g. by setting headers. For example monetization: the
GraphQL server can compute the complexity of the query, add this
information as a HTTP header to the response, where WSO2 translates this
value into a price. Similarly for monitoring, the GraphQL server can
'convert' the JSON-shaped query into (a list of) rest-like
pseudo-endpoint(s), which WSO2 reads from the response header to update the
monitoring information. The same thing can be done for security, maybe in 2
phases: 1st ask the GraphQL server to convert the query into rest-like
endpoints, WSO2 decides to pass or not, forwarding the query to the actual
endpoint.
I'm completely new to WSO2 and haven't read most of the documentation, so
maybe these features are already in WSO2 (more specifically: for any
functionality of WSO2 that is usually derived from the exact REST endpoint
URI, whether that same functionality can be derived in a alternative way
(e.g. a header value or some other API to WSO2 itself)). It is likely that
a GraphQL server needs to be modified to support these WSO2-specific
features. The question is: what low hanging fruit can we start with?
(Of course I would like to see WSO2 make a big commitment into GraphQL...
but we need to start somehwere, right?)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/wso2/product-apim/issues/3184#issuecomment-436215537,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ad4tuNmWvNcpkc1Nk5y46DljcQeM9RPwks5usW0kgaJpZM4TLf2Q
.

--
Bart Van Vlierberghe

@wasuradananjith can you also post how a GraphQL API looks like in the store ? Is querying available in the API Portal, probably with the schema ?

At least Apollo supports using GET for the GraphQL data request.

Hi all,
Please find the PR of Graphql support related to the APIM 3.0.0 release. https://github.com/wso2/carbon-apimgt/pull/6784. This issue will be closed, and there are other related issues have been opened to track future support for Graphql.

https://github.com/wso2/product-apim/issues/5432
https://github.com/wso2/product-apim/issues/5431
https://github.com/wso2/product-microgateway/issues/773
https://github.com/wso2/analytics-solutions/issues/310

Thanks!

Hi all,
Please find the information and PR of Graphql support related to the WSO2 APIM 3.0.0 release. Since we are going to release WSO2 APIM 3.0.0 under a new React-based UI, screenshots of new UI have been added in follows.
API publisher
Description:
When API creator uploads graphQL schema into API publisher, query and mutation operations will be listed in the publisher portal. Then he/she will allow to defines the scopes, throttling policies, enable/disable security against the operations.
Functionalities at the publisher.
1. Create a GraphQL APIs by importing GraphQL SDL schema

2. Validate the schema and extract its operations from the schema definition

3. Retrieve/Import/Download  SDL schema at the publisher.

4. Shows operations instead of resources

5. Add/Update throttling,scopes,security against operations

6. View graphQL APIs labeling 'GRAPHQL' at API Listing Page

API Store
Once the API is published by a publisher user, all the operations at the SDL schema have been populated at the developer portal and the schema file also available to download. Developer can test the operations using Tryout console with GET and POST request types.
Functionalities at the store.
1. View graphQL APIs labeling 'GRAPHQL' at API Listing Page

2. View operations for particular API

3. Able to download SDL schema retrieving schema

4. Provide developer console with GET and POST to invoke the API

Screenshots of views
1. Create GrpahQL API page

1. Upload schema page

1. Click next and populate a form to fill details

1. Created GraphQL API overview page

1. GraphQL API operation view

1. Uploaded schema definition

1. Add/Update scopes,throttling,security

1. Store operation overview

1. Schema download

1. Developer Console

Invocation time of Graphql API
1. Authorization - API Creator can add scopes per operations at the publisher
   When the APP user invokes the graphQL API with query/mutation (read-only/ read-write) operation, API gateway will identify which operations are containing in the payload and match them according to the token scope of the user. If the payload contains multiple operations with multiple scopes, the token should have at least a union of the operation scopes.
   Eg:- Let's say when a query contains, (operation A  - scope 1, operation B -  scope 2)
   the token of the user who is going to execute the query should have both scopes (scope1 and scope2)

2. Security - API Creator can enable/disable security per operations at the publisher.
   When a query request comes with multiple operation names, security has been considered as the union of the operations security. If one operation has been enabled the security, we support security for whole request.

3. Throttling - API Creator can add throttling policy per operations at the publisher.
   When a query request comes with multiple operation names, throttle policies will apply per operation. If one operation name of the request has been throttled out according to its policy, the whole request is going to be throttled out in the case of throttled operation.

PR will be found at wso2/carbon-apimgt#6784.
* At this level, we are not going to support on inspecting and analyzing queries, support API MicroGateway for GraphQL endpoints, support Graphql subscriptions with the inbound endpoints(Web socket APIs), Include an extra widget for Graphql APIs to see the count of operation invocation based on operation types, etc. Therefore, new issues have been opened to add relevant support for our future roadmap.

1. #5432

2. #5431

3. [wso2/product-microgateway#773](https://github.com/wso2/product-microgateway/issues/773)

4. [wso2/analytics-solutions#310](https://github.com/wso2/analytics-solutions/issues/310)

Appreciate your thoughts and valuable inputs regarding this.
Thanks!

Hi @HiranyaKavishani  ,
Does this support introduces publishing existing GraphQL API's via APIM like we normally do for existing API via wso apim ?
Thanks !

Close the issue as this support available in APIM 3.0.0 Beta version


Integrating Akka.F# Lib

Added the concurrent lib for Game of Light and Shadows. With Akka.FSharp, the architecture becomes reactive and fault tolerant to issues.

This change is

Reviewed 25 of 25 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable

Reviewed 2 of 2 files at r2.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


feat: support node esmodule and mf-manifest esmodule (#2934)

Description
Supports importing remote files in esm format in the node environment

Related Issue
https://github.com/module-federation/vite/issues/73

Types of changes

[ ] Docs change / refactoring / dependency upgrade
[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

Checklist

[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[ ] I have updated the documentation.

Hi @ScriptedAlchemy ,
I have tried the latest with module federation vite to see if this is resolved. But couldn't get it to work. Do I miss anything?


Feature Request: Bulk add collaborators

Add the bulk-file-path option for adding multiple collaborators to a folder. Would be especially helpful for external users which are not able to be used in Box Groups.

This issue should be fixed with this current release v1.2.0 @st0neberg


chore(gh): deploy rc to gh-pages

Description
Change @carbon/web-components staging deploy from beta to rc for gh-pages.
Changelog
New

{{new thing}}

Changed

{{changed thing}}

Removed

{{removed thing}}

should we go with v2-next instead of rc to keep with the npm tag?


Install from VSIX ... gets hung

Type: Bug
Steps to Reproduce:

Take any vsix and try to install from vsix and it gets hung.
After a few tries, we get "Please restart VS Code before reinstalling %extension.title%."
For install seems to work from powershell

VS Code version: Code 1.77.1 (b7886d7461186a5eac768481578c1d7ca80e2d21, 2023-04-04T23:21:11.906Z)
OS version: Windows_NT x64 10.0.22621
Modes:
Sandboxed: Yes

System Info

Item
Value

CPUs
Intel(R) Core(TM) i9-10900 CPU @ 2.80GHz (20 x 2808)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
undefined

Memory (System)
63.71GB (34.16GB free)

Process Argv
--crash-reporter-id d7566550-2364-470d-b052-0c94a36a3de5

Screen Reader
no

VM
0%

Extensions (1)

Extension
Author (truncated)
Version

vscode-dotnet-runtime
ms-
1.6.0

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vstes627:30244334
vslsvsres303:30308271
vserr242:30382549
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593cf:30376535
pythonvs932:30410667
cppdebug:30492333
vsclangdc:30486549
c4g48928:30535728
dsvsc012cf:30540253
pynewext54:30695312
azure-dev_surveyonecf:30548226
vsccc:30610678
nodejswelcome1:30587005
3biah626:30602489
pyind779:30671433
f6dab269:30613381
pythonsymbol12:30671437
2i9eh265:30646982
showlangstatbar:30672706
vsctsb:30705553
azdwalk:30687957
pythonms35:30701012

Please provide following log after doing the step Take any vsix and try to install from vsix and it gets hung.

F1 > Open View... > Shared

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!