Support for proxying symfony flex recipes

I was wondering what the thoughts where about adding functionality to proxy flex.symfony.com and perhaps even act as a private recipe server for use with symfony/flex given that symfony themselves no longer provide this option.

This is a very interesting option. I do not know the technical requirements, but unless it is somehow complex or expensive to maintain, I do not see anything against adding such functionality.

Just proxying by itself does not seem very complex.
From what i can tell there are 4 endpoints that symfony/flex talks to:

https://flex.symfony.com/versions.json
https://flex.symfony.com/aliases.json
https://flex.symfony.com/ulid
https://flex.symfony.com/p/symfony,framework-bundle,i,5.3;symfony,console,i,5.3

Where the content for the /p/ url is  is a ; seperated list of packages in the style of vendor,package,operation,version to get the manifest for.
Taking a peek at the repman source it looks like the existing Proxy service contains a lot of what would be needed and could be split into a PackageProxy and RecipeProxy with shared code in a abstract Proxy class. Though it would require the ProxyRegister and ProxyFactory to become aware of a type.

From what you wrote it appears that there should be no problem with accepting such changes. If you need any additional help, please let me know. As soon as I can, I will try to help.


BUG: globalConfig does not allow "placeholder" property for Basic/OAuth fields

Description
When adding OAuth functionality via. globalConfig, the "placeholder" property of basic/oauth fields is now allowed.
Currently the documentation states:

Fields allowed in basic and oauth fields as of now:
oauth_field: This should be kept as it is and without any change.
label: This can be changed if the user wants to change the label of the field in UI.
field: For now this user must keep it as it is for mandatory fields as mentioned above.
help : This can be changed if user wants to change the help text displayed below field.
encrypted : This should be true if user wants that particular field encrypted else no need to have this parameter.
placeholder: The placeholder for the field.
required: To specify whether the field is required or not. The default value is true.

However, when building an app with the ucc-gen build --ta-version=1.0.0 command, I am met with the following error message:
 ~/appname/ $ ucc-gen build --ta-version=1.0.0

INFO: ucc-gen version 5.28.4 is used
INFO: Python binary name to use: python3
INFO: Output folder is /Users/username/appname/output
INFO: Add-on will be built with version '1.0.0'
INFO: Cleaned out directory /Users/username/appname/output
INFO: Using globalConfig file located @ /Users/username/appname/globalConfig.json
ERROR: globalConfig file is not valid. Error: Additional properties are not allowed ('placeholder' was unexpected)

What ucc-gen version are you using?
5.28.4
Additional System Info
Python==3.11.2, OS=Mac OS Ventura

Thank you for reporting this issue. We will prioritise this task and update the codebase.

Started working on this issue - https://splunk.atlassian.net/browse/ADDON-64957

Also, The Placeholder attribute is deprecated and will be removed in the next major version. Instead, we recommend to use "help" attribute.
https://github.com/splunk/addonfactory-ucc-generator/issues/831


layouts: add support for setting additional relations on social links

This is an attempt to allow setting rel="me" on social links in the page header/footer. I hadn't noticed #587 when writing this, so consider it an alternative proposal to fix the problem.
This PR adds a new rel attribute to services listed under ananke_socials. If set, it specifies additional relations that will be added to the corresponding social link. This should cover case of claiming ownership of a Mastodon account, while also handling any other relations the user might want to add:
ananke_socials:
  - name: mastodon
    url: ....
    rel: me

While I'm just using a simple string property, it's possible to add multiple new relations by treating it as a space separated list (e.g. rel: one two three). When used, it adds to the existing noopener relation rather than replacing it.
Fixes #417

Terribly sorry I did not see his earlier... I rushed into fixing #417 myself without checking contributions... You'll find my solution is very similar to yours though.
Thanks a lot for this is much appreciated, and sorry again!


config: partial rejections in incremental xDS

In the review of #5466, the issue of partial rejections (when some resources have errors, but you still want to apply the rest and tell the xDS server you did so) came up. It was previously requested/discussed in #3079, but the current thinking is that only incremental xDS will have this feature, so I figured it deserved a new issue.
The incremental xDS gRPC protocol, as defined by IncrementalDiscoveryRequest, does not currently support partial rejections; there is just a single "here is why everything failed" grpc::Status field, just as in standard xDS. How should this proto support the partial rejection feature?
@htuch and I briefly discussed how this might be done, and saw two options so far:

Replace the grpc::Status error_detail field with a repeated grpc::Status field, expected to be as long as the number of resources in the previous IncrementalDiscoveryResponse. Entries correspond by index to the resources in that previous message.
Have a map from resource names to errors. This approach would be complicated by the fact that resource name lives inside an opaque Any.

There is also the question of whether we want to be able to distinguish between "each and every resource individually had errors" and "your whole update attempt had an error", i.e. whether the existing error_detail field should remain alongside the new partial rejection mechanism.

@costinm please upvote with Istio context as discussed today.

This is one of the biggest problems experienced by users with TLS certificates - we have no good way to
know when a cert has been distributed to all workloads, so when the LDS config is pushed to envoy the entire update is rejected. Worse - if envoy restarts, it will fail to get an initial config ( because one of the
certs is missing ). We also saw problems on mesh expansion, where one of the port was in use by an app - rejecting the entire config. Same problem happens for CDS with the certificates missing.
I think this is by far the most useful fix I would like to see in envoy based on issues our users
experienced.
In addition, the actual cause of the NACK is hard to parse automatically - at the very least it should
include the names of listeners/clusters that are broken in an easy to process format.

@costinm thanks for sharing the Istio perspective. https://github.com/envoyproxy/envoy/pull/5806 just merged, which might provide some improvement in insight into which resources are failing.

FWIW, looking at the new incremental implementation in CdsApiImpl , we're already doing a partial accept, so this issue is really just tracking making it a first class concern on the wire, i.e. being able to provide feedback at the per-resource granularity rather than a comma-separated string.

Thanks for the update - this is great on CDS side, but we'll also need something on LDS. Ingress needs to be configured with certs for multiple domains - and as I mentioned it's tricky for the XDS server to know if an envoy has the certs deployed.
We are switching to SDS for secrets - I'm not sure if LDS failing to load a cert via SDS will result in the full LDS rejection, but we have a report that if the SDS UDS socket is missing we do have problems.

@fredlas what are your thoughts on how we should proceed with this one?

As you mentioned early, the implementation details of adding per-resource rejection to the protocol should be almost trivial.
There is the issue of what should actually be done. I remember there was the pretty detailed offline discussion among a few people here, where the issue of resource dependencies was raised - basically, if you need ADS to enforce a particular ordering of your updates, then you need those same dependencies reflected when handling failures. (I think that's a reasonable summary?)
I am vaguely imagining a relatively clean bit of work (in particular with no xDS protocol changes (although maybe some changes to the resource protos themselves)) to accomplish that. In the "XdsGrpcContext" implementation I'm working on, you would also maintain some mapping that tells you "when you process a type_url1 update failure for resource X , reach into the type_url2 subscription to mark Y as unavailable, as well as type_url3 Z".
The good news is that it should fit very cleanly on top of what I'm currently building, rather than needing to be built in from the start. So we can keep that design in mind, while holding off on actually doing it until the current work is done, without hassle.

@fredlas how are resource dependencies different when we have partial rejection? In existing ADS, you can have messages [X, Y] queued up, reject X and you still process Y. Now all we're saying is we do a partial reject of X and still process Y. I do remember some discussion around this, but not the particulars.

Oh, I see what you're saying, and you're right, this issue is orthogonal to partial rejections. You could have all-or-nothing rejections and still have this problem. In that case that problem should get its own issue.

@fredlas yep, sounds good to open a separate issue, please tag me.

@fredlas I've tagged this help wanted. We probably want to nail this down in the context of the v3 API bump for the discovery services and incremental support (I've listed it in https://github.com/envoyproxy/envoy/issues/6271). If you have bandwidth, you're welcome to it, otherwise folks working on API topics should pick this up.

CC @envoyproxy/api-shepherds @envoyproxy/udpa-wg

Yeah, probably I shouldn't get involved; I really need to be getting on to my new project!
I think this should be pretty simple: the current code is already concatenating errors per resource into a single string, so instead just feed them into the map option mentioned in the original post. Need to decide what to do with the existing singular error field (maybe it could remain the concatenated string? or maybe change its meaning to "something went wrong more generally than just 'one or more resources were bad'"?)

Is this still needed if we implement #11396?  In general, it seems like the mechanism described there might essentially replace the current ACK/NACK mechanism completely in terms of determining the overall health of the client's config.  However, depending on how we do it, it might not address the use-case of needing to know when a client has actually switched to a new, valid config.

@markdroth I see #11396 as providing a way to reflect asynchronously changes to config state. The partial rejection is for synchronous rejections and provides immediate management server / config pipeline feedback.

Unfortunately, this leaves the control plane without a way to know which specific resources were accepted by the client. It would definitely be good to add a mechanism to the transport protocol to be able to NACK individual resources instead of responses as a whole.

Why would this matter to the management server for SotW, given that it is required to send all resources for the given version in each DiscoveryResponse anyway?

Why would this matter to the management server for SotW, given that it is required to send all resources for the given version in each DiscoveryResponse anyway?

First, that's true only for LDS and CDS, as per https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#grouping-resources-into-responses.
Second, even if the management server always sends every resource in every response, I don't see how that helps.  If the management server sends a response containing resources A and B, and then the client NACKs that response, the management server has no way of knowing if the client is rejecting only A, only B, or both.

My question was more along the lines of how does it effect the management server's behavior if it knows which were rejected

I don't think this info will generally change the management server's behavior with regard to the client.  However, it's very useful for the management server to track this information for monitoring or debugging purposes.  As just one example, the management server can expose this info via CSDS.
I don't think this actually has anything to do with SotW vs. incremental or with how resources are grouped into responses.  It's the same issue regardless of those variables.

If it gets a NACK for the full response, which is the current behavior, then the management server is forced to also send A at version 1 too, even though the client is already happily using it.

No, I don't think that's right.  The question of whether the client ACKs or NACKs a resource does not affect when the server sends it at all -- and that's true regardless of whether the NACK is per-response or per-resource.
The server's job is to always send the most recent version of the resource that it has to the client, regardless of whether the client accepts the resource.  If the client rejects the resource, resending the same resource is not going to accomplish anything, because the client will just reject it again.
Today, in the incremental protocol, the server does not need to resend a resource unless that resource changes -- and that's true regardless of whether the client rejected it.  Changing from per-response to per-resource NACKs will not affect that behavior.
Today, in the SotW protocol, for LDS and CDS, the server does need to resend the resource if some other resource changes -- and that's true regardless of whether the client rejected it.  Changing from per-response to per-resource NACKs (which we're not actually planning to do for SotW) would not affect that behavior.


"/bin/bash: cat: command not found" running example debian:buster scan

When I run tern -l report -o output.txt -i debian:buster as suggested in the README, I get the output below. Is this the expected output? If so, I found the repeated error messages surprising, and it might be worth clarifying in the README that this is indeed what you should see.
This report was generated by the Tern Project
Version: 1.0.1

Docker image: debian:buster:
	Layer: 5a87144dc3:
		info: Found 'Debian GNU/Linux 10 (buster)' in /etc/os-release.
		info: Layer created by commands: /bin/sh -c #(nop) ADD file:e05e45c33042db4ec7f71a5952d65ee8cb3786dcd76fa7a990f48a2def1344e2 in /
		info: Retrieved by invoking listing in command_lib/base.yml
names:
	in container:
	dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'

versions:
	in container:
	pkgs=`dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'`
	for p in $pkgs; do dpkg -l $p | awk 'NR>5 {print $3}'; done

copyrights:
	in container:
	pkgs=`dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'`
	for p in $pkgs; do cat /usr/share/doc/$p/copyright; echo LICF; done

		error: /bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
/bin/bash: cat: command not found
[snip ~100 lines of this]
/bin/bash: cat: command not found

	Invoking commands from command_lib/base.yml:
		warning: No listing for key licenses. Consider adding this listing to command_lib/base.yml.
No listing for key srcs. Consider adding this listing to command_lib/base.yml.

	Packages found in Layer:  adduser-3.118, apt-1.8.2, base-files-10.3+deb10u3, base-passwd-3.5.46, bash-5.0-4, bsdutils-1:2.33.1-0.1, coreutils-8.30-3, dash-<IP_ADDRESS>-5, debconf-1.5.71, debian-archive-keyring-2019.1, debianutils-<IP_ADDRESS>, diffutils-1:3.7-3, dpkg-1.19.7, e2fsprogs-1.44.5-1+deb10u3, fdisk-2.33.1-0.1, findutils-4.6.0+git+20190209-2, gcc-8-base-8.3.0-6, gpgv-2.2.12-1+deb10u1, grep-3.3-1, gzip-1.9-3, hostname-3.21, init-system-helpers-1.56+nmu1, iproute2-4.20.0-2, iputils-ping-3:20180629-2, libacl1-2.2.53-4, libapt-pkg5.0-1.8.2, libattr1-1:2.4.48-4, libaudit-common-1:2.8.4-3, libaudit1-1:2.8.4-3, libblkid1-2.33.1-0.1, libbz2-1.0-1.0.6-9.2~deb10u1, libc-bin-2.28-10, libc6-2.28-10, libcap-ng0-0.7.9-2, libcap2-1:2.25-2, libcap2-bin-1:2.25-2, libcom-err2-1.44.5-1+deb10u3, libdb5.3-5.3.28+dfsg1-0.5, libdebconfclient0-0.249, libelf1-0.176-1.1, libext2fs2-1.44.5-1+deb10u3, libfdisk1-2.33.1-0.1, libffi6-3.2.1-9, libgcc1-1:8.3.0-6, libgcrypt20-1.8.4-5, libgmp10-2:6.1.2+dfsg-4, libgnutls30-3.6.7-4+deb10u2, libgpg-error0-1.35-1, libhogweed4-3.4.1-1, libidn2-0-2.0.5-1+deb10u1, liblz4-1-1.8.3-1, liblzma5-5.2.4-1, libmnl0-1.0.4-2, libmount1-2.33.1-0.1, libncursesw6-6.1+20181013-2+deb10u2, libnettle6-3.4.1-1, libp11-kit0-0.23.15-2, libpam-modules-1.3.1-5, libpam-modules-bin-1.3.1-5, libpam-runtime-1.3.1-5, libpam0g-1.3.1-5, libpcre3-2:8.39-12, libseccomp2-2.3.3-4, libselinux1-2.8-1+b1, libsemanage-common-2.8-2, libsemanage1-2.8-2, libsepol1-2.8-1, libsmartcols1-2.33.1-0.1, libss2-1.44.5-1+deb10u3, libstdc++6-8.3.0-6, libsystemd0-241-7~deb10u3, libtasn1-6-4.13-3, libtinfo6-6.1+20181013-2+deb10u2, libudev1-241-7~deb10u3, libunistring2-0.9.10-1, libuuid1-2.33.1-0.1, libxtables12-1.8.2-4, libzstd1-1.3.8+dfsg-3, login-1:4.5-1.1, mawk-1.3.3-17+b3, mount-2.33.1-0.1, ncurses-base-6.1+20181013-2+deb10u2, ncurses-bin-6.1+20181013-2+deb10u2, passwd-1:4.5-1.1, perl-base-5.28.1-6, sed-4.7-1, sysvinit-utils-2.93-8, tar-1.30+dfsg-6, tzdata-2019c-0+deb10u1, util-linux-2.33.1-0.1, zlib1g-1:1.2.11.dfsg-1
	Licenses found in Layer:  None
------------------------------------------------

###########################################
# Summary of licenses found in Container: #
###########################################
None

The image has cat, of course.
$ docker run debian:buster which cat
/bin/cat

I assume I'm missing something obvious!

@williamsmj Thanks for filing an issue. Can you paste here the digest of the image you ran tern against? You can do that by running docker images --digests and get the digest of the image with the name debian and tag buster.

Sure, and thanks for replying!
$ docker images --digests debian:buster
REPOSITORY          TAG                 DIGEST              IMAGE ID            CREATED             SIZE
docker.io/debian    buster              <none>              971452c94376        6 days ago          114 MB

$ docker pull debian:buster
Trying to pull repository docker.io/library/debian ...
buster: Pulling from docker.io/library/debian
Digest: sha256:a63d0b2ecbd723da612abf0a8bdb594ee78f18f691d7dc652ac305a490c9b71a
Status: Image is up to date for docker.io/debian:buster

I get similar warnings about cat not found scanning ubuntu:18.04 by the way.

FWIW, I ran tern -l report -o output.txt -i debian@sha256:a63d0b2ecbd723da612abf0a8bdb594ee78f18f691d7dc652ac305a490c9b71a in my environment and do not see this warning.

@williamsandrew could you share a little information about the environment you are running this command on? i.e.
- Output of 'tern --version'
- Operating System (Linux Distro and version or Mac or Windows)
- Vagrant file
- Container OS
- Python version (3.6 or higher)
- Cloud environment (AWS, Azure, GCP)```

Sure. Please let me know if this covers it or you need more information:
$ tern --version
Tern version 1.0.1
   python version = 3.6.8 (default, Aug  7 2019, 17:28:10)
[tern] mlw-cml.vpc.cloudera.com:~/tern

$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

$ docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-108.git4ef4b30.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      4ef4b30/1.13.1
 Built:           Tue Jan 21 17:16:25 2020
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-108.git4ef4b30.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      4ef4b30/1.13.1
 Built:           Tue Jan 21 17:16:25 2020
 OS/Arch:         linux/amd64
 Experimental:    false```

@williamsmj I ran tern on a CentOS 7 Vagrant box and I had no errors. My environment:
[vagrant@localhost ~]$ tern --version
Tern version 1.0.1
   python version = 3.6.8 (default, Aug  7 2019, 17:28:10)
[vagrant@localhost ~]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[vagrant@localhost ~]$ docker version
Client: Docker Engine - Community
 Version:           19.03.7
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        7141c199a2
 Built:             Wed Mar  4 01:24:10 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.7
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       7141c199a2
  Built:            Wed Mar  4 01:22:45 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[vagrant@localhost ~]$

AFAICT, the only difference seems to be the docker version we are running (and I am not sure of the differences between Docker-CE and Docker-EE). Maybe try to upgrade your docker installation and try again?

I upgraded docker to CE but get the same result with
$ docker version
Client: Docker Engine - Community
 Version:           19.03.7
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        7141c199a2
 Built:             Wed Mar  4 01:24:10 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.7
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       7141c199a2
  Built:            Wed Mar  4 01:22:45 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

What is the output of a scan of debian:buster supposed to be?

This is what I get when I run tern in a CentOS 7 Vagrant box:
[vagrant@localhost ~]$ tern -l report -i debian:buster
2020-03-10 17:14:22,687 - DEBUG - __main__ - Starting...
2020-03-10 17:14:22,687 - DEBUG - run - Setting up...
2020-03-10 17:14:22,726 - DEBUG - container - Checking if image "debian:buster" is available on disk...
2020-03-10 17:14:22,756 - DEBUG - container - Attempting to pull image "debian:buster"
2020-03-10 17:14:36,960 - DEBUG - container - Image "debian:buster" downloaded
2020-03-10 17:14:41,460 - DEBUG - rootfs - Running command: tar -tf /home/vagrant/.tern/temp.tar
2020-03-10 17:14:41,501 - DEBUG - rootfs - Running command: tar -xf /home/vagrant/.tern/temp.tar -C /home/vagrant/.tern/temp
2020-03-10 17:14:42,023 - DEBUG - rootfs - Running command: tar -tf /home/vagrant/.tern/temp/f708b10a71ac7573a7ab8a9ef412f43db00db1403a54935877a3f4d0463cb23b/layer.tar
2020-03-10 17:14:42,117 - DEBUG - rootfs - Running command: tar -xf /home/vagrant/.tern/temp/f708b10a71ac7573a7ab8a9ef412f43db00db1403a54935877a3f4d0463cb23b/layer.tar -C /home/vagrant/.tern/temp/f708b10a71ac7573a7ab8a9ef412f43db00db1403a54935877a3f4d0463cb23b/contents
2020-03-10 17:14:43,090 - DEBUG - rootfs - Running command: sudo /usr/local/lib/python3.6/site-packages/tern/tools/fs_hash.sh /home/vagrant/.tern/temp/f708b10a71ac7573a7ab8a9ef412f43db00db1403a54935877a3f4d0463cb23b/contents
2020-03-10 17:14:56,083 - DEBUG - rootfs - Running command: sudo mount -o bind /home/vagrant/.tern/temp/f708b10a71ac7573a7ab8a9ef412f43db00db1403a54935877a3f4d0463cb23b/contents /home/vagrant/.tern/temp/mergedir
2020-03-10 17:14:56,124 - DEBUG - rootfs - Running command: sudo mount -t proc /proc /home/vagrant/.tern/temp/mergedir/proc
2020-03-10 17:14:56,147 - DEBUG - rootfs - Running command: sudo mount -o bind /sys /home/vagrant/.tern/temp/mergedir/sys
2020-03-10 17:14:56,175 - DEBUG - rootfs - Running command: sudo mount -o bind /dev /home/vagrant/.tern/temp/mergedir/dev
2020-03-10 17:14:56,206 - DEBUG - rootfs - Running command: sudo cp /etc/resolv.conf /home/vagrant/.tern/temp/mergedir/etc/resolv.conf
2020-03-10 17:14:56,228 - DEBUG - rootfs - Running command: sudo unshare -pf --mount-proc=/home/vagrant/.tern/temp/mergedir/proc chroot /home/vagrant/.tern/temp/mergedir /bin/bash -c dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'
2020-03-10 17:14:56,261 - DEBUG - rootfs - Running command: sudo unshare -pf --mount-proc=/home/vagrant/.tern/temp/mergedir/proc chroot /home/vagrant/.tern/temp/mergedir /bin/bash -c pkgs=`dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'` && for p in $pkgs; do dpkg -l $p | awk 'NR>5 {print $3}'; done
2020-03-10 17:14:56,917 - DEBUG - rootfs - Running command: sudo unshare -pf --mount-proc=/home/vagrant/.tern/temp/mergedir/proc chroot /home/vagrant/.tern/temp/mergedir /bin/bash -c pkgs=`dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'` && for p in $pkgs; do cat /usr/share/doc/$p/copyright; echo LICF; done
2020-03-10 17:14:57,039 - WARNING - common - Inconsistent lengths for key: proj_urls
2020-03-10 17:14:57,044 - DEBUG - rootfs - Running command: sudo umount /home/vagrant/.tern/temp/mergedir/proc
2020-03-10 17:14:57,073 - DEBUG - rootfs - Running command: sudo umount /home/vagrant/.tern/temp/mergedir/sys
2020-03-10 17:14:57,095 - DEBUG - rootfs - Running command: sudo umount /home/vagrant/.tern/temp/mergedir/dev
2020-03-10 17:14:57,119 - DEBUG - rootfs - Running command: sudo umount -rl /home/vagrant/.tern/temp/mergedir
2020-03-10 17:14:57,177 - DEBUG - generator - Creating a detailed report of components in image...
This report was generated by the Tern Project
Version: 1.0.1

Docker image: debian:buster:
	Layer: f7aeac85f9:
		info: Found 'Debian GNU/Linux 10 (buster)' in /etc/os-release.
		info: Layer created by commands: /bin/sh -c #(nop) ADD file:e05e45c33042db4ec7f71a5952d65ee8cb3786dcd76fa7a990f48a2def1344e2 in /
		info: Retrieved by invoking listing in command_lib/base.yml
names:
	in container:
	dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'

versions:
	in container:
	pkgs=`dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'`
	for p in $pkgs; do dpkg -l $p | awk 'NR>5 {print $3}'; done

copyrights:
	in container:
	pkgs=`dpkg --get-selections | cut -f1 -d':' | awk '{print $1}'`
	for p in $pkgs; do cat /usr/share/doc/$p/copyright; echo LICF; done

	Invoking commands from command_lib/base.yml:
		warning: No listing for key srcs. Consider adding this listing to command_lib/base.yml.
No listing for key licenses. Consider adding this listing to command_lib/base.yml.

	Packages found in Layer:  adduser-3.118, apt-1.8.2, base-files-10.3+deb10u3, base-passwd-3.5.46, bash-5.0-4, bsdutils-1:2.33.1-0.1, coreutils-8.30-3, dash-<IP_ADDRESS>-5, debconf-1.5.71, debian-archive-keyring-2019.1, debianutils-<IP_ADDRESS>, diffutils-1:3.7-3, dpkg-1.19.7, e2fsprogs-1.44.5-1+deb10u3, fdisk-2.33.1-0.1, findutils-4.6.0+git+20190209-2, gcc-8-base-8.3.0-6, gpgv-2.2.12-1+deb10u1, grep-3.3-1, gzip-1.9-3, hostname-3.21, init-system-helpers-1.56+nmu1, iproute2-4.20.0-2, iputils-ping-3:20180629-2, libacl1-2.2.53-4, libapt-pkg5.0-1.8.2, libattr1-1:2.4.48-4, libaudit-common-1:2.8.4-3, libaudit1-1:2.8.4-3, libblkid1-2.33.1-0.1, libbz2-1.0-1.0.6-9.2~deb10u1, libc-bin-2.28-10, libc6-2.28-10, libcap-ng0-0.7.9-2, libcap2-1:2.25-2, libcap2-bin-1:2.25-2, libcom-err2-1.44.5-1+deb10u3, libdb5.3-5.3.28+dfsg1-0.5, libdebconfclient0-0.249, libelf1-0.176-1.1, libext2fs2-1.44.5-1+deb10u3, libfdisk1-2.33.1-0.1, libffi6-3.2.1-9, libgcc1-1:8.3.0-6, libgcrypt20-1.8.4-5, libgmp10-2:6.1.2+dfsg-4, libgnutls30-3.6.7-4+deb10u2, libgpg-error0-1.35-1, libhogweed4-3.4.1-1, libidn2-0-2.0.5-1+deb10u1, liblz4-1-1.8.3-1, liblzma5-5.2.4-1, libmnl0-1.0.4-2, libmount1-2.33.1-0.1, libncursesw6-6.1+20181013-2+deb10u2, libnettle6-3.4.1-1, libp11-kit0-0.23.15-2, libpam-modules-1.3.1-5, libpam-modules-bin-1.3.1-5, libpam-runtime-1.3.1-5, libpam0g-1.3.1-5, libpcre3-2:8.39-12, libseccomp2-2.3.3-4, libselinux1-2.8-1+b1, libsemanage-common-2.8-2, libsemanage1-2.8-2, libsepol1-2.8-1, libsmartcols1-2.33.1-0.1, libss2-1.44.5-1+deb10u3, libstdc++6-8.3.0-6, libsystemd0-241-7~deb10u3, libtasn1-6-4.13-3, libtinfo6-6.1+20181013-2+deb10u2, libudev1-241-7~deb10u3, libunistring2-0.9.10-1, libuuid1-2.33.1-0.1, libxtables12-1.8.2-4, libzstd1-1.3.8+dfsg-3, login-1:4.5-1.1, mawk-1.3.3-17+b3, mount-2.33.1-0.1, ncurses-base-6.1+20181013-2+deb10u2, ncurses-bin-6.1+20181013-2+deb10u2, passwd-1:4.5-1.1, perl-base-5.28.1-6, sed-4.7-1, sysvinit-utils-2.93-8, tar-1.30+dfsg-6, tzdata-2019c-0+deb10u1, util-linux-2.33.1-0.1, zlib1g-1:1.2.11.dfsg-1
	Licenses found in Layer:  None
------------------------------------------------

###########################################
# Summary of licenses found in Container: #
###########################################
None

2020-03-10 17:14:57,178 - DEBUG - rootfs - Running command: sudo rm -rf /home/vagrant/.tern/temp/f708b10a71ac7573a7ab8a9ef412f43db00db1403a54935877a3f4d0463cb23b/contents
2020-03-10 17:14:57,350 - DEBUG - run - Teardown...
2020-03-10 17:14:58,825 - DEBUG - rootfs - Running command: sudo rm -rf /home/vagrant/.tern/temp/mergedir
2020-03-10 17:14:58,845 - DEBUG - rootfs - Running command: sudo rm -rf /home/vagrant/.tern/temp/workdir
2020-03-10 17:14:58,878 - DEBUG - __main__ - Report completed.
2020-03-10 17:14:58,879 - DEBUG - __main__ - Finished

We did wonder why cat is the only one that is not found whereas the other binaries, cut and awk seem to work fine.

We had another contributor able to reproduce this issue in a CentOS environment.

We had another contributor able to reproduce this issue in a CentOS environment.

Fixing his $PATH by running, export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" seemed to fix the issue for him.

As a more permanent solution, we likely need to refer to the binaries in the filesystem (i.e. use /bin/cat instead of cat to collect package information). This also means that we need to find the location of the binaries for all the listings in base.yml

@mukultaneja has a fix for this and he said he would submit a PR


Docker: Upgrade Nitro CLI

Upgrade Nitro CLI to 1.2.0.
This could help fix #507

That looks uncontroversial! Of course the CI won't test it so it would be nice to test it manually before merging.

I can give it a try, I really need a newer container!


Add README.

Need to add a README to describe the purpose of this repo and its design.

please solve this issue asap


set side to bottom not respected in some cases

I have set side: 'bottom' but tooltipster pops up above the image because it doesn't have enough space at the bottom, however I still want it to render at the bottom of the image. Is there a way I can do that
you can see it here, I am pointing at the bycilist, and tooltip show above him
http://i.imgur.com/ajAuSoP.png?1

Hello, side: ['bottom'].

Thanks, that did it :)


Change block creation API

PR https://github.com/Shard-Labs/starknet-devnet/pull/374/files introduced /create_block_on_demand. Since we already had /create_block which is used for empty block creation, the naming may be misleading. We could do one of the following:
1. Have only one endpoint /create_block

it would create an empty block if no txs in the mempool

2. Rename the endpoints

E.g. /create_empty_block and /create_block

Leaning towards option 1. That single endpoint would then also be callable even when not running with --blocks-on-demand so that an empty block can be constructed.

TODO: check if some tests needs to be removed


Pretrained checkpoint (OFA-CN-Huge)

Thanks for the great work! When will the pretrained huge CN-checkpoint of OFA can be released？

Sorry I haven't trained that one yet.. Now we only have the base and large models. Any problems with them now?

The base and large models are great, I'm just curious about the missing of the huge model of CN version, but it doesn't hurt. Thanks for the excellent work 😁！


Ionic 2 Text Mask not working Properly

I have created the mask for US Zipcode format
zip: Array<string | RegExp>;
this.zip = [/\d/, /\d/, /\d/, /\d/, /\d/];

<ion-item>
<ion-label floating>Zip Code*</ion-label>
<ion-input type="text" [textMask]="{mask: zip}" formControlName="zipCode"></ion-input>
</ion-item>

but after enter the zipcode when i print the zipcode value it will return as one extra character will added
for eg:
if I type the zipcode 52642  after move to next input it will be added one new character

but the value will  be 52642_
I don't know why it comes like this and I am also try with phone number same type of character or extra one number will be attache

This is a duplicate of #294


Android Basics: Viewmodel and State in Compose

In the Architecting your Compose UI, Pass the data section has a code of :
import androidx.lifecycle.viewmodel.compose.viewModel

@Composable
fun GameScreen(
   gameViewModel: GameViewModel = viewModel()
) {
   // ...
}

it shows error:
Unresolved reference: compose
Unresolved reference: viewModel

I had this issue too, but have fixed it - after updating your build.gradle file (as we did earlier, to add the viewmodel dependency), you need to make sure you sync your project with Gradle files. There should be a "Sync Now" link that appears in build.gradle after you make changes to the Gradle files.

can you guide me to make changes in build.gradle file for this error. Previously did changes for adding viewmodel is perfectly synced. this error is not getting eliminated from that build.

I had this issue too, but have fixed it - after updating your build.gradle file (as we did earlier, to add the viewmodel dependency), you need to make sure you sync your project with Gradle files. There should be a "Sync Now" link that appears in build.gradle after you make changes to the Gradle files.


PsFake

Let's create PsFake for tests

@rultor release, tag is 0.8.7

@rultor release, tag is 0.8.7

@yegor256 OK, I will release it now. Please check the progress here

@rultor release, tag is 0.8.7

@yegor256 Done! FYI, the full log is here (took me 11min)


Never automatically redirect from global search to testnet

Let's close this for now, since the whole scoping of search is under rethinking anyway. (We can just re-implement this on the finalized search result display code)


I have some ideas regarding AI. I can update the resource list for the community.

Is your feature request related to a problem? Please describe.
A Yes. I see that the AI resource list needs updating.

you can find or raise other issues, currently someone else is working on issue #44, once it is completed then you can update it

Okay


Added simple smoke test for CI

This addresses #5

rerun smoke

rerun smoke

#bingo :-)

@jtaleric for now we can use uperf because it seems to be the most stable workload we've.

@aakarshg ack.


php process 100% cpu time

When this module is turned on on my mac php process takes up to 100% CPU time. I know this explanation is not very detailed and this may be happening on my machine but please help me figure it out. If you need more info about my system I can provide that.
Thank you

The LS will index your project at startup, which can take a lot of CPU. If you are using VS Code, you can see the progress in the output panel. Please check if the CPU usage persists after the indexing is finished.

Appreciate your response. Yeah I checked the output panel and it spits out lots of files being indexed. I have a big project so it will take some time. Will check the CPU load after it is finished.
And again thank you for your work, this is amazing!!

Atm every time VS Code is opened. Caching will be added in the future, but cache invalidation is one of the hardest challenges in computer science 😉

haha yeah, other one is naming things :)
ps is there a way to exclude a folder from being indexed then? I have a vendor folder with zillion of files which takes forever.

Check also if you have Xdebug enabled in your PHP stack. Disabling Xdebug improves the speed 5-10 times.

I do have xdebug enabled and I use it extensively. I tried to disable it but it did not affect the php process load.

excluding files: #159
Since you are familiar with XDebug, why not enable the profiler and find out what takes so much CPU? 🙂

CPU load is high when I don't even run php scripts and/or XDebug.
Pretty sure it is caused by files indexing. Eagerly awaiting on #159 to be done.

Yes, but it could help us optimize the CPU usage if you enabled XDebug and the profiler and get a small profile of the language server

The indexing output is weird. It spits out 'Parsing file N/6310 path/to/file' but when it get to the last file it starts over. So it never ends.

Ok I will try to play with profiler, never used it before.

@deli6z Maybe it is crashing and restarting? Look at Help > Toggle developer tools

it crushes on /zend/Validate/Hostname/Com.php file I think. I after that it restarts and starts over
[Info  - 9:46:05 AM] Connection to server got closed. Server will restart.
this is the error
[Extension Host] PHP Fatal error:  Maximum function nesting level of '256' reached, aborting! in
{"method":"window/logMessage","params":{"type":4,"message":"Parsing file 5691/6310: file:/path/zend/Validate/Hostname/Com.php"},"jsonrpc":"2.0"}
path/extensions/felixfbecker.php-intellisense-0.0.12/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php on line 97

That is an XDebug error. Either disable XDebug or increase max_nesting_level. Does it crash when you disable XDebug too?

By disable XDebug you mean just disable the VS code extension? I did it and it still crashes.

In php.ini you are loading XDebug with zend_extension = .... Comment that line out.

Yeah it was XDebug. Why is it even running in this case?
Now, I need to have XDebug enabled so I need to change max_nesting_level? This looks hackish.
The file itself is causing the error. I should probably look into how I can avoid indexing it.

XDebug is always "running". Increasing max_nesting_level is not hackish - it is just the recursion protection that prevents you from infinite loops. In this case, it is a false positive, because it is not actually an infinite loop, just a very nested call, and this can very easily happen during parsing. Set it to something like 3000 and you will be fine and it will still abort in infinite loops. There is no way to exclude a file atm.

hey, I'm seeing this as well - not running xdebug, and my output window says parsing files ended hours ago - but the language server is still using 100% cpu. is there any kind of 'debug mode' that might help you work out what i'm seeing here?
i'm on ubuntu 16.04.

Is there a public project you can reproduce this with? Are the features working?

Hmm, I'll try a few big ones out. Some features are working - phpdocs for classes is one that works every time, but if I put /** @var ClassName ... */ notation above a variable or property autocomplete doesn't seem to work.  I tried killing the process and it seems to have restarted and is behaving for now. I'll try to reproduce sometime soon.

I'm experiencing the same issue as @maaarghk. The language server is running at 100%. No output and features are working. This isn't a public project though.

I am using @theia/php on an amazon ec2 linux instance. I am building a docker container also with theia in it. On the yarn step 4 there is a php process that goes to 100% cpu usage and stays there, Yarn step 4 takes forever.

never mind. It's not you at all. It is composer building the extension @theia/php extension and taking forever.


Exercise opendp-logger

Eventually, fix #108
Blocked on new release of opendp-logger.

After talking with Mike, it was good to surface that opendp-logger hasn't kept up with features in opendp, but we shouldn't plan to use it in the POC. Closing without merging.


feat: dom-crawler

Benchmarks (100 crawlee.dev URLs):

HttpCrawler: 1.5s
CheerioCrawler: 4s
LinkeDOMCrawler: 8s
DOMCrawler (jsdom; aka this PR): 10s

Why not happy-dom: no idea if it's possible JS evaluation or make fetch use a proxy

While the benchmark is cool, the purpose of having a JSDom crawler was to add another very popular parser that a lot of people already know. When I compare stars and downloads, JSDom is a clear winner there. Not sure if the API is exactly the same as JSDom. If it is, thanks to being DOM, then we could probably just squeeze the JSDom keyword into the guides and just call it DOMCrawler or something like that. If they're not the same, I'd prefer to have JSDom.

Yes, we want (also) jsdom, even if it would be slow, we want to have it as an option because people are familiar with it.

Why not JSDOM: https://github.com/jsdom/jsdom/issues/2005 IOW it's very slow

What about using one of those forks that supports it?

edit: or even this simple hack mentioned in comments there could be enough for most use cases

But it doesn't disable the CSS engine. There are still style attributes and so on. I'd guess that parsing the <style> tags is the smallest hit of the entire CSS engine.

Actually JSDOM is not that slow... It took 10 seconds to crawl 100 pages.

But you could wipe the <link> tags the same way, or no?

But you could wipe the  tags the same way, or no?

Yeah. But even without any CSS sources, there is still default CSS to process.

I'll convert this PR to JSDOM. The reason I chose LinkeDOM is because it's featured by Deno https://deno.land/manual/jsx_dom/linkedom

I wouldn't mind having both if it proves to be reasonably faster, but as long as using linkedom is something easily achievable with the HttpCrawler, we could just document how to do it instead of maintaining other crawler.

Actually, this is a bit said, I dont want to tell people to use skipLibCheck, we spent a lot of time making TS work without it.

no idea why

Last add one e2e test before we merge this, maybe a TS one to see the build works fine without errors. Just a copy of the cheerio-default-ts with JSDom.


changed width of instrument popup bottom scroll to auto to prevent gap

@FBRTMaka @DanielJMaher @birdage
changed the width to auto to remove the gap.

Also, I think we should ether add or remove some styling to the scroll bars so they match, and maybe add a sticky-header to the middle scrollable area so that the header doesn't scroll away when you scroll down the list.

@dlangston wanna fix the style of the scroll bars in this pull request pls

@birdage sure

@dlangston status?

@birdage  Working on it now. Matt is having me add some other features to the popup.

@dlangston Let me know when it is good.

@dlangston thanks!

@FBRTMaka

@birdage Are we G2G here?

@DanielJMaher , @dlangston closing this in lieu of PR in branch


Use more environment variables for OS detection

I replaced a ton of preprocessor OS detections with more robust ones. However, I didn't replace all of them, especially where it looked like the author was intentionally not using all possible environment variable names (that they knew of) to detect a certain OS.
As a warning, I've only tested this in a Windows Cygwin environment (by compiling the Swadge repo) so other environments and OSes still need to be tested.

We won't be solving this this way upstream, and instead if we move in that direction, it will be more along the lines of rawdraw defining the platform.


Completed Task  612 : Add the New Type of Breadcrumb

Description

Added the two different types of breadcrumb round and square background.

Screenshots:

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

Changes Reviewed and PR Approved


robotframework-remoterunner not working !

running a simple test remotely on an agent seems to be working
rfremoterun <IP_ADDRESS> simple_suite.robot
Connecting to: http://<IP_ADDRESS>:1471

Robot execution response:
==============================================================================
Root
==============================================================================
Root.Simple Suite
==============================================================================
Simple Test Case 1                                                    | PASS |
------------------------------------------------------------------------------
Simple Test Case 2                                                    | PASS |
------------------------------------------------------------------------------
Simple Test Case 3                                                    | PASS |
------------------------------------------------------------------------------
Root.Simple Suite                                                     | PASS |
3 tests, 3 passed, 0 failed
==============================================================================
Root                                                                  | PASS |
3 tests, 3 passed, 0 failed
==============================================================================
Output:  /tmp/tmpxvhwx81v/output.xml
Log:     /tmp/tmpxvhwx81v/log.html
Report:  /tmp/tmpxvhwx81v/report.html

Local Output:  /home/zaki/Projects/Playground/robot/remote_output.xml
Local Log:     /home/zaki/Projects/Playground/robot/remote_log.html
Local Report:  /home/zaki/Projects/Playground/robot/remote_report.html

But a son as a Library is involved this does absolutely not work!!!
rfremoterun <IP_ADDRESS> scp.robot
Traceback (most recent call last):
  File "/usr/local/bin/rfremoterun", line 8, in <module>
    sys.exit(run_executor())
  File "/usr/local/lib/python3.8/dist-packages/rfremoterunner/executor.py", line 25, in run_executor
    result = rfs.execute_run(arg_parser.suites, arg_parser.extension, arg_parser.suite, arg_parser.robot_run_args)
  File "/usr/local/lib/python3.8/dist-packages/rfremoterunner/rf_client.py", line 63, in execute_run
    self._package_suite_hierarchy(suite)
  File "/usr/local/lib/python3.8/dist-packages/rfremoterunner/rf_client.py", line 109, in _package_suite_hierarchy
    self._suites[suite_filename] = self._process_test_suite(suite)
  File "/usr/local/lib/python3.8/dist-packages/rfremoterunner/rf_client.py", line 134, in _process_test_suite
    updated_file = self._process_robot_file(suite)
  File "/usr/local/lib/python3.8/dist-packages/rfremoterunner/rf_client.py", line 191, in _process_robot_file
    self._dependencies[filename] = read_file_from_disk(full_path)
  File "/usr/local/lib/python3.8/dist-packages/rfremoterunner/utils.py", line 30, in read_file_from_disk
    with open(path, 'r', encoding=encoding) as file_handle:
IsADirectoryError: [Errno 21] Is a directory: '/usr/local/lib/python3.8/dist-packages/SCPLibrary

I did install all the robot framework libraries used on the host on the agent

On host:
pip3 list | grep robot
robotframework                  5.0.1
robotframework-fritzhomelibrary 1.3.0
robotframework-remoterunner     2.0.0
robotframework-scplibrary       1.2.0
robotframework-seriallibrary    0.4.3
robotframework-sshlibrary       3.8.0

On Agent:
root@raspberrypi:~# pip3 list | grep robot
robotframework                  5.0.1
robotframework-fritzhomelibrary 1.3.0
robotframework-remoterunner     2.0.0
robotframework-scplibrary       1.2.0
robotframework-seriallibrary    0.4.3
robotframework-sshlibrary       3.8.0

it looks like the problem is located at
https://github.com/chrisBrookes93/robotframework-remoterunner/blame/main/src/rfremoterunner/rf_client.py#L191
it expect that the Library is a file which is NOT in case of using a robotframework library it's a folder.
would be possible to add libraries from robotframwork ? without that I think this extension is seriously limited !


Add normalize.css as an option

In addition to the option of Eric Meyer's CSS reset, it would be nice if it would be as easy to include normalize.css: http://necolas.github.io/normalize.css/

done in #289


Produce exception backtrace for formatters without using Cucumber::Formatter::LegacyApi

The exception backtrace in the output from formatters is structured as (example from junit_formatter.feature):
 (RuntimeError)
./features/step_definitions/steps.rb:4:in `/^this step fails$/'
features/scenario_outline.feature:9:in `Given this step fails'
features/scenario_outline.feature:4:in `Given this step <type>'

To produce this backtrace code in Cucumber::Formatter::LegacyApi is used (this code in lib/cucumber/formatter/legacy_api/adapter.rb).
This functionality should either be moved to a helper module in Cucumber::Formatter or to Cucumber-Ruby-Core. For the new formatter api to be easy to use, it should be possible to get from Cucumber::Core::Test::Result to the exception backtrace used the formatter output without using code in Cucumber::Formatter::LegacyApi. Doing so right now will instead produce the following exception backtrace:
 (RuntimeError)
./features/step_definitions/steps.rb:4:in `/^this step fails$/'

Agreed @brasmusson. For 3.0, I'd like to get rid of all the legacy formatters, and we need to gradually recycle these kinds of useful fragments out of the legacy adapter into places we can re-use them from newer formatters.


Removed ios support

Until ios support is added we can remove support for ios. So at least on Android it works and on ios it builds.

Thanks


[Doc bug][Graph]

Docs Build status updates of commit 2886eb6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/graph-api/proactive-bots-and-messages/graph-proactive-bots-and-messages.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Remove amount labels for Circle-level donations

What's this PR do?
Removes the dollar amount after a donation's "level" description if it's a Circle-qualifying amount (for monthly and yearly donations).
Also updates what amounts the level names correspond to, per membership.
Also fixes a broken test.
Why are we doing this? How does it help us?
It's a request from Terry and Rebecca related to the support-page revamp. Users can donate Circle-level amounts without being fixed on a three-year schedule (unless they cancel, it's just perpetuity). Therefore, it was misleading to specify a specific pledge amount.
How should this be manually tested?

/memberform?installmentPeriod=yearly&amount=5000 and verify there is nothing after "Chairman's Circle."
http://local.texastribune.org/memberform?installmentPeriod=monthly&amount=500 and verify there is nothing after "Chairman's Circle."

Now, let's test that donation amounts correspond to the proper levels. Here are the levels:

Student - $10 yearly
Informed - $3-$8 monthly; $35 - $99 yearly
Engaged - $9-$41 monthly; $100-$499 yearly
Involved - $42-$83 monthly; $500-$999 yearly

Visit http://local.texastribune.org/memberform?installmentPeriod=FREQ&amount=AMT with FREQ set to both "monthly" and "yearly" and with various values for AMT. Verify the page shows the proper level name.
Have automated tests been added?
No. But it looks like there are broken tests from previous code changes. I put in a ticket to fix those.
Has this been tested on mobile?
NA
Are there performance implications?
NA
What are the relevant tickets?
Off-sprint
How should this change be communicated to end users?
NA
Next steps?
NA
Smells?
NA
TODOs:
NA
Your TODO here
Has the relevant documentation/wiki been updated?
NA
Technical debt note
NA

LGTM.


feat: add ruby support

Noticed some issues with trying to comment out a vanilla Ruby file:

huh it's really surprising to me that native commentstring is broken for ruby

Just for the peace of my mind, could you tell me value of :set commentstring?

My thoughts too! It seems to have happened just recently
Anyway I get commentstring=/*%s*/


Creating a new profile showed me someone else's profile

After I created a new Learn profile for myself, the website took me to the profile for an undefined user, which had a different name, experience level, and completed certifications from what I was expecting.
To Reproduce
Steps to reproduce the behavior:

Login to Microsoft with a user who has not previously used Microsoft Learn
Create a new profile for them
Upon completion, user gets redirected to undefined profile page

Expected behavior
I should be taken to my profile page, not some undefined user's profile.
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome
Version 74.0.3729.157 (Official Build) (64-bit)

Same behaviour here when I logged in. It puts the user id of "undefined" in the url slug, where it should be your actual user id.

@jialge and @Sampy please look at this ASAP. Thanks!


Update api comments so they render nicely (r1.0)

Also switch instances of Tigera Secure to Enterprise

Pick #426


Unable to create ObjectId before insertion

@hectorcorrea I am used to the following code:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect(myurl, function (err, db) {
  const groupId = MongoClient.ObjectID;
  db.colllection('groups').insert({
    {
       _id: groupId,
       name: 'my test'
    }
  });
});

How can I create an ObjectId before hand using mongoConnect?

I found bson-objectid which enables you to create an ObjectId() beforehand.

@leopoldjoy I am glad you figure it out!


Scale up/out RethinkDb

Since day 1, we have been seeing warnings coming out of RethinkDb about it using swap space:
rbac-rethink | warn: Some RethinkDB data on this server has been placed into swap memory. This may impact performance.
We haven't put much load on it yet.
Research and implement the best means of scaling it to handle the expected data load (more memory? More nodes?)
Related to story #729 perhaps?

revisit this if/when we start to see problems with ReThink


Swift 6.0 on Windows fails to run -- two DLL-related errors

Is it reproducible with SwiftPM command-line tools: swift build, swift test, swift package etc?

[X] Confirmed reproduction steps with SwiftPM CLI.

Description
None of the available Windows development snapshots from swift.org run on the latest build of Windows 11 Pro; swift and swiftc crash immediately with 2 message-box errors, one after the other:

swift.exe - Entry Point Not Found
The procedure entry point swift_willThrowTypedImpl could not be located in the dynamic link library C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\bin\TSCBasic.dll.

swift.exe - Entry Point Not Found
The procedure entry point $s8Dispatch0A5QueueC5async5group3qos5flags7executeyAA0A5GroupCSg_AA0A3QoSVAA0A13WorkItemFlagsVyyYvXBtF could not be located in the dynamic link library C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\bin\TSCUtility.dll.

Note: It's possible I might have typed in that mangled name wrong, since Windows didn't let me copy it out of the error dialog.
Swift 5.10 and earlier run fine; by using the --toolchain flag with a Swift 5.10 executable, an additional error appears on the console after the two GUI errors:
error: InternalError(description: "Internal error. Please file a bug at https://github.com/apple/swift-package-manager/issues with this info. Failed to parse target info (malformed(json: \"\", underlyingError: Error Domain=NSCocoaErrorDomain Code=3840 \"The data is not in the correct format.\")).\nRaw compiler output: ")

Most other swift commands crash with variants of the first error listed above -- the procedure name (swift_willThrowTypedImpl) remains the same, but the offending DLL differs. Here's a list of what each command gives:

swift-build, swift-package, swift-run, swift-test -- ArgumentParser.dll, Commands.dll, CoreCommands.dll, Workspace.dll (sometimes PackageGraph.dll or Build.dll instead)
swift-demangle -- works
swift-format -- ArgumentParser.dll
swift-frontend -- works?! (see below)
swift-help -- ArgumentParser.dll, TSCBasic.dll

Oddities
Strangely, if I run swift-frontend instead of swift or swiftc, the REPL starts (and appears to be fully functional) after something relating to swift-healthcheck. Here's the output of that:
==== LLDB swift-healthcheck log. ===
This file contains the configuration of LLDB's embedded Swift compiler to help diagnosing module import and search path issues. The swift-healthcheck command is meant to be run *after* an error has occurred.
lldb version 17.0.6
Swift version 6.0-dev (LLVM e878388283d7b73, Swift eb92e6e50035d21)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration(SwiftASTContext*)0000029C037C48F0:
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Swift/C++ interop                : off
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Swift/Objective-C interop        : off
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Architecture                     : x86_64-unknown-windows-msvc
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   SDK path                         : C:\Users\0zinc\AppData\Local\Programs\Swift\Platforms\6.0.0\Windows.platform\Developer\SDKs\Windows.sdk
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Runtime resource path            : C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\lib\swift
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Runtime library paths            : (1 items)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\lib\swift\windows
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Runtime library import paths     : (4 items)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\lib\swift\windows
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\lib\swift\windows\x86_64
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     C:\Users\0zinc\AppData\Local\Programs\Swift\Platforms\6.0.0\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\windows
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     C:\Users\0zinc\AppData\Local\Programs\Swift\Platforms\6.0.0\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\windows\x86_64
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Framework search paths           : (0 items)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Import search paths              : (0 items)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Extra clang arguments            : (2 items)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     -D_MT
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     -D_DLL
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --   Plugin search options            : (1 items)
SwiftASTContextForExpressions::lldb_private::SwiftASTContext::LogConfiguration() --     -plugin-path C:\Users\0zinc\AppData\Local\Programs\Swift\Toolchains\6.0.0+Asserts\usr\bin
Welcome to Swift version 6.0-dev (LLVM e878388283d7b73, Swift eb92e6e50035d21).
Type :help for assistance.
1>

Running import Foundation causes this message to appear again (though Foundation is successfully imported and can be used). The print function doesn't seem to do anything, and readLine immediately returns nil, but other than that, the REPL works fine here.
Additional Info
Swift 6.0 was installed through the GUI installer provided on swift.org. Swift 5.10 was installed via winget.
Expected behavior
For swift, swiftc, etc. to, well, run.
Actual behavior
swift, swiftc, etc. did not run (though, strangely enough, swift-frontend did).
Steps to reproduce
No response
Swift Package Manager version/commit hash
eb92e6e50035d21 (I think)
Swift & OS version (output of swift --version ; uname -a)
(unable to run swift.exe; all available main and release/6.0 development branches on swift.org cause this issue)
Output of ver: Microsoft Windows [Version 10.0.22631.3672]

To this day Swift 6.0 and main snapshots are broken.
https://forums.swift.org/t/main-6-0-snapshots-broken-on-windows/73850/8

As I mentioned on the forum, I'm using the Aug 7 x86_64 build to build SwiftPM itself so I can investigate why we are exporting too many symbols when building swift-build and friends. So the initial problem reported here appears to be solved.
Please raise additional issues you see on Windows. I'm currently working on improving swiftpm there.

Closing this one.


Clean up embedded and external vulnerability metadata

These should be combined, with a flag to indicate whether it is embedded. See https://github.com/briandfoy/cpan-security-advisory/issues/37#issuecomment-1172502973

We should have something like this once we have some time to get everything else under control. Since we don't do anything in cpan-audit with these data, this can wait a bit.
Here's the structure I suggested:
external_vunerability:
   name: ...
   affected_versions: ...
   fixed_versions: ...
   embedded: {true|false}

But, I think I also suggested tracking these separately from the Perl module advisories. We'd then come up with a way to include those:
external_vunerability: externals/libfoo-001.yml

Right now we are collecting and organizing data even though we don't have the code there. If we have the data, in any form, we can convert it latter if we find a better way to use it. Eventually this is probably going to have to be relational.

There's a new thing that I'm doing, which I'll have to document later when it settles down to a point where I like it.
Each external library gets its own file under external_reports/, such as external_reports/jquery.yml. That has all the info for all of the CVEs and advisories for jquery. This way, we aren't repeating the same thing over and over again in several files under cpansa/.
Then we can simply list the affected perl distros, their versions, and which version of the external library they distribute. This is a lot easier than checking over lots of separate files. Once I get this part done, I'll write some stuff to turn this into stuff the database module can use:
---
name: jquery
perl_distributions:
  - name: Sidef
    affected:
      - perl_module_versions:
        distributed_library_version: '2.1.3'
  - name: Stardust
    affected:
      - perl_module_versions:
        distributed_library_version: '2.1.3'

I think omit perl distributions from the external reports, and instead  have a line for each perl distribution that mentions refers to the external vulnerability (vulnerability id, and library version).
The reason is that you will need to refer to affected Perl library versions (e.g. version 0.50 has external lib 1.2.3, but versions 0.51 through 0.72 have external lib 1.2.4 etc.)

Do you mean to move the perl module versions to their file under cpansa/? What would that structure look like in the way that you are thinking about it?

There would be similar to what it has now, but omit the description and most references, and add a vulnerability_id to embedded vulnerabilities object. I'd recommend keeping the CVE if there is one.
The CPANSA records are security advisories for distributions. We still want to note that there are advisories with distributions, but not duplicate the information for external advisories.

My current thinking is that we only need a list of which Perl distros have an external library. We can then go through the vulnerabilities for that external library and decide which vulnerabilities apply to which Perl distro versions. We can't do this in the CPANSA/ files because those records would be very different from what the rest of the code expects.
It doesn't really matter to the database module which files have which reports. We can use the files I've made now to generate the data to put in the right places in the database module. We can transform that data into what we need at the higher layer.
There are several problems with spreading out the data:

there are lots of repeated, stale, and missing information. For example, from the files you submitted, not all files had the same vulnerabilities listed for a library. Different reports had different, overlapping sets of libraries. Having to update every vulnerable dist means changing many, many files for one logical addition. That's a lot of work.
To check for a particular vulnerability in an external library, you'd have to scan potentially hundreds of YAML files and most of those won't matter. This is expensive. This is a basic problem on NoSQL "joins". For example, if there's a new vulnerability, I'd potentially want to update anything that uses that external library.
The YAML entries for external vulnerabilities in the files under CPANSA would be very different from the other records, which means that the database model reaches into the application layer and causes a lot of problems. Even now, there's no code to handle any of that.

Once I clean up the data a bit, I can write the stuff to inject the external vulnerabilities into the database module. I just need some time to catch up and review all the stuff you've been tracking down :)

I know have util/invert-third-party.pl which takes the stuff in external_reports and makes the cpansa/ style reports.
The issue now is that many of the external reports are missing version data both for the affected Perl modules and the versions they distribute. Not a huge deal, but it will take some time.

This has been completed in 4be32fb4c32a1ca1c81be5654af8fe1833761ad9, even though I tagged that as the wrong number (48 instead of 46).


CAMEL-14303: Refactor Rest Component Common code into helper.

Given the duplication on the consumer creation for the REST DSL components I wanted to propose some refactoring to make it more maintainable with the matchOnUriPrefix change.  Can apply to the other components, add tests and appropriate api documentation but I wanted to solicit feedback on the refactor before adding any polish.

LGTM


Update localizations

Update several Info.plist keys
Add descriptions to Info.plist localizable keys
Replace a localized key

I still have to import the localisations before this is merged.

What about localizations for the WebKit browser? Are they included? I am not sure whether I have introduced any new keys

It is based on master, I think there are just three new strings.


Added local date option for the package

@sindresorhus Changes made as per suggestions. Please review. Thanks.

I appreciate the pull request, but it's just too far from what I'd like to see. I've implemented the change myself and done a new release. You can now bump the dependendency in your time-grunt PR ;)

Nice implementation, using time-zone. However, I can't help but notice, it uses getTimezoneOffset. As far as I know, this method needs some adjustment to make it work correctly for countries which use DST.
Personally, it doesn't affect me because we don't use daylight time savings here.

@tHBp Seems to work fine with DST. I tried it with different dates and it correctly changed the timezone between +2 and +1 (I'm in Norway).

Using it as well in tz-format and never experienced issues with that method.

@SamVerschueren Well it is all good then :)


Bump Microsoft.NET.Test.Sdk from 17.8.0 to 17.9.0

Bumps Microsoft.NET.Test.Sdk from 17.8.0 to 17.9.0.

Release notes
Changelog
Commits

updated-dependencies:

dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor ...

microsoft provided updates


fix(all): Use angle bracket import consistently when importing Firebase.h

Description
Use angle bracket import consistently when importing Firebase.h
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process. Updating the pubspec.yaml and changelogs is not required.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (melos run analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change.
[x] No, this is not a breaking change.

@chingjun Could you remove admob and ml_vision changes as they're both deprecated at this point. Thanks.

Thanks for looking at this PR! I've just rebased to the latest master and removed both admob and m1_vision.


if I launch GrugFar a blank page is opened and only once I enter insert mode it shows ui

Crivotz
•
4m ago
set expandtab
is it normal that if I launch GrugFar a blank page is opened and only once I switch to Insert mode and press a character is the real screen shown?

ok I still can't see it, but since it was quick, I made a change to render immediately as well in addition to on text change event, so hopefully that should fix it.

Solved, thanks

perfect, thanks for confirming! I'll close the ticket!


Merge in advancements from KayZGames and make null safe

A whole bunch of commits from KayZGames.
I also updated the package to be null safe and made the test run with package:test.

Thank you!

If you would like, we can add your name to the contributors in the readme. What do you think?

🤷   @denniskaselow and @Fox32 are the big contributors here.

I'm fine either way.


fix: fixed incorrect example text in combobox component

Dear @shadcn
I hope this message finds you well. I would like to report a potential bug that I've encountered in the ComboBox component.
Bug Description:
In the example provided within the ComboBox component, there seems to be a text error. The displayed text reads "Select Framework," but I believe it should actually say "Select Language." This inconsistency appears to be a result of a copy-paste error during the creation of the example.

@dan5py Thank you for pointing that out, I have updated default style too.


Is dynamixel motors handling still necessary?

Currently there is a module dynamixel_motor.py and a stream defined to handle command with Dynamixel motors.
It was originally implemented to interact with the Dynamixel motors of the gripper and antennas. Actually, the api gripper implementation only defines more high level orders like open / close meaning we don't interact in the sdk client with the gripper motor.
If the same choice is made for the antennas, we won't need to dynamixel module anymore.

remove in #292 during code cleanup. We'll add them back depending on the requirements for the new antennas


Allow passing arguments to docker

I am having problems creating a service behind the firewall at work.
Trying to run this command: fargate service create <name> --region <region> --lb <loadbalancer> --port 443, which in turn runs  docker build --rm=false --tag <tag> ., I get to RUN apk update in the docker file, which then fails with ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/main: network error (check Internet connection and firewall).
This is because of the proxy that our company network sits behind.
For some reason, docker does not pick up proxy env vars when running docker build, so even though $HTTP_PROXY and friends are all set up, this fails.
A workaround is to add --build-arg HTTP_PROXY=$http_proxy --build-arg HTTPS_PROXY=$https_proxy to the docker command, so if I run docker build --rm=false --tag <tag> . --build-arg HTTP_PROXY=$http_proxy --build-arg HTTPS_PROXY=$https_proxy, everything works fine. This also currently works as a workaround, as the files will be cached, and subsequent builds with fargate will run fine as docker does not try do actually download anything.
See https://github.com/moby/moby/issues/24697 for discussion about this behaviour in Docker.
Would it be possible to add an argument to the fargate cli that can be used to pass arguments to docker?

Somewhat relevant
Dockerfile
FROM ...
ENV MY_ENV

I just recently realized that MY_ENV=foo fargate service deploy app doesn't pass the environment variable to the Docker.
Any thoughts?


Cop idea: Gemspec/RubyGemsVersionAssignment and Gemspec/SpecificationVersionAssignment

Is your feature request related to a problem? Please describe.
I've found some (older) gems using rubygems_version= or specification_version= in a gemspec file.
However, RubyGems source says not to use them.

DO NOT set this, it is set automatically when the gem is packaged.

https://github.com/rubygems/rubygems/blob/cc6f96aa0c1c99d94363d12884001a2de28da033/lib/rubygems/specification.rb#L530-L534
https://github.com/rubygems/rubygems/blob/cc6f96aa0c1c99d94363d12884001a2de28da033/lib/rubygems/specification.rb#L744-L748
I thought it would be a good idea to handle it the same way as Gemspec/DateAssignment, which was added in #9496.
Describe the solution you'd like
I suggest adding cops like Gemspec/RubyGemsVersionAssignment and Gemspec/SpecificationVersionAssignment that warn the use of rubygems_version= or specification_version= in a gemspec file.
Describe alternatives you've considered
Or merge them with Gemspec/DateAssignment and rename it?
Additional context
For example, Jeweler and the gems created by it (e.g. OS) use these fields.
https://github.com/technicalpickles/jeweler/blob/2ab86309fc2494ba2a4e9c86c514742cd4f681c2/jeweler.gemspec#L193
https://github.com/rdp/os/blob/1245b3a1821c5cf0ff5167069f70b70658752491/os.gemspec#L42

I found a case where rubygems_version was used by mistake when required_rubygems_version should have been used.

cucumber/cucumber-rails/pull/533


^C on flutter run shows dialog on device

If I do flutter run then hit Control-C, I get a dialog on the device saying the app has stopped, as if it had crashed.

At shutdown time Flutter processes are segfaulting in Dart's Process_Exit when it tries to invoke the exit hook.  Process_Exit is casting Dart_CurrentIsolateData to a dart::bin::IsolateData*, which doesn't match the structure used by Flutter.
@rmacnak-google @a-siva

This should be fixed in Dart now


Fetch error message discarded

I've been trying to receive error message without success.
I believe it's because of those lines in rest.js:
    return this.client.fetch(path, requestOptions).then(response => {
      if (response.status >= 200 && response.status < 400) {
        return response.json().catch(error => null);
      }

      throw response;
    });

specifically: response.json().catch(error => null);
the discarded error contains the actual data passed with the error.
but instead the response is thrown: throw response;.
when trying to read from response again "Already read" error is thrown.
In many cases the status error code is not sufficient and the custom error message contains vital information.
Would you consider attaching error to the response before throwing, or giving some API for retrieving the error.
Thanks in advance

hmm. don.t quite get it.
that line only catches errors in the conversion to json. in that case it throws the whole response and you can check why that part failed.
if the server returns an error in the status, as well the whole response is thrown.
that leaves the case, that there is an error in the server, but the server returns status >=200 <400.  in that case, the error message, usually is returned as json and you can check that. i don.t think that there are other server settings.
so, i don.t understand which scenario you are refering to.

Thank you for your response.
You are right about the line, my bad.
I'm still unable to read error message.
The scenario is server returning error status of > 400. in which case the response is thrown. I catch it in my then().catch() statement.
How can I obtain the json with all the fields the error contains?
I can see Network debug that message property of the error is sent by the server along side the status. The Response object clearly doesn't contain it.
If I try to call json() on the response I catch, "Already read" type error is thrown.

so, .catch(err=>console.err(err) ) doesn.t contain enough info?

No, it contains the standard Response object. Something like:
//response: Response
{
  body: (...)
  bodyUsed: false
  headers: Headers
  ok: false
  status: 401
  statusText: "Unauthorized"
  type: "cors"
  url: "http://<IP_ADDRESS>:8000/api/auth/login"
}
// response.body: ReadableByteStream

While the error response is json object:
{
  "statusCode": 401,
  "error": "Unauthorized",
  "message": "Password mismatch"    // This is the part I'm having trouble to obtain
}

yea, 401 is per default thrown already in aurelia-fetch-client. so try
.catch(response=>response.json())
.then(err=>{console.err(err)} )

Does the trick, thanks!
Now I understand why it didn't work for me earlier and I got the "Already read" type error. Needed to make sure it was > 400 Http error before the response.json() call.

@doktordirk
can we update the code so that underlying code throws the server response object instead of generic fetch api response? Otherwise, as an api consumer, you are force to do this everywhere:
.catch(error=>error.json())
.then(serverError=>{console.err(serverError)} )

you know you can still see the response in the browsers console network tab?

it doesn't solve the use case where you need to use information in server response to drive certain logic and/or error messages

@msalman86 Doesn't that call for an interceptor more than a library update? 401 simply is an error, that's usually treated as an error. Which usually, even is a generic error (no access, not found, server error); in which case you'd want to set up a generic catch to handle all of those. In exception cases, you can use catch to handle the response.
I might be wrong, and if so, I'm not sure I understand the question. Does this help?

Interceptor is a good backup option. However, it would be nice if the library gives the option to handle error payload that comes from the server.

@msalman86 I don't think we can do that. If you need the error, you can take it from the response. In some cases you do want the entire response object. We'd be breaking the implementation of other users. It is an idea to look at the way we handle those types of exceptions through a config I guess. We can offer the option to return the response body instead of the entire response object.
As to interceptors, they're part of the fetch client :) https://github.com/aurelia/fetch-client/blob/master/doc/article/en-US/http-services.md#configuration

@RWOverdijk Doesn't having client side developers referencing the underlying fetch client constitute a leaky abstraction?

@doktordirk Compared to @msalman86 I don't get back a response. The err variable in my catch-block is of type TypeError and therefor calling .json() fails, meaning that this

@norgie Honestly, I haven't used interceptors with api before, except with aurelia-authentication. It's not a secret that this library uses fetch client. Configuring the client with your own desires is a normal thing to do I'd say. There's no point in re-implementing interceptors if it's already possible to add them.
As to your error, I'm not sure what you're getting. What is the server returning and why? It might be time to document whatever is the issue here :)

@RWOverdijk Looks like "one man's leaky abstraction is another man's pattern" :-)
As for what is going on, I've already posted a question at SpoonX/Dev on Gitter, but to recap this is what Chrome reports

@RWOverdijk
I wonder if the whole problem boils down to a versioning problem. Looking at the package.json file for aurelia-api I notice the following:
"_id"<EMAIL_ADDRESS>and under dependencies I find:
"aurelia-fetch-client": "^1.0.0-rc.1.0.0",

@norgie Why are you on rc-8?
We're on 3.1.1

@RWOverdijk
Will update. Someday. ;-)

@RWOverdijk
Updated. Same result. All I get back is a type error.

@norgie I get it now.
The weird thing to me is that anyone wants the content on a 404. In any case, is this a problem with aurelia-api or with aurelia-fetch-client?

@norgie I'm just super confused. https://github.com/SpoonX/aurelia-api/blob/master/src/rest.js#L85 it throws the response.
Are you sure it's not just something you're causing yourself? If it's a TypeError, could you dump the full error?

@RWOverdijk
This is the call to aurelia-api with the erroneous url-fragment:
	getStationsForCustomer(customerId) {
		return this.endPoint.find("stationsfor/customer/s" + customerId);
	}

This is the code calling the above function:
	attached() {
		return this.stationDrawingsService
		           .getStationsForCustomer(this.selectedCustomer.id)
		           .then(res => this.stations = res.stations);
	}

This is the stack trace:
GET http://localhost:50028/api/stationsfor/customer/s160 404 (Not Found)
:9000/#/stasjonstegninger:1 Fetch API cannot load http://localhost:50028/api/stationsfor/customer/s160. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 404. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
vendor-bundle.js:1335 Unhandled rejection TypeError: Failed to fetch
    at applyInterceptors (http://localhost:9000/scripts/vendor-bundle.js:22847:16)
    at processResponse (http://localhost:9000/scripts/vendor-bundle.js:22830:12)
    at http://localhost:9000/scripts/vendor-bundle.js:22745:18
From previous event:
    at http://localhost:9000/scripts/vendor-bundle.js:22744:24
From previous event:
    at HttpClient.<anonymous> (http://localhost:9000/scripts/vendor-bundle.js:22732:64)
    at HttpClient.fetch (http://localhost:9000/scripts/vendor-bundle.js:22716:23)
    at Rest.request (http://localhost:9000/scripts/vendor-bundle.js:22911:26)
    at Rest.find (http://localhost:9000/scripts/vendor-bundle.js:22923:19)
    at StationDrawingsService.getStationsForCustomer (http://localhost:9000/scripts/app-bundle.js:1282:25)
    at StationDrawings.attached (http://localhost:9000/scripts/app-bundle.js:7937:39)
    at Controller.attached (http://localhost:9000/scripts/vendor-bundle.js:19780:24)
    at View.attached (http://localhost:9000/scripts/vendor-bundle.js:17867:25)
    at View._aureliaTemplating.View.attached (http://localhost:9000/scripts/vendor-bundle.js:66445:16)
    at ViewSlot.add (http://localhost:9000/scripts/vendor-bundle.js:18035:14)
    at http://localhost:9000/scripts/vendor-bundle.js:22121:29
From previous event:
    at http://localhost:9000/scripts/vendor-bundle.js:22119:30
From previous event:
    at after (http://localhost:9000/scripts/vendor-bundle.js:22004:56)
    at work (http://localhost:9000/scripts/vendor-bundle.js:22103:9)
    at http://localhost:9000/scripts/vendor-bundle.js:22133:18
From previous event:
    at RouterView.swap (http://localhost:9000/scripts/vendor-bundle.js:22131:87)
    at http://localhost:9000/scripts/vendor-bundle.js:14700:29
    at Array.forEach (native)
    at http://localhost:9000/scripts/vendor-bundle.js:14699:20
From previous event:
    at NavigationInstruction._commitChanges (http://localhost:9000/scripts/vendor-bundle.js:14698:33)
    at CommitChangesStep.run (http://localhost:9000/scripts/vendor-bundle.js:14547:36)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at iterate (http://localhost:9000/scripts/vendor-bundle.js:15601:14)
    at processActivatable (http://localhost:9000/scripts/vendor-bundle.js:15604:12)
    at ActivateNextStep.run (http://localhost:9000/scripts/vendor-bundle.js:15485:14)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at iterate (http://localhost:9000/scripts/vendor-bundle.js:15514:14)
    at processDeactivatable (http://localhost:9000/scripts/vendor-bundle.js:15517:12)
    at DeactivatePreviousStep.run (http://localhost:9000/scripts/vendor-bundle.js:15473:14)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at iterate (http://localhost:9000/scripts/vendor-bundle.js:15601:14)
    at processActivatable (http://localhost:9000/scripts/vendor-bundle.js:15604:12)
    at CanActivateNextStep.run (http://localhost:9000/scripts/vendor-bundle.js:15461:14)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at AuthenticateStep.run (http://localhost:9000/scripts/vendor-bundle.js:24295:14)
From previous event:
    at LoadRouteStep.run (http://localhost:9000/scripts/vendor-bundle.js:15748:68)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at iterate (http://localhost:9000/scripts/vendor-bundle.js:15514:14)
    at processDeactivatable (http://localhost:9000/scripts/vendor-bundle.js:15517:12)
    at CanDeactivatePreviousStep.run (http://localhost:9000/scripts/vendor-bundle.js:15449:14)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at http://localhost:9000/scripts/vendor-bundle.js:14952:16
From previous event:
    at BuildNavigationPlanStep.run (http://localhost:9000/scripts/vendor-bundle.js:14950:58)
    at next (http://localhost:9000/scripts/vendor-bundle.js:14516:20)
    at Pipeline.run (http://localhost:9000/scripts/vendor-bundle.js:14529:14)
    at http://localhost:9000/scripts/vendor-bundle.js:16077:25
From previous event:
    at AppRouter._dequeueInstruction (http://localhost:9000/scripts/vendor-bundle.js:16050:32)
    at http://localhost:9000/scripts/vendor-bundle.js:16041:17
From previous event:
    at AppRouter._queueInstruction (http://localhost:9000/scripts/vendor-bundle.js:16038:14)
    at http://localhost:9000/scripts/vendor-bundle.js:15972:23
From previous event:
    at AppRouter.loadUrl (http://localhost:9000/scripts/vendor-bundle.js:15971:53)
    at BrowserHistory._loadUrl (http://localhost:9000/scripts/vendor-bundle.js:11154:55)
    at BrowserHistory._checkUrl (http://localhost:9000/scripts/vendor-bundle.js:11147:14)
printWarning @ vendor-bundle.js:1335
formatAndLogError @ vendor-bundle.js:1051
fireRejectionEvent @ vendor-bundle.js:1076
Promise._notifyUnhandledRejection @ vendor-bundle.js:581
(anonymous) @ vendor-bundle.js:132

Right, but that is cors. That error ^ is a cors error. Perhaps your 404 response isn't configured properly?

@RWOverdijk
Sounds plausible. Our back-end has a general allow CORS set-up, but as you say it may not trigger when errors like 404 or 500 are thrown. I'll modify the back-end and come back to you with more info. Thx for being both patient and helpful.

@RWOverdijk
Of course it was a CORS error.
Man, you never seize to impress me.
Thx for all your help. It is highly appreciated.


Rollup to caption in toctree not working

After installing and configuring the theme, I am unable to get the rollup to caption functionality described here to work.
Here is my conf.py with the necessary config:

Here is my index.rst with the captions:

And here is my site which is not rolled up to the caption "Concordium Client" as I would expect.

Is there some other configuration that needs to be done for this to work? I installed the theme last week so presumably it is the latest and greatest.

here you added multiple toctree with captions. captions are not considered as toctree elements but simple titles.
I think that to achieve what your goal, you should use an intermediate file:
.
├── index.rst
├── references/
│   ├── concordium-client.rst
│   ├── transactions.rst
│   └── query-node.rst
└── client-index.rst

with client-index.rst being:
Concordium client
=================

.. toctree::
    references/concordium-client
    references/transactions
    references/query-node

in index.rst use one single toctree:
.. toctree::
   client-index

repeat this operation for the three sections and they will be wrapped as expected in the primary navbar.

I checked our documentation and the current version (0.11):

show_nav_level=0
show_nav_level=1

It seems to work as expected. As it's been here since version 0.8 I'll close this one. Please feel free to reopen if the problem persist.


Make probing optional

I would like to add the ability into Sirvice to not airlock. This requires a change here to make it optional

Seems reasonable to me.

Thanks for catching the console.log :/

If this is good, can I get a merge + version bump?

@proflayton you can merge and bump yourself :)
Recommend: minor version

:+1: Didn't know the ownership rules here


⚠ Samsung has degraded performance

In fdcf2ed, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2387 ms

Resolved: Samsung performance has improved in bc8f935.


Issues with Null handling and query argument order.

I have a query such this:

selectOngoingAnomaliesForEndpoint :: Projects.ProjectId -> Endpoints.EndpointId -> DBT IO (Vector AnomalyVM)
selectOngoingAnomaliesForEndpoint pid eid = query Select q opt
  where
    q = _selectWhere @AnomalyVM [[field| project_id |], [field| endpoint_id |], [field| acknowleged_at |], [field| archived_at |]]
    opt = (pid, eid, Null, Null)

But I noticed 2 issues with the generated query.

When checking for null with Postgres, we're expected to use is instead of =.
It seems the options are applied in a different order from the fields list given the _selectWhere

Generated sql:
SELECT anomalies_vm."id",... FROM apis."anomalies_vm" WHERE "project_id" = 'project id val' AND "acknowleged_at" = 'endpoint_id val' AND "archived_at" = null AND "endpoint_id" = null

EDIT:
It seems the order is based on the field positions in the underlying struct. Is this intended behaviour?

@tonyalaribe Yes, due to how the query generation is done, it's going to be more complex to produce a Null-aware select combinator, because you'd have to signal to _where that some of your place-holders are going to be NULL.
You're going to have to roll that one by hand at the moment.

It seems the order is based on the field positions in the underlying struct. Is this intended behaviour?

Yes, but this ought to be documented. :)

Thanks @tchoutri , I’ll work around it :)

@tonyalaribe Thanks again for all the tickets you open, this is invaluable to me. :)

I'm a very happy user of pg-entity. I really appreciate the work you put into this. And also the indirect haskell mentorship I get through the conversations in these issues. Thanks as well !!


Instruction on how to add more content scripts for different matches

Great project! Can you instruct me how to add more content scripts than one? I want one content script to match all sites, and another to match only a specific site. I know how I would do this with a vanilla Chrome Extenstion project, but not with vue.

@masterprogrammer999  , you can refer to demo
I  add a file in the entry folder
And configure the relative url in manifest.*.json
Then npm run build will package all the files in the entry folder


docs: Minor updates to README.md and add section on binaries

Title says it all!

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket: