HNC: RBAC-enabled AKS cluster won't authorize subnamespace creation

Setup

Kubernetes 1.16.15 AKS cluster
HNS/HNC 0.5.3
Azure RBAC (https://docs.microsoft.com/en-us/azure/aks/manage-azure-rbac)

Issue
kubectl hns create -n parentNS childNS

Could not create subnamespace anchor.

Reason: subnamespaceanchors.hnc.x-k8s.io "childNS" is forbidden: User<EMAIL_ADDRESS>cannot create resource "subnamespaceanchors" in API group "hnc.x-k8s.io" in the namespace "parentNS"

after tweaking our RBAC:
    ...
    - name: create-subnamespace
      labels:
        rbac.authorization.k8s.io/aggregate-to-edit: "true"
      rules:
        - apiGroups: ["hnc.x-k8s.io"]
          resources: ["subnamespaceanchors"]
#         Perhaps we need to list both "list" and "create" here?
          verbs: ["create"]
   ...
    - name: view-auxilaries
      labels:
        rbac.authorization.k8s.io/aggregate-to-view: "true"
      rules:
        - apiGroups: ["hnc.x-k8s.io"]
          resources: ["subnamespaceanchors"]
          verbs: ["get", "list", "watch"]

it still errors out, but with a different message which isn't too descriptive:
$ kubectl hns create --namespace=parentNS childNS
Could not create subnamespace anchor.
Reason: the server could not find the requested resource (post subnamespaceanchors.hnc.x-k8s.io childNS)

Thanks for this report! To try to narrow down the potential problem, can
you try giving the create-subnamespace role (ClusterRole?) all possible
verbs on the subnamespaceanchors resource? I've never tried to give out the
"create" verb separately from "get" and "list" - I've always assumed that
the former implies the latter.
Failing that, I'll try to have a look on my side but I don't personally
have access to an AKS cluster. Hopefully GKE RBAC and AKS RBAC operate the
same way since it's part of core K8s.
On Mon, Nov 16, 2020 at 3:46 PM Dmitry Makovey<EMAIL_ADDRESS>wrote:

Setup

Kubernetes 1.16.15 AKS cluster
HNS/HNC 0.5.3
Azure RBAC (
https://docs.microsoft.com/en-us/azure/aks/manage-azure-rbac)

Issue
kubectl hns create -n parentNS childNS
Could not create subnamespace anchor.
Reason: subnamespaceanchors.hnc.x-k8s.io "childNS" is forbidden: User<EMAIL_ADDRESS>cannot create resource "subnamespaceanchors" in API group "hnc.x-k8s.io" in the namespace "parentNS"
after tweaking our RBAC:
...
- name: create-subnamespace
  labels:
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
  rules:
    - apiGroups: ["hnc.x-k8s.io"]
      resources: ["subnamespaceanchors"]#         Perhaps we need to list both "list" and "create" here?
      verbs: ["create"]

...
- name: view-auxilaries
labels:
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules:
- apiGroups: ["hnc.x-k8s.io"]
resources: ["subnamespaceanchors"]
verbs: ["get", "list", "watch"]
it still errors out, but with a different message which isn't too
descriptive:
$ kubectl hns create --namespace=parentNS childNS
Could not create subnamespace anchor.
Reason: the server could not find the requested resource (post subnamespaceanchors.hnc.x-k8s.io childNS)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/multi-tenancy/issues/1273, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43PZBSGTA4TJVQT6QLIMTSQGFTHANCNFSM4TXVZDLA
.

@adrianludwin In the example above, the user via group aggregation has all the permissions:
$ k describe clusterrole edit
Name:         edit
Labels:       kubernetes.io/bootstrapping=rbac-defaults
              rbac.authorization.k8s.io/aggregate-to-admin=true
Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
PolicyRule:
  Resources                                    Non-Resource URLs  Resource Names  Verbs
  ---------                                    -----------------  --------------  -----
  ...
  subnamespaceanchors.hnc.x-k8s.io             []                 []              [create get list watch]

The original error message was before you set those RBAC rolebindings up,
correct?
If you type kubectl get crds | grep hnc, do you see the expected CRDs
listed?
Finally, can you confirm that you're using the v0.5.3 kubectl plugin? The
v0.6.0 plugin uses a different API version than HNC v0.5.3 and that could
cause the error message you're seeing.
On Mon, Nov 16, 2020 at 5:34 PM Colin Cyr<EMAIL_ADDRESS>wrote:

@adrianludwin https://github.com/adrianludwin In the example above, the
user via group aggregation has all the permissions:
$ k describe clusterrole edit
Name:         edit
Labels:       kubernetes.io/bootstrapping=rbac-defaults
rbac.authorization.k8s.io/aggregate-to-admin=true
Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
PolicyRule:
Resources                                    Non-Resource URLs  Resource Names  Verbs

...
subnamespaceanchors.hnc.x-k8s.io             []                 []              [create get list watch]
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/multi-tenancy/issues/1273#issuecomment-728370791,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43PZGGB22FJZHLIM3OMFTSQGSGRANCNFSM4TXVZDLA
.

@adrianludwin here are some responses:

original error message was with RBAC that had no rules for HNC whatsoever
CRDs seem to be in place:

k get crds | grep hnc
hierarchyconfigurations.hnc.x-k8s.io    2020-09-08T21:22:34Z
hncconfigurations.hnc.x-k8s.io          2020-09-08T21:22:34Z
subnamespaceanchors.hnc.x-k8s.io        2020-09-08T21:22:34Z

it's a v0.5.3 deploy: image: gcr.io/k8s-staging-multitenancy/hnc/controller:v0.5.3
running tests with developer after adding list, 'get' and 'watch` into verbs did solve it

I am puzzled as @SailingYYC mentioned that aggregated permissions have those verbs

Quick q - are both you (@droopy4096 ) and @SailingYYC working together on this? I see you're both in Alberta (I'm in YYZ so we can easily find a time to chat if we need to resolve this via video).
When I asked about the version, I meant the version of kubectl-hns (on your workstation), not the deployed image. E.g. if you type "kubectl hns version," it should not return anything before v0.6.0. In particular, you can no longer install the plugin using Krew - you must use the manual instructions here.
Can you create a subnamespace anchor manually? E.g.:
$ kubectl apply -f - <<EOF
apiVersion: hnc.x-k8s.io/v1alpha1
kind: SubnamespaceAnchor
metadata:
  namespace: parentNS
  name: childNS
EOF

@adrianludwin that is correct @SailingYYC and myself are employees at the same org :)
I will reach back to developer as there is a chance their kubectl-hns version is 0.6.0.... I'll make sure. thanks for the pointer.

Thanks, let me know!
On Tue, Nov 17, 2020 at 2:05 PM Dmitry Makovey<EMAIL_ADDRESS>wrote:

@adrianludwin https://github.com/adrianludwin that is correct
@SailingYYC https://github.com/SailingYYC and myself are employees at
the same org :)
I will reach back to developer as there is a chance their kubectl-hns
version is 0.6.0.... I'll make sure. thanks for the pointer.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/multi-tenancy/issues/1273#issuecomment-729137757,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43PZAP3HVXJ6SMKSCVOVLSQLCOLANCNFSM4TXVZDLA
.

@adrianludwin that is correct @SailingYYC and myself are employees at the same org :)
Indeed developer was using 0.6.0 so after dropping client down to 0.5.3 things seem to operate as expected.

That's great to hear, thanks!
Would you be comfortable sharing how you're using HNC? Are the scenarios in the user guide useful and meaningful to you, or are you using them in some other way?

it's the "permission propagation" and allowing users to create their own namespaces what we're using HNC for.

Great, thanks! LMK if you have any other issues with it, and watch out for
Exceptions in v0.7 (upcoming) to limit permission propagation to subsets of
namespaces.
/close
On Wed, Nov 18, 2020 at 11:10 AM Dmitry Makovey<EMAIL_ADDRESS>wrote:

it's the "permission propagation" and allowing users to create their own
namespaces what we're using HNC for.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/multi-tenancy/issues/1273#issuecomment-729782882,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE43PZCHALVM57W6YPXX623SQPWV5ANCNFSM4TXVZDLA
.


Application not working inside the Drupal VM (Ubuntu 16.04.3 LTS)

Issue Type

Bug Report / Support Request

Your Environment

$ vagrant --version
Vagrant 2.0.1
ansible <IP_ADDRESS>
  config file = None
  configured module search path = [u'/home/vagrant/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]

Your OS

Windows (version)

Full console output
[Wed Nov 29 18:54:45.590113 2017] [proxy_fcgi:error] [pid 2789:tid<PHONE_NUMBER>33920] [client <IP_ADDRESS>:63536] Premature end of script headers: index.php
[Wed Nov 29 18:54:45.590170 2017] [proxy_fcgi:error] [pid 2789:tid<PHONE_NUMBER>33920] [client <IP_ADDRESS>:63536] AH01070: Error parsing script headers
[Wed Nov 29 18:54:45.590173 2017] [proxy_fcgi:error] [pid 2789:tid<PHONE_NUMBER>33920] (22)Invalid argument: [client <IP_ADDRESS>:63536] AH01075: Error dispatching request to :
Summary
I am getting the issue running the local drupal 8 environment. The issue we have identify that inside the file "development.services.yml" debug cacheability header set true (http.response.debug_cacheability_headers: true). When we set this to false . Environment start working. The error reported in apache error log is:
[Wed Nov 29 18:54:45.590113 2017] [proxy_fcgi:error] [pid 2789:tid<PHONE_NUMBER>33920] [client <IP_ADDRESS>:63536] Premature end of script headers: index.php
[Wed Nov 29 18:54:45.590170 2017] [proxy_fcgi:error] [pid 2789:tid<PHONE_NUMBER>33920] [client <IP_ADDRESS>:63536] AH01070: Error parsing script headers
[Wed Nov 29 18:54:45.590173 2017] [proxy_fcgi:error] [pid 2789:tid<PHONE_NUMBER>33920] (22)Invalid argument: [client <IP_ADDRESS>:63536] AH01075: Error dispatching request to :
In our findings its related to the header limit in the Apache/FastCGI configuration . I try to increase the LimitRequestLine ,LimitRequestFieldSize in apache config but its not working.
I am using the ubuntu based Drupal VM
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

@msha86 - This looks like it's an application issue—something to do with your Drupal site codebase.
Premature end of script headers: index.php
AH01070: Error parsing script headers

Judging by these errors, I'm guessing it is something to do with whitespace after a PHP closing tag, or a syntax error in one of the PHP files.
I would recommend asking about these errors or researching more on sites like Stack Exchange, or Drupal Answers, as they don't look related to Drupal VM or the underlying webserver setup.

I was experiencing this same issue. I tried changing the http.response.debug_cacheability_headers to false and the issue was solved. I'm going to try and dig further in and see what the underlying issue might be. I am using Acquia BLT with Drupal VM using a Lightning profile for additional context.

Hey @VinceJones, talking about his with @geerlingguy at Midcamp.  Things to check (in order):

Does this happen on Mac too?
Is this the result of htpassword
Try destroying your VM, updating your box, and rebuilding the VM.

I'm also having this problem. @VinceJones can you further explain how you remembered to disable the headers cache? I've been having an apache error "Premature end of script headers: index.php" but it doesn't answer why this is happening very well.

Same here .
Setting changing http.response.debug_cacheability_headers to false in
/sites/development.services.yml in local environment.
(using acquia BLT)

For more details about http.response.debug_cacheability_headers and this WSOD check https://www.drupal.org/project/drupal/issues/2954339 and https://www.drupal.org/project/drupal/issues/2844620.


opentherm-thermostat/boiler-target-temperature/get gets status "nan" after a Home Assistant Restart

I Don't know if it is regarding home assistant, your ino, or the boiler.
But after a home assistant restart (not the mqtt broker) the payload of opentherm-thermostat/boiler-target-temperature/get gets the value "nan". The boyler doesn't responds to commands any longer. The only fix is to restart the esp8266.
I tried to get it to work by sending idle command followed by a heat command and some other things, but nothing helps except an esp reboot.
Maybe a reboot command through mqtt could be a solution?

Was an issue with the MQTT Server that would interrupt the messages, send garbage to the esp8266


https://www.teleconsole.com/get.sh : check that tar has the desired options + check that sudo does exist

Hi,
Just tried teleconsole on a Pi3 that has a very custom Linux setup built with busybox. It has no sudo nor the z tar switch, so the installer fails. But manually untarring everything perfectly works.

@substring thanks!


[WIP] Update to go 1.17 and multi arch docker build

cc/ @zendesk/zendesk-core-golang
(not strictly a core golang lib, but probably a handy group of people to get 👍 from)

Update to Go 1.17
Migrate from dep to go modules
Migrate from TravisCI to Github Actions
Update README
Multi-arch image build

(nearly ready to go, just waiting on @rvignesh89 to sort out a Docker Hub service account)

@catkins I've added the dockerhub access token as secrets into the repo.

Thanks @rvignesh89


Log to stdout in addition to file

https://trello.com/c/VZBPctdG/106-2-our-apps-do-not-log-to-stdout-timebox-max-2-days
N.B. This should be tested on Preview to verify it is working as expected on PaaS.

could we update the reference to the now-deleted get_handler function in the tests.conftest.app_with_stream_logger fixture?

@katstevens great spot. I updated this now in f9c0c48.


Fix transitive unavailability check

Allow calls to explicitly unavailable code when the caller has the
same unavailability.
For example, in a framework compiled with -application-extension, this should
be allowed:
@available(iOSApplicationExtension, unavailable)
    func x() {
        _ = UIApplication.shared
    }
}

since the consumer of the framework, or other call sites within the same
framework will be unable to call the unsafe wrapper in the same situations they
couldn't call the original unsafe code.
Resolves SR-1226.

Note that there is a stricter early-out above the new check that should maybe be removed:
// Suppress the diagnostic if we are in synthesized code inside
// a synthesized function and the reference is lexically
// contained in a declaration that is itself marked unavailable.
// The right thing to do here is to not synthesize that code in the
// first place. rdar://problem/20491640
if (R.isInvalid() && isInsideImplicitFunction(R, DC) &&
    isInsideUnavailableDeclaration(R, DC)) {
  return false;
}

On Oct 20, 2017, at 4:22 PM, Timothy J. Wood<EMAIL_ADDRESS>wrote:
@tjw commented on this pull request.
In lib/Sema/TypeCheckAvailability.cpp https://github.com/apple/swift/pull/12410#discussion_r146085298:

@@ -1499,6 +1499,27 @@ bool TypeChecker::isInsideUnavailableDeclaration(
IsUnavailable);
}

+bool TypeChecker::isInsideCompatibleUnavailableDeclaration(

SourceRange ReferenceRange, const DeclContext *ReferenceDC,
const AvailableAttr *attr)
+{
I don't see any mention of formatting in Contributing Code https://swift.org/contributing/#contributing-code. Is there another page of documentation that covers this (and possibly other conventions I've missed)?

We should add it. Generally people just fire and forget with git-clang-format.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/apple/swift/pull/12410#discussion_r146085298, or mute the thread https://github.com/notifications/unsubscribe-auth/AAee39UV7d9vnQpDoDX8aJQqXpTZwf6rks5suSsogaJpZM4P3vBw.

Ping... is there anything I can do to make this patch better? Thoughts on the possible comment above ... not sure if it is clarifying or not.

Building a local toolchain and testing on more of our code exposes a case I'm not handling yet:
@available(iOSApplicationExtension, unavailable)
let property: String = "qqq"

@available(iOSApplicationExtension, unavailable)
public let strings_let: [String] = [property]

Sorry, it's been a busy week. I'll take another look tomorrow and see if I can find the elusive case I cared about, or prove to myself that it's not possible.
When you say "a case you're not handling yet", that means this is rejected where it ought to be allowed, right? That's okay since it's not a regression; we can get it in a follow-up patch.

Correct -- it is a case that should be allowed, but is currently (and was previously) rejected.

Okay, I think I've convinced myself that in order to access something more available inside something less available, you have to either name the enclosing type, or that type has to be named somewhere that's already available. Which means I'm good with this.

@swift-ci Please test

@swift-ci Please test source compatibility

Build failed
Swift Test Linux Platform
Git Sha - 6e57b861d37eab8cf5ccf888865bdad5019227b9

Build failed
Swift Test OS X Platform
Git Sha - 6e57b861d37eab8cf5ccf888865bdad5019227b9

Merged. Thank you, Timothy!


CORGI-634 - add OIDC_EXEMPT_URLS setting

All files served by static are being truncated to the same size ... regardless of underlying file size. At first we thought maybe this was to do with selecting wrong variation (gz or cached version) but the same issue occurs with staticfiles.json (which only has a single version).
As this is difficult to repro locally - this is a test PR to see if the new OIDC middleware (as this is what changed in the past 1-2 weeks) is interfering with any static file processing ... albeit we would have to inject a bunch of logging statements to make middleware process chain visible .. this seemed the easiest way to verify [problem or no problem].

merging to test


cant install on colab

Collecting torchfunc
ERROR: Could not find a version that satisfies the requirement torchfunc (from versions: none)
ERROR: No matching distribution found for torchfunc
https://colab.research.google.com/drive/1MUxPXhZiQ1Wt2EFIn7PLIy5FiHII-FsG

torchfunc needs Python with version 3.7 or above. Current version of Python on Google's Colab is 3.6.8.
The only way to run it is to connect colab to some local runtime of yours, see here. Either that or you have wait for Python update provided by Google.

Thanks


Pass jade options into initial compile, fix #55

I took a stab at trying to add a test for jade options, but it was a
significant enough change to your test setup that it felt pretty
intrusive.
Thanks for verifying that my fix made sense, and thanks again for your
great work on vue.js.

You're welcome, and thanks for the PR!


Update autoload-dev within Composer

Currently, the tests are only running because no tests have any dependencies under PhpFp\Maybe\Test, and PHPUnit doesn't let poor autoloading get in its way. There needs to be a separate Composer entry, for autoload-dev, to load the tests namespace.

Sorted!


https://static.rust-lang.org/cargo-dist/index.html provides wrong index

See https://github.com/rust-lang/cargo/issues/2950#issuecomment-237038404

Thanks for the report! I reopened https://github.com/rust-lang/cargo/issues/2950 so we can track it over there.


if vue3 plugin lib use provide/inject api and project use this plugin, error with inject does not get a value when plugin's vue version  is different from the project's vue version

Version
3.2.6
Reproduction link
https://github.com/a1067111756/vue-verify/tree/master/element-form-verify-next
Steps to reproduce
/* plugin lib code */
// install plugin
const install: any = function (app: App, options: VERIFY_TYPE.IGlobalOption) {
app.provide('elFormItemVerifyGlobalOption', options)  // provide a value
app.component(ElFormItemVerify.name, ElFormItemVerify) // register component
};
export default {
install
};

// ElFormItemVerify.vue
import { defineComponent, inject} from 'vue';
export default defineComponent({
setup (props, context) {
// inject a value
const globalOption: VERIFY_TYPE.IGlobalOption = inject('elFormItemVerifyGlobalOption') as VERIFY_TYPE.IGlobalOption
}
})

/* some problems */
// situation 1 - when plugin's vue version  is same as the project's vue version
inject('elFormItemVerifyGlobalOption') as VERIFY_TYPE.IGlobalOption  can get a correct value
// situation 2 - when plugin's vue version  is different from the project's vue version
inject('elFormItemVerifyGlobalOption') as VERIFY_TYPE.IGlobalOption  get null
I don't know if my usage method is wrong, I hope to get an answer,  Why does the inconsistency of the project's vue version and the plugin's vue version  lead to different values obtained by inject?
What is expected?
inject can get a correct value when plugin's vue version  is different from the project's vue version
What is actually happening?
inject get null when plugin's vue version  is different from the project's vue version

Hi, thanks for your interest but Github issues are for bug reports and feature requests only. You can ask questions on the forum, the Discord server or StackOverflow.


Add global variables into DreamView for visualization

Is there a tutorial/way showing how to add global variables into DreamView for its visualization? Thanks

Could you elaborate more about the request? What types of global variables, and how you want to visualize them?

@vlin17
For example, the input variables for control module are:

I would like to see the x, y, z values in format of time graph in Dreamview

I think the easiest way is throw them to pnc monitor that can do same with another data

Yes, the easiest way is to throw them to pnc monitor. Some graphs that have been provided for control module are:

Trajectory graph shows ego-vehicle's x position, y position, heading, steer curve in the past 8 sec. If this not what you want, to add a desired graph, please

construct/update graph data in dreamview/frontend/src/store/control_data.js
config graph options/properties (e.g. line color, x-axis, y-axis) in dreamview/frontend/src/store/config/ControlGraph.yml
add the graph to the monitor in dreamview/frontend/src/components/PNCMonitor/ControlMonitor.js
compile frontend: bash apollo.sh build_fe. (Note: make sure all npm packages are installed first. if not, run "yarn install" under modules/dreamview/frontend directory)

Closed due to inactivity. If the problem persists, pls feel free to reopen it or create a new one and refer to it.


Calculate "inserted_count"

Hello! I wrote some unit test code like
my $res = $collection->insert_many(\@test_data);
is($res->inserted_count, 3, 'Inserted three records');

And, weirdly, got undef back. According to $res->inserted, I successfully inserted three records. I looked at the code, and couldn't find anywhere that "inserted_count" was actually being set. And so, voila.
Let me know if there's anything I should change.
Cheers!

Thanks!  I'll check it out tomorrow.

Great catch and thank you for the PR!  I've merged it to master and will
backport it for a 1.2.x bugfix release at the end of the current sprint.

That's awesome, thanks! :-D


reCAPTCHA becoming less able to detect real users [likely due to huge increase of users during pandemic]

@rowan-m  Last time we talked was 2 years ago, right before you were pushing out v3. It seems that as time has passed the efficacy of v3 has become exactly the same as v2 and you need to start it from fresh again because it's confidence metrics are no longer working -- it thinks almost all real people are bots. I'm pretty sure this is because of the huge influx of users that are pushing the confidence model in the wrong direction.

Additionally, it seem as of late (possibly due to reCAPTCHA slowly progressively beginning to be less effective) that many large sites (i.e. humblebundle.com) have switched over to hCAPTCHA @ https://www.hcaptcha.com/ Just wanted to make sure you knew about this new CAPTCHA.

This repo is for issues with the PHP client.


HTML

HTML
User Story
As a bootcamp student
I want the prework notes to be structured on a webpage
so that I can easily find and read information
Acceptance Criteria
GIVEN a Prework Study Guide Website
WHEN I visit the website in my browser
THEN I see four boxes titled HTML, CSS, Git, JavaScript

Acceptance Criteria has been met


Separation of jest config

Move the test config from the package.json for separation of concerns.

@sadarshannaiynar Pl feel free to create a PR if you'd like to implement this

Will do

#2 addresses this issue. PR merged.


Unexpected value 'Frame1Component' imported by the module 'MaterialAppModule'

OS: Mac 10.11.6 El Capitan
Angular CLI Version: 1.0.0-beta.11-webpack.8
I started with this a fork of this project: https://github.com/jelbourn/material2-app/ then upgraded to a newer version of angular-cli because it was telling me I had to in the command line.
I've got a bunch of login/register/forgot password/reset password components that I have in a seperate NPM module from my own app. And then I've got my outer frame set inside app.component.html. Here is my module definition:
import { NgModule, ApplicationRef } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { MaterialModule } from '@angular/material';
import { FormsModule } from '@angular/forms';
import { ModalModule } from 'angular2-modal';
import { BootstrapModalModule } from 'angular2-modal/plugins/bootstrap';
import { routing, appRoutingProviders }  from './app.routing';
import { AppComponent } from './app.component';
import { HomeComponent} from './home/home.component';
import { LoginComponent, RegisterComponent, ForgotPasswordComponent, ResetPasswordComponent } from 'cws/auth';

@NgModule({
  imports: [
    BrowserModule,
    MaterialModule.forRoot(),
    FormsModule,
    ModalModule.forRoot(),
    BootstrapModalModule,
    routing
  ],
  declarations: [AppComponent, HomeComponent, LoginComponent, RegisterComponent, ForgotPasswordComponent, ResetPasswordComponent],
  entryComponents: [AppComponent],
  providers: [appRoutingProviders]
})
export class MaterialAppModule {
  constructor(public _appRef: ApplicationRef) { }

  ngDoBootstrap() {
    this._appRef.bootstrap(AppComponent);
  }
}

So the frameset is in AppComponent and then all my pages are being brough in via import { LoginComponent, RegisterComponent, ForgotPasswordComponent, ResetPasswordComponent } from 'cws/auth'; and import { HomeComponent} from './home/home.component';
This works just fine. However, what I would like to do, is take my frameset component (which right now is app.component.ts and app.component.html and app.component.css and put that into it's own node module as well, so then in my app.component.html I would just be able to put <frame1></frame1> and have it load the frameset that is defined in the module. So here's what my app.module.ts looks like with that:
import { NgModule, ApplicationRef } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { MaterialModule } from '@angular/material';
import { FormsModule } from '@angular/forms';
import { ModalModule } from 'angular2-modal';
import { BootstrapModalModule } from 'angular2-modal/plugins/bootstrap';
import { routing, appRoutingProviders }  from './app.routing';
import { AppComponent } from './app.component';
import { HomeComponent} from './home/home.component';
import { LoginComponent, RegisterComponent, ForgotPasswordComponent, ResetPasswordComponent } from 'cws/auth';
import { Frame1Component } from 'cws/frames/frame1';

@NgModule({
  imports: [
    BrowserModule,
    MaterialModule.forRoot(),
    FormsModule,
    ModalModule.forRoot(),
    BootstrapModalModule,
    routing,
    Frame1Component
  ],
  declarations: [AppComponent, HomeComponent, LoginComponent, RegisterComponent, ForgotPasswordComponent, ResetPasswordComponent],
  entryComponents: [AppComponent],
  providers: [appRoutingProviders]
})
export class MaterialAppModule {
  constructor(public _appRef: ApplicationRef) { }

  ngDoBootstrap() {
    this._appRef.bootstrap(AppComponent);
  }
}

And inside my app.component.ts:
import {Component, OnInit} from '@angular/core';
import { GetAppVersion } from 'app-version';

@Component({
  selector: 'app',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css']
})
export class AppComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    console.log("Current app version: " + GetAppVersion);
  }

}

And inside my app.component.html:
<frame1></frame1>

And here's what's inside my cws/frames/frame1 component:
import {Component, OnInit} from '@angular/core';

@Component({
  selector: 'frame1',
  templateUrl: 'frame1.component.html',
  styleUrls: ['frame1.component.css']
})
export class Frame1Component implements OnInit {

  constructor() { }

  ngOnInit() { }

}

So what I expect to be able to happen is that my app continues to just load app.component.ts, but the HTML would have access to the cws/frames/frame1 component, so that when I use <frame1></frame1> it would inject the html and css that are defined in the component, so in this case it would be frame1.component.html and frame1.component.css.
But I'm getting
metadata_resolver.js:227Uncaught Error: Unexpected value 'Frame1Component' imported by the module 'MaterialAppModule'

Edit:
I've also tried just importing the Frame1Component on the app.component.ts file itself, and then using it as a directive. But it says
Argument of type '{ selector: string; template: any; styles: any[]; directives: typeof Frame1Component[]; }' is not assignable to parameter of type 'Component'.
  Object literal may only specify known properties, and 'directives' does not exist in type 'Component'.```

I've also tried putting it in the declarations.

nice title name, so big

Sorry, I thought I cleared that out. I just discovered something interesting. I moved everything from my node_modules/cws/frames/frame1 folder into a src/app/cws folder and did my import like this: import {Frame1Component} from './cws' and then just put Frame1Component in the declarations section of @ngImport and it works fine... so what about having that in node modules does it not like?

The problem isn't having it in the node_modules folder.  The problem is that you're putting a component in the imports section, which is only for NgModules.  You need to put components in the declarations section.

@isaacplmann  I have removed it from the imports section and put it in declarations, and I still get Unexpected value 'Frame1Component' declared by the module 'AppModule'

@joshterrill did you sort it out? If so, what caused this issue? I'm experiencing similar issue and looking for potential solution.


Inoperable with numpy >= 14.x

The following error is now ever-present when using this Redis release:

This issue was not present on redis==2.10.6.
For reference, I am using numpy==1.15.4, which is required for pyarrow.

This is not a bug in redis-py, but in django-redis. The issue is being tracked in niwinz/django-redis#342.

Also reported in #1071 - closing.


What are the expectations around setTimeout/setImmediate after environment is torn down?

We're running into some difficulties while making changes to React. I can explain them in more depth later, but the tldr is we tried to replace setTimeout with setImmediate in one place, and this led to a bunch of issues. Before diving deeper into that rabbit hole, I'm curious if there's any well-defined thinking about what should happen to timeouts/immediates after the Jest test environment is torn down.
In particular, I'm thinking about a case where:

A test uses real setTimeout or setImmediate (no fake timers)
It runs in a Jest jsdom environment
The code inside the callback might access the DOM

it('test', () => {
  setTimeout(() => {
    // do something with window
  }, 10);

  setImmediate(() => {
    // do something with window
  });
})

I'm getting the impression is that Jest doesn't do anything special for real timers. Which would explain why, for example, setTimeout simply won't fire if this is the only test file, but would fire if the process is still running (e.g. due to async tests or the worker being reused for another test suite). Or why setImmediates run after jsdom is already torn down, causing an error if we use DOM there.
I want to understand if my explanation above is correct, and whether this behavior actually makes sense. Conceptually, a "real" Node environment is not isolated. E.g. module system isolation or jsdom teardown/setup is a Jest feature. It's not something built-in. By this logic, wouldn't it make sense to also isolate any "real" setTimeout and setImmediate between test files? For example, by consistently clearing them when the test environment is torn down instead of allowing "zombie" timeouts and immediates to execute. Or by forcing all immediates to run before jsdom is torn down.
Any thoughts? I can prepare more detailed examples if this doesn't make sense.

cc @kentcdodds in case you've run into this with React Testing Library

Thanks for the mention. I've run into these kinds of problems for sure. I like the proposed solution and it's what I do when I'm mocking timers and I would do it with real timers if I could. For example: https://github.com/kentcdodds/bookshelf/blob/main/src/setupTests.js#L53

Here's a few examples (all are reproducible with the default repl.it)
This test suite passes:
test('hello', () => {
  setTimeout(() => {
    throw Error('hi');
  }, 0)
});

It's because the process exits before we've had a chance to run timeouts.
However, this other test suite fails:
test('hello', () => {
  setTimeout(() => {
    throw Error('hi');
  }, 0)
});

// I just added this to make it fail:
test('oh no', async () => {
  await new Promise(resolve => setTimeout(resolve, 1000));
});

This is because the first timeout actually got a chance to run now, causing the crash. This seems like a source of non-determinism.
Curiously, I can't reproduce this problem if I move these tests apart into different files, even if they run in band. I'm not sure why. Does it mean there's already some kind of a cleanup mechanism for setTimeout?
For example, if I set setTimeout.foo = true in one file, I don't see setTimeout.foo in other file. Why?

Now regarding setImmediate.
This seems to bring down the Worker entirely:
test('hello', () => {
  setImmediate(() => {
    throw Error('hi');
  })
});

I get exit status 1 instead of the normal passed/failed summary.
This code also crashes Jest:
test('hello', () => {
  document.createElement('div');
  setImmediate(() => {
    document.createElement('div'); // Cannot read property 'createElement' of null
  })
});

However, if I run multiple test files, of course, document exists in each of them, which means it's this particular environment that got torn down by the time setImmediate runs.
Note how setTimeout does not have the same issue because it simply won't run after teardown:
test('hello', () => {
  document.createElement('div');
  setTimeout(() => {
    document.createElement('div') // Works fine
  }, 0)
});

Here's another fun curiosity.
This code passes fine in Jest:
/** @jest-environment jsdom */

test('hello', () => {
  setTimeout(() => {
    throw Error('hi')
  }, 0);
});

However, if we switch to node environment, it will crash the Jest runner:
/** @jest-environment node */

test('hello', () => {
  setTimeout(() => {
    throw Error('hi')
  }, 0)
});

This gives me exit status 1, just like setImmediate in jsdom environment. It also crashes the next test file (if it exists).
This makes me think that maybe jsdom Jest environment does something special with timeouts in particular?

👀
https://github.com/facebook/jest/blob/75e94cc26714a9f23722dc127381c8e869ba42d8/packages/jest-util/src/installCommonGlobals.ts#L65-L68

Proposal to remove the inconsistency: https://github.com/facebook/jest/issues/11204

Most of my reply at https://github.com/facebook/jest/issues/11204#issuecomment-800605596 probably applies here instead 😅
I think long term, the idea way for Jest to handle this is to disallows scheduling any work after the test environment has been torn down (or is in the process if being torn down) or run any previously scheduled work. Once a test has completed, no more of its code should run (mostly as stack traces and figuring out where this work was scheduled is confusing). This should probably happen for both "real" and "fake" timers, which'd mean we'd need to override all the timer functions manually to ensure we can track them.
Whether or not that means to throw when it happens or just make it into a no-op is a separate discussion, but it can also be up to the environment itself (i.e. the envs shipped by Jest could throw, but some env testEnvironmentOptions could disable it or something).

For example, if I set setTimeout.foo = true in one file, I don't see setTimeout.foo in other file. Why?

When you say "other file" does that mean another file loaded for the same test, or in a separate test? If the latter it's just because they get fresh globals each time. If the former... that sounds weird 😅

/cc @thymikee @jeysal thoughts?

When you say "other file" does that mean another file loaded for the same test, or in a separate test? If the latter it's just because they get fresh globals each time. If the former... that sounds weird 😅

Yes, what I meant is that two different files "see" different setTimeout globals but they see the same setImmediate global. But the source code that shows it's directly lifted from the top-level environment explains it.


how to commit changes if checks fail (without using PR review suggestions)

We should probably have this as an optional feature since our runtime has all the tools it needs to do it (provided the proper permissions in CI).

Do you mean how to commit changes made by cpp-linter after execution (e.g. create a PR

Yes, but it makes more sense to push to the branch that is checked out, not open a new PR. The pre-commit.ci app does the same thing.

The actual problem that this issue solves is the fact that cpp-linter-action uses its own venv that the user's CI workflow cannot use once cpp-linter-action step is finished.

Or users can DIY their own using git commands

I like this idea. The auto-fix option would just have to leave the file changes in the workspace directory. Then the user can git add --all (or use gh-cli) and push the changes under whatever authorization they want.
So, maybe we could have 2 options:

fix-worktree: leave clang-tool changes applied to workspace
push-fixes: push any changes from clang tools

Each idea would require cpp-linter to remove any temp files (.cpp-linter_cache/*) before exiting.
Considering the extra configurations around auto-pushing a commit (like commit message, sign-off trailers, etc), it might just be easier to only implement fix-worktree.

Given that this pkg runs both clang-tidy and clang-format, it is worth noting that changes should be applied in the following order:

clang-tidy changes (if desired)
clang-format changes

That should make sure that the changes from each tool don't conflict with each other.

I've been thinking about this feature recently... Given the agreed upon workflow:
flowchart LR
    step1[apply clang-tidy changes to a cached copy of files]
    step2[apply clang-format changes to cache clang-tidy changes]
    step3[copy cache back into worktree]

    step1 --> step2 --> step3

It would be very difficult to determine which lines were changed in the PR after applying clang-tidy changes. Telling clang-format which lines to scan/fix (of the cached copy) might require a 3-way diff. I'm not sure how to do that.
TL;DR
It might be easier to allow only committing clang-format today changes and optionally running clang format on just the clang-tidy changes (which may not be all the changes in the PR).


Request to Improve Icon Resolution in Files Application

Description
I noticed that recently you made changes to the icon resolution in the Favorites bar. However, I wanted to inquire if it would be possible to enhance the resolution of all the icons within the Files application. For instance, some icons appear blurry, such as the folder icon in the Favorites, which is of better quality compared to other folder icons. Similarly, the PDF icon is also blurry and many other. So, I would like all icons in Files to have the same resolution as those in File Explorer.
Steps To Reproduce

Navigate in Files

Requirements
Improve resolution of all icons in Files like those in favorites.
Files Version
Dev
Windows Version
22H2 22621.1848
Log File
No need.

@yaira2 Do you think this icon and thumbnail issue will be fixed soon ?

We try to avoid giving timelines but what I can say is that #12071 will keep the icons consistent throughout the app, and will make it easier for us to implement new layouts.

OK, I understand. I'm eager to !


Build timeout when trying to deploy Next.js

I'm creating this issue to collect issues related to deploy timeouts/failed deploys for Next.js sites. I've seen a couple other threads get re-purposed into discussions for Next.js deployment issues, though they were originally intended for unrelated past deployment issues.
The asks are the following:

Create a support issue, so that we can use that channel to collect more information and assess the severity of each issue.
Deploy your Static Web Apps to West US 2 region. We have more thorough logging in that region uniquely and will be better enabled to assist.
Share your default host name, and screenshot of failing deploys here.
If standalone is enabled, turn it off and share if this has improved your deployment.

Looking forward to getting to the bottom of this, thanks everyone for the feedback!

Hi, currently having deployment issues for both Free and Standard tier Static Web Apps. Both have Location "Global". I tried with removing 'standalone' without any differences. The host name your asking for, is that the URL to the app?

I'm having this issue today, Nextjs build runs fine in github actions but when "polling on deployment" it gives up after 600 seconds and shows "Deployment Failure Reason: Web app warm up timed out. Please try again later."

@felicksLindgren, yes that's correct, the URL to the app. @krisnashaypp any chance you can also share your URL?
Please deploy your workloads to West US 2 (in the Advanced tab of the create blade) if you are able to, we have more thorough logs in that region.
Also, can you open support tickets so we can use that channel for more direct communication?

@thomasgauvin Where do you want to receive that support ticket? Here in GitHub as a seperate issue, or via Azure as a support request?

@thomasgauvin the URL is lively-grass-00c911a03.3.azurestaticapps.net
I didn't have permission in Azure to create support tickets but I've sent it up the chain.

@felickLindgren, an Azure support request would be ideal so we can collect the information about your resource.
@krisnashaypp thanks for sharing, I'll relay this over to our team to look into it

we are facing exactly the same issue for the whole day today, our host: https://ashy-desert-090506203.4.azurestaticapps.net/

@felickLindgren, an Azure support request would be ideal so we can collect the information about your resource.
@krisnashaypp thanks for sharing, I'll relay this over to our team to look into it

Here's a Support Request number for one of our affected resources:<PHONE_NUMBER>001398

Just an update: this issue is still occurring with our build.
Awaiting approvals to cross-deploy to US West 2 and pending support issue creation.

To determine if configured routing might be blocking specific health checks conducted during deployment, could you all please help us investigate the issue by creating a directory within your public folder named .test and include a health check file named health.html within it (public/.test/health.html)? Afterward, start up the application locally and verify if this file is reachable via the path /.test/health.html. If it's inaccessible, please investigate whether the routing rules in for example your middleware might be altering or blocking that path.

@annikel
We do have zero-trust auth middleware that would absolutely block this.
Could you provide the specific files/folders that should remain visible, assuming it's not .test/health?

In that case please make sure to allow health checks to /.swa/health.html

The devil's in the details; this worked!
Note: .swa/health is not the same as .swa/health.html :)
TL;DR: allow .swa/health.html requests through your middleware.

Hey @IgnacioAguirre, you can definitely make use of the Next.js matcher in middleware.js. You can use regex, so negative lookaheads would work well here. There's a few things we didn't want matched in our app so we just added the .swa path to our matcher config. If it's just .swa you want to exclude then you can do something like this:
export const config = {
  matcher: [
    /*
     * Match all request paths except for the ones starting with:
     * - .swa (Azure static web apps)
     */
    '/((?!.swa).*)',
  ],
}

Our builds started working again this morning after adding .swa to the matcher so hopefully this is useful!

Hi @thomasgauvin,
Since last Thursday, we suddenly have been facing many issues with all ours Azure Static Web Apps (~20 instances), one of them being deployment timeouts.
Our support ticket TrackingID#2403080050002476 is mainly about the apps randomly being unavailable for seconds/minutes/even an hour, and engineers have been unable to resolve this so far.
But as for the deployment timeout. I tried disabling output: 'standalone', but this causes the Oryx build to fail:
Installing production dependencies in '/7ee63406-bafe-445c-8668-bf980c30bca5-swa-oryx/app/.oryx_prod_node_modules'...

Running 'yarn workspaces focus --all || yarn install --production'...

node:internal/modules/cjs/loader:1137
  throw err;
  ^

Error: Cannot find module '/7ee63406-bafe-445c-8668-bf980c30bca5-swa-oryx/app/.oryx_prod_node_modules/.yarn/releases/yarn-classic.cjs'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
    at Module._load (node:internal/modules/cjs/loader:975:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
    at node:internal/main/run_main_module:28:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Node.js v18.19.1
node:internal/modules/cjs/loader:1137
  throw err;
  ^

Error: Cannot find module '/7ee63406-bafe-445c-8668-bf980c30bca5-swa-oryx/app/.oryx_prod_node_modules/.yarn/releases/yarn-classic.cjs'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
    at Module._load (node:internal/modules/cjs/loader:975:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
    at node:internal/main/run_main_module:28:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Node.js v18.19.1

---End of Oryx build logs---
Oryx has failed to build the solution.

Picked the starter (https://github.com/staticwebdev/nextjs-hybrid-starter) and set it up with WestEurope which failed after 600 seconds. It did work with WestUS2 after 226 seconds.
@thomasgauvin is there any timeline or estimate on having this working in West Europe?

@AaronCTech In that case please make sure to allow health checks to /.swa/health.html
Thanks annikel. The build time out error resolved after adding .swa matcher in middleware.

@annikel we do not have any auth middleware, and /.swa/health.html is reachable. We have Static Web Apps deployed in West Europe, and we need to rerun the deployments (AzureStaticWebApp@0 DevOps task) multiple times until it finally comes through

Thank you all for the feedback, opening support issues and sharing your default hostnames/site identifiers, we are going to be looking into this.

Hi @thomasgauvin, Since last Thursday, we suddenly have been facing many issues with all ours Azure Static Web Apps (~20 instances), one of them being deployment timeouts. Our support ticket TrackingID#2403080050002476 is mainly about the apps randomly being unavailable for seconds/minutes/even an hour, and engineers have been unable to resolve this so far.
But as for the deployment timeout. I tried disabling output: 'standalone', but this causes the Oryx build to fail:
Installing production dependencies in '/7ee63406-bafe-445c-8668-bf980c30bca5-swa-oryx/app/.oryx_prod_node_modules'...

Running 'yarn workspaces focus --all || yarn install --production'...

node:internal/modules/cjs/loader:1137
  throw err;
  ^

Error: Cannot find module '/7ee63406-bafe-445c-8668-bf980c30bca5-swa-oryx/app/.oryx_prod_node_modules/.yarn/releases/yarn-classic.cjs'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
    at Module._load (node:internal/modules/cjs/loader:975:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
    at node:internal/main/run_main_module:28:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Node.js v18.19.1
node:internal/modules/cjs/loader:1137
  throw err;
  ^

Error: Cannot find module '/7ee63406-bafe-445c-8668-bf980c30bca5-swa-oryx/app/.oryx_prod_node_modules/.yarn/releases/yarn-classic.cjs'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
    at Module._load (node:internal/modules/cjs/loader:975:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
    at node:internal/main/run_main_module:28:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Node.js v18.19.1

---End of Oryx build logs---
Oryx has failed to build the solution.

Hello! We have experienced exactly the same scenario as you.
It started on Tuesday 12 March.
We find that static web apps go to sleep and take anywhere from seconds to minutes to work.
Also experience that our pipeline step AzureStaticWebApp@0 fails when the static web app is "sleeping". Otherwise it works.
Have you found anything out around this problem?
We are considering setting up an App service instead and see if it works better.

Here are the changes I made and the pipeline passed


Init poller withouth start it

Hi, is it possible to initialize a poller withouth starts it?
I need to create a function that start or restart the poller in this way:
    runRanger.start = function(){
        mypoller = poller.get(resource, {
            action: 'jsonp_get',
            delay: config.fastPollingDelay,
            smart: true,
            argumentsArray:[{sysName:indexListService.selected.subSystem,size:1}]
        });
        mypoller.promise.then(null, null, function(data) {
            console.log(data);
        })
    };

But if i call mypoller.stop() and then runRanger.start(), the promise is triggered twice.
but if i do this way:
        mypoller = poller.get(resource, {
            action: 'jsonp_get',
            delay: config.fastPollingDelay,
            smart: true,
            argumentsArray:[{sysName:indexListService.selected.subSystem,size:1}]
        });
        mypoller.promise.then(null, null, function(data) {
            console.log(data);
        })

    runRanger.start = function(){
        mypoller = poller.get(resource, {
            argumentsArray:[{sysName:indexListService.selected.subSystem,size:1}]
        });
    };

it works, but it starts the poller before i call runRanger.start() the first time, i guess the issue is trying to overwrite the promise.
I need to use this function when i change the argumentsArray.
I also tried to add a mypoller.stop() just after the definition but sometimes it starts anyway.

Hi @zazasa you cannot call poller.get without starting the poller.
But you can totally modify your runRanger.start like so:
runRanger.start = function(){
  if (angular.isUndefined(myPoller)) {
    // Initialize poller and its callback
    mypoller = poller.get(resource, {
      action: 'jsonp_get',
      delay: config.fastPollingDelay,
      smart: true,
      argumentsArray:[{sysName:indexListService.selected.subSystem,size:1}]
    });
    mypoller.promise.then(null, null, function(data) {
      console.log(data);
    });
  } else {
    // Restart poller
    mypoller = poller.get(resource, {
      argumentsArray:[{sysName:indexListService.selected.subSystem,size:1}]
    });
  }
};

Let me know if that works for you.:-)

Yes, it works like a charm.
You are very kind, and nice job with this lib.
Thank you

Thanks!!

It would be a great change and would really complete the package, if there was a way to delay the first request with the same or a different timeout as the poll interval. Setting a timeout before it's registered means that the instance is not available for e.g. destruction on leaving the scope where it is applied. I hope this will be a consideration. Thanks for an awesome package 😃


Add the missing expectations for touch events

Ref: https://github.com/twbs/bootstrap/pull/33000#issuecomment-777996844
/CC @kyletsang

Thanks @rohit2sharma95!  I was just working on this but you beat me to it :)

That was fast, thanks! I have to say that part starts to become a little bit messy, perhaps we could refactor it later to be more clear?


Consider improving support for not-node environments

The support for runtimes that lack node's packages (like fs, util, and https) is a bit lacking.
The main culprit to this is that your code makes use of node internals at the top level of some exports, meaning that said runtimes either refuse to start or eventually complain about missing dependencies. For example, creator.ts contains top-level imports for node:path and node:https. If you'd want to package slash-create for use with something like Cloudflare Workers, you'd need to patch it to remove all node imports.
It seems your use of node's internals are for DX features. A possible solution could be to make a seperate 'web' export that just has the essentials for running slash-create but uses purely vanilla JS. From a quick look, this shouldn't be a massive undertaking since most of the core functionality uses vanilla JS already.
(Potentially related to #420)

The only real kind of things that use node packages would be the requester (which needs to be redone anyways) and registering commands in a folder. (Also not sure if tweetnacl would also be a problem)
A web export is probably the best way to go, since I can just split off the creator into a base, and nothing else really uses node things.

Tweetnacl also doesn't bundle well. But if you only use it for Discord's signature validation algorithm, consider using native SubtleCrypto with the Ed25519 cypher instead. This is more performant, and tweetnacl is a pretty heavy dependency.
Few things to note:

SubtleCrypto is available on node's global namespace when using runtime flags or by default on >=19.x, but it's also available under import('node:crypto').webcrypto.subtle
The Ed25519 cypher is only on node >18.3.x. The older name for this cypher is NODE-ED25519 (The old name is also used for CF Workers 😐)

Hmm, okay. I might just have a verify function as a creator option. I'm okay with just not using tweetnacl but may have the option to use it for Node versions below v18.3 (probably just as an optional peer dependency). The minimum node version for slash-create is on v14 but I'm not sure if I want to change it to v18 yet.
I'm working on redoing requests for the next major release, so I'll make sure to keep node dependencies in mind and test for that


Spin off Material Preferences as a separate lib

I like new MaterialEditTextPreference and MaterialListPreference . If you spin off these with other preferences as a separate lib it would be great.

That doesn't seem necessary for two minor classes


Application runs on CPU - lavapipe is not a conformant vulkan implementation

Godot version
Godot Engine v4.0.beta1.official.20d667284
System information
Ubuntu 20.04 with 2 GPUs
Issue description
I'm on Ubuntu 20.04 with 2 GPUs, first is GTX 550, second is GTX 1060 ( via xorg )
When starting Godot beta 1:
Godot Engine v4.0.beta1.official.20d667284 - https://godotengine.org/
Vulkan API 1.2.131 - Using Vulkan Device #0: Unknown - llvmpipe (LLVM 12.0.0, 256 bits)
WARNING: lavapipe is not a conformant vulkan implementation, testing use only
So Godot seems to run on CPU, and is very slow and actually unusable.
I presume Godot is picking the first GPU ( GTX 550 )
I cannot find a way in application ( Settings ) to configure a different GPU
Steps to reproduce
Start Godot Engine v4.0.beta1.official.20d667284 on Ubuntu 20.04 with 2 GPUs
Minimal reproduction project
No response

Try using --gpu-index command line argument with parameters 0, 1 and 2.

using --gpu-index with different indexes don't recognize GPU devices
./Godot_v4.0-beta1_linux.x86_64 --verbose
..
Vulkan devices:
#0: Unknown llvmpipe (LLVM 12.0.0, 256 bits) - Supported, CPU
#1: Unknown llvmpipe (LLVM 12.0.0, 256 bits) - Supported, CPU
to answer your curiosity question:
first GPU ( 550 ) handles my screens
second GPU ( 1060 ) is for dedicated GPU jobs, for example rendering with Blender

some other info that might be relevant:
inxi -G
Graphics:  Device-1: NVIDIA GF116 [GeForce GTX 550 Ti] driver: nvidia v: 390.154
Device-2: NVIDIA GP106 [GeForce GTX 1060 3GB] driver: nvidia v: 390.154
Display: x11 server: X.Org 1.20.13 driver: modesetting,nouveau,nvidia unloaded: fbdev,vesa
resolution: 1920x1080~60Hz, 2560x1440~60Hz
OpenGL: renderer: GeForce GTX 550 Ti/PCIe/SSE2 v: 4.6.0 NVIDIA 390.154

Try running:
vulkaninfo --summary

What is the output?

my version of vulkaninfo does not support --summary
but this is partial output of vulkaninfo itself:
**$ vulkaninfo
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_lvp.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_lvp.so: wrong ELF class: ELFCLASS32
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
VULKANINFO
Vulkan Instance Version: 1.2.131
Instance Extensions: count = 18
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 1
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 21
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6

Layers: count = 9
VK_LAYER_LUNARG_standard_validation (LunarG Standard Validation Layer) Vulkan version 1.0.131, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.2.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.2.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.1.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.1.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_fossilize_32 (Steam Pipeline Caching Layer) Vulkan version 1.2.136, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_fossilize_64 (Steam Pipeline Caching Layer) Vulkan version 1.2.136, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_overlay_32 (Steam Overlay Layer) Vulkan version 1.2.136, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

VK_LAYER_VALVE_steam_overlay_64 (Steam Overlay Layer) Vulkan version 1.2.136, layer version 1:
Layer Extensions: count = 0
Devices: count = 2
GPU id 	: 0 (llvmpipe (LLVM 12.0.0, 256 bits))
Layer-Device Extensions: count = 0
	GPU id 	: 1 (llvmpipe (LLVM 12.0.0, 256 bits))
	Layer-Device Extensions: count = 0

Presentable Surfaces:
GPU id : 0 (llvmpipe (LLVM 12.0.0, 256 bits)):
Surface types: count = 2
VK_KHR_xcb_surface
VK_KHR_xlib_surface
Formats: count = 2
SurfaceFormat[0]:
format = FORMAT_B8G8R8A8_SRGB
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
SurfaceFormat[1]:
format = FORMAT_B8G8R8A8_UNORM
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
Present Modes: count = 4
PRESENT_MODE_IMMEDIATE_KHR
PRESENT_MODE_MAILBOX_KHR
PRESENT_MODE_FIFO_KHR
PRESENT_MODE_FIFO_RELAXED_KHR
VkSurfaceCapabilitiesKHR:
-------------------------
minImageCount       = 3
maxImageCount       = 0
currentExtent:
width  = 256
height = 256
minImageExtent:
width  = 256
height = 256
maxImageExtent:
width  = 256
height = 256
maxImageArrayLayers = 1
supportedTransforms:
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
currentTransform:
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
supportedCompositeAlpha:
COMPOSITE_ALPHA_OPAQUE_BIT_KHR
COMPOSITE_ALPHA_INHERIT_BIT_KHR
supportedUsageFlags:
IMAGE_USAGE_TRANSFER_SRC_BIT
IMAGE_USAGE_TRANSFER_DST_BIT
IMAGE_USAGE_SAMPLED_BIT
IMAGE_USAGE_STORAGE_BIT
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
VkSurfaceCapabilities2EXT:
--------------------------
supportedSurfaceCounters:
None
VkSurfaceProtectedCapabilitiesKHR:
----------------------------------
supportsProtected = false
GPU id : 1 (llvmpipe (LLVM 12.0.0, 256 bits)):
Surface types: count = 2
VK_KHR_xcb_surface
VK_KHR_xlib_surface
Formats: count = 2
SurfaceFormat[0]:
format = FORMAT_B8G8R8A8_SRGB
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
SurfaceFormat[1]:
format = FORMAT_B8G8R8A8_UNORM
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
Present Modes: count = 4
PRESENT_MODE_IMMEDIATE_KHR
PRESENT_MODE_MAILBOX_KHR
PRESENT_MODE_FIFO_KHR
PRESENT_MODE_FIFO_RELAXED_KHR
VkSurfaceCapabilitiesKHR:
-------------------------
minImageCount       = 3
maxImageCount       = 0
currentExtent:
width  = 256
height = 256
minImageExtent:
width  = 256
height = 256
maxImageExtent:
width  = 256
height = 256
maxImageArrayLayers = 1
supportedTransforms:
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
currentTransform:
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
supportedCompositeAlpha:
COMPOSITE_ALPHA_OPAQUE_BIT_KHR
COMPOSITE_ALPHA_INHERIT_BIT_KHR
supportedUsageFlags:
IMAGE_USAGE_TRANSFER_SRC_BIT
IMAGE_USAGE_TRANSFER_DST_BIT
IMAGE_USAGE_SAMPLED_BIT
IMAGE_USAGE_STORAGE_BIT
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
VkSurfaceCapabilities2EXT:
--------------------------
supportedSurfaceCounters:
None
VkSurfaceProtectedCapabilitiesKHR:
----------------------------------
supportsProtected = false**

sorry for long comment and also for the font mess

It'd be helpful if you wrapped it between three backticks. Like this:
```
The output goes here
```

so that it's formatted like this:
The output goes here

Ok, so it seems like you're getting
Presentable Surfaces:
=====================
GPU id : 0 (llvmpipe (LLVM 12.0.0, 256 bits)):
	[...]

GPU id : 1 (llvmpipe (LLVM 12.0.0, 256 bits)):
	[...]

So you don't have the correct Vulkan drivers installed. Then it's not a Godot issue.

ok, thank you for your time ( and sorry for wasting it )
I can't update this system, it's too old
I'll come back to Godot when I've got a new computer

I don't think you need to update your system, just figure out what you have to install to get Vulkan with Nvidia GPUs working. I don't have any experience with Nvidia on Linux so I can't really help.


Manifests cleanup

One the old version of the Kubeflow addon is not needed anymore, we should do some manifests cleanup:

[x]  remove the old addon kubeflow, rename the new addon kubeflow.v1.2.0 to kubeflow
[x] do the same for the examples
[x] rename kubeflow-v1.2.0-oidc-authservice to kubeflow-oidc-authservice and update documenatation
[ ] use relative paths to git submodule contents for resources in our manifests instead of remote, e.g.: here

will be replaced with new Kubeflow version integration.


[BUG] Upgrading to WebJobs.Extensions.Storage 5.0.1 breaks Azure Function

Library name and version
WebJobs.Extensions.Storage 5.0.1
Describe the bug
Hi,
I have an Azure function app with mulitple functions and some of them use the Storage binding.
When Upgrading to v<IP_ADDRESS> I get the following 403 error even though my connectionString is corect.
I downgraded to v5.0.0 and everything seems to work again.
Expected behavior
Connection to blob storage.
Actual behavior
[2022-05-11T15:54:40.069Z] An unhandled exception has occurred. Host is shutting down.
[2022-05-11T15:54:40.071Z] Azure.Storage.Blobs: The value for one of the HTTP headers is not in the correct format.
RequestId:e50c7fae-aaae-4d93-987e-faa4a72e80e2
Time:2022-05-11T15:54:39.987Z
[2022-05-11T15:54:40.072Z] Status: 400 (The value for one of the HTTP headers is not in the correct format.)
[2022-05-11T15:54:40.072Z] ErrorCode: InvalidHeaderValue
[2022-05-11T15:54:40.073Z]
[2022-05-11T15:54:40.073Z] Additional Information:
[2022-05-11T15:54:40.074Z] HeaderName: x-ms-version
[2022-05-11T15:54:40.074Z] HeaderValue: 2021-06-08
[2022-05-11T15:54:40.076Z]
[2022-05-11T15:54:40.077Z] Content:
[2022-05-11T15:54:40.078Z]

InvalidHeaderValue
The value for one of the HTTP headers is not in the correct format.
RequestId:e50c7fae-aaae-4d93-987e-faa4a72e80e2
Time:2022-05-11T15:54:39.987Z
x-ms-version
2021-06-08

[2022-05-11T15:54:40.080Z]
[2022-05-11T15:54:40.080Z] Headers:
[2022-05-11T15:54:40.081Z] Server: Azurite-Blob/3.14.1
[2022-05-11T15:54:40.082Z] x-ms-error-code: InvalidHeaderValue
[2022-05-11T15:54:40.083Z] x-ms-request-id: e50c7fae-aaae-4d93-987e-faa4a72e80e2
[2022-05-11T15:54:40.084Z] Date: Wed, 11 May 2022 15:54:39 GMT
[2022-05-11T15:54:40.085Z] Connection: keep-alive
[2022-05-11T15:54:40.086Z] Keep-Alive: REDACTED
[2022-05-11T15:54:40.086Z] Transfer-Encoding: chunked
[2022-05-11T15:54:40.087Z] Content-Type: application/xml
[2022-05-11T15:54:40.088Z] .
Reproduction Steps

Create azure function app
Make sure WebJobs.Extensions.Storage 5.0.1 is installed
Create azure function with blob storage input
Run function

Environment
.NET SDK (reflecting any global.json):
Version:   6.0.202
Commit:    f8a55617d2
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.19042
OS Platform: Windows
RID:         win10-x64
Base Path:   C:\Program Files\dotnet\sdk\6.0.202\
Host (useful for support):
Version: 6.0.4
Commit:  be98e88c76
.NET SDKs installed:
6.0.202 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

I'm experiencing the same type of issue however downgrading to 5.0.0 does not seem to resolve my issue.
From debug.log (using local azurite emulator)
2022-05-11T12:33:36.054Z 	 error: ErrorMiddleware: ErrorName=StorageError ErrorMessage=The value for one of the HTTP headers is not in the correct format.  ErrorHTTPStatusCode=400 ErrorHTTPStatusMessage=The value for one of the HTTP headers is not in the correct format. ErrorHTTPHeaders={"x-ms-error-code":"InvalidHeaderValue","x-ms-request-id":"fbd15903-3776-47c8-835f-0852e89726a5"} ErrorHTTPBody="\n\n  InvalidHeaderValue\n  The value for one of the HTTP headers is not in the correct format.\nRequestId:fbd15903-3776-47c8-835f-0852e89726a5\nTime:2022-05-11T12:33:36.054Z\n  x-ms-version\n  2021-06-08\n" ErrorStack="StorageError: The value for one of the HTTP headers is not in the correct format.\n    at Function.getInvalidHeaderValue (C:\snapshot\_azure_azurite\dist\src\blob\errors\StorageErrorFactory.js:210:16)\n    at Object.checkApiVersion (C:\snapshot\_azure_azurite\dist\src\blob\utils\utils.js:9:45)\n    at blobStorageContextMiddleware (C:\snapshot\_azure_azurite\dist\src\blob\middlewares\blobStorageContext.middleware.js:34:21)\n    at C:\snapshot\_azure_azurite\dist\src\blob\middlewares\blobStorageContext.middleware.js:15:16\n    at Layer.handle [as handle_request] (C:\snapshot\_azure_azurite\node_modules\express\lib\router\layer.js:95:5)\n    at trim_prefix (C:\snapshot\_azure_azurite\node_modules\express\lib\router\index.js:323:13)\n    at C:\snapshot\_azure_azurite\node_modules\express\lib\router\index.js:284:7\n    at Function.process_params (C:\snapshot\_azure_azurite\node_modules\express\lib\router\index.js:341:12)\n    at next (C:\snapshot\_azure_azurite\node_modules\express\lib\router\index.js:275:10)\n    at logger (C:\snapshot\_azure_azurite\node_modules\morgan\index.js:144:5)"
From Visual Studio Console output
[2022-05-11T16:32:48.114Z] An unhandled exception has occurred. Host is shutting down.
[2022-05-11T16:32:48.114Z] Azure.Storage.Blobs: Service request failed.
[2022-05-11T16:32:48.115Z] Status: 400 (The value for one of the HTTP headers is not in the correct format.)
[2022-05-11T16:32:48.115Z] ErrorCode: InvalidHeaderValue
[2022-05-11T16:32:48.115Z]
[2022-05-11T16:32:48.116Z] Headers:
[2022-05-11T16:32:48.116Z] Server: Azurite-Blob/3.16.0
[2022-05-11T16:32:48.116Z] x-ms-error-code: InvalidHeaderValue
[2022-05-11T16:32:48.117Z] x-ms-request-id: bce9d214-5df8-49b8-9001-d71e1ae1a101
[2022-05-11T16:32:48.117Z] Date: Wed, 11 May 2022 16:32:48 GMT
[2022-05-11T16:32:48.117Z] Connection: keep-alive
[2022-05-11T16:32:48.118Z] Keep-Alive: REDACTED
[2022-05-11T16:32:48.118Z] .

@mecombem The issues seemed to be fixed by downgrading to 5.0.0 however I am also getting the error again.

If its any help I am seeing same behaviour. I have a blob input binding in a brand new project in vs2022. Running up the function gives same InvalidHeaderValue errors.  Downgrading from v5.0.1 to 5.0.0 then clean and build seems to have sorted it.

@Ansiem Thanks for reaching out to us and sharing this feedback. Looking at the error message its pretty clear that the 400 error status with Invalid Header was due to the x-ms-version: 2021-06-08 being sent by the Blob Storage SDK wasn't matching the version used by the Azurite.
This is a known issue and it is documented here.

If an incoming request has a higher API version than Azurite, Azurite will return a InvalidHeaderValue error for x-ms-version (HTTP status code 400 - Bad Request).

You can run the below command to find the version of Azurite.
azurite.exe --version
Below are the steps that I followed to fix this issue:
I deleted the contents of the below folder.
C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\Extensions\Microsoft\Azure Storage Emulator
C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator
The Storage Emulator is available as part of the Microsoft Azure SDK. You can also install the Storage Emulator by using the standalone installer (direct download).
I upgraded my Azurite version to the most recent version 3.17.1 and that resolved the issue.
npm i<EMAIL_ADDRESS>Launch Visual Studio again and test the FunctionApp. Hope this helps. Please let me know if you still face this issue. Awaiting your reply.

@Ansiem I wanted to do quick follow-up to check if you had a chance to look at my above comment. Please let us know if you need any further assistance on this. Awaiting your reply.

@navba-MSFT  - I followed your suggestion and fixed this issue, spend last half of yesterday on wondering why I was getting a 400.  I have set up many BlobTrigger functions.

@TerrySansom I am glad that my above suggestion helped in solving your issue.
@Ansiem We will now proceed with closure of this github issue. If you need any further assistance on this issue in future, please feel free to reopen this thread. We would be happy to help.


Issue with step "Test the patient diagnostic image system"

curl -X POST http://localhost:8888/openPort/8000; gives the following:

{"message":"Port 8000 is open","url":"https://ux.console.azure.com//proxy/8000/"}

But the instructions state:

The URL should be in this format: https://gateway11.northeurope.console.azure.com/n/cc-4016c848/cc-4016c848/proxy/8000/.

Going to the URL that was returned gives:

Cannot GET /proxy/8000/

May be related to Azure Cloud Shell issue:
https://github.com/Azure/CloudShell/issues/368

I also had this issue


api/build: switch to only package level targets in API.

As part of #8082, we want to be able to (1) automatically generate BUILD
files and (2) treat packages as atomic from a "upgrade / do not upgrade"
decision perspective. This is simplified by having our BUILD targets at
package granularity, since this is what the protoxform plugin operates
on.
This PR broadens the package-level treatment that was already introduced
for Go in #8003 to Python and C++. This simplifies BUILD files
significantly and opens the way to automated generation.
There is some technical debt introduced, since all visibility controls
have been removed. This is slated for reintroduction in
https://github.com/envoyproxy/envoy/issues/8491.
As a bonus (useful for BUILD file generation), also removed the
inconsistency in BUILD package target naming for packages in envoy.api.*
and envoy.type.*. E.g. //envoy/api/v2:v2 is now //envoy/api/v2:pkg.
Risk level: Low (but this will break internal builds and require BUILD
fixups to consuming projects).
Testing: bazel test //test/... @envoy_api//...
Signed-off-by: Harvey Tuch<EMAIL_ADDRESS>

CC @yanavlasov as well, who is Google Envoy importer next week.


Suggestion: Add first class TypeScript support to console apps

I am trying to built a self hosted Owin app that's straight HTML and TypeScript, but I wanted it hosted in a Console App.
I started with a Console app template in VS and added TypeScript files to it, but I didn't get the TS build options tab in the project like I get when I add TS files to Web Apps (or when using the default TS project template).
So I hacked around the project and got the imports/typescript tools version/etc. in the csproj file to get the TS tab in Project properties. But still TS seems to skip compilation on Build. I have to save every TS file for TSC to kick in and refresh the JS files. This wouldn't have been a problem if I was working on one machine. But I often Shelve my code and start on another machine, that's when I've to go back and force save every TS file to get the latest JS code.
Either I am missing something in the csproj file or VS is missing some special settings sauce! Kindly consider extending first class TS support in console app templates too!

I have since moved on to using the node toolchain and find it works perfectly for me. Closing this issue.


help: integrate the fleet_adapter_template to RMF and simulation

Hi Yado:
after reading the source code, I found a node named "robot_command_handle" will setup and run.

it is the node in the RMF_Demo project?
But I can't found any node named "robot_command_handle" in the RMF_Demo project.
another question:
the senario and step

run the office.launch.xml
run the fleet _adapter_template
but the delivery robot didn't run as I command. it seemed the navigation point didn't work.

Is there any demo instruction to run this fleet_adapter_template?
so that I can follow it and  run the simulation.
Thank you in advance.

Hi @sharensmile
The robot_command_handle node is initialized within this package.
This package is meant to be a reference for users who would like to write a fleet adapter to communicate with their own robots. The expectation of running this adapter out of the box to control the robots in rmf_demos is incorrect.
Having said that, you can modify this adapter such that the RobotClientAPI publishes fleet_state_msgs to the robots in simulation which are commanded by the slotcar plugin.
Related to this, we are currently updating the simulations in rmf_demos to use a fleet adapter that is based on this template to control the various robots. This PR https://github.com/open-rmf/rmf_demos/pull/109 has more details. You can look at the launch files there to see how to test your fleet adapter with robots in simulation.

Hi Yado,
I'm trying to connect a custom robot simulation with rmf_core using a custom fleet adapter. I was working with this template and seems all okay. When I lunch the adapter, the robot moves to the spawn_point in defined in the nav_graph but if I try to send new task with a custom panel (using a custom dashboard_config_file) the adapter finishes without showing any message or error... How can I get some information about this problem?

In addition, when I see logs comming from rmf_core dispatcher node, the bid proposal result is  "task has no submissions during bidding, Task Failed". Also when I order a task the adapter stops working. I have configured the config yaml with loop and delivery

Finally I was able to find the problem. Two nodes of nav_graph were not join. It will be great if in the future the adapter raises any message about this error.

Hi @edcogue
Apologies for the overdue response. I was away over the holidays.
Glad to hear that you found a solution to the error you were experiencing. The C++ fleet adapter does throw an error when there is a discontinuity in the navigation graph. Perhaps this information gets masked by the python bindings. I've opened a separate ticket to track this since it is different from the one originally posted here. See https://github.com/open-rmf/fleet_adapter_template/issues/6

Hi @sharensmile
The robot_command_handle node is initialized within this package.
This package is meant to be a reference for users who would like to write a fleet adapter to communicate with their own robots. The expectation of running this adapter out of the box to control the robots in rmf_demos is incorrect. Having said that, you can modify this adapter such that the RobotClientAPI publishes fleet_state_msgs to the robots in simulation which are commanded by the slotcar plugin.
Related to this, we are currently updating the simulations in rmf_demos to use a fleet adapter that is based on this template to control the various robots. This PR open-rmf/rmf_demos#109 has more details. You can look at the launch files there to see how to test your fleet adapter with robots in simulation.

Hi @Yadunund
Thank you very much!
base on your instruction, I integrated our real robot with our map to the rmf.  it can do the loop.  the robot can be loop in the Rviz. but the robot in the Gazebo standstill.
when run the demo tinybot, the Gazebo tinybot and Rviz tinybot can synchorinze well.
but why the Rviz bot can synchornize the real bot in the real world. but Gazebo standstill?
how can I synchornize the real bot in the real world with the simulated bot in Rviz and Gazebo? I think there should be some setting in Gazebo can received the poistion information from the real world.
Thank you again!

Hi @sharensmile
Really glad to hear that you were able to command your real robots with your adapter.
I would like to clarify the intended use of gazebo/ignition for RMF. These simulators are a replacement for the physical world to receive states of virtual robots and infrastructure as they react to commands issued by RMF. You should not be running a gazebo simulation and commanding real robots at the same time as you may receive duplicate states of the various systems.
But if your intention is to showcase some sort of a "digital twin" of the real world, you can do so by writing gazebo model/world plugins that will update the pose of robots in gazebo based on state updates published by your real robot/fleet adapter. These would then replace the plugins that are currently launched with the RMF demo worlds. If you're interested in working on this, you can contribute to https://github.com/open-rmf/rmf_simulation.

Closing due to inactivity. Feel free to open again if required.


Unauthorized Error

Hello,
I am receiving the following Unauthorized Error when I run ./unimrcpserver:
2022-03-31 19:21:29:698917 [INFO]   Assign Control Channel <17555ce6a6134930@speechrecog> to Connection <IP_ADDRESS>:1544 <-> <IP_ADDRESS>:38084 [0] -> [1]
2022-03-31 19:21:29:698959 [INFO]   Process RECOGNIZE Request <17555ce6a6134930@speechrecog> [1]
2022-03-31 19:21:29:699157 [NOTICE] [DG :: dgmrcp::channel] Channel::recognize
2022-03-31 19:21:29:699209 [NOTICE] [DG :: dgmrcp::channel] Building request to wss://brain.deepgram.com/v2/listen/stream?endpointing=true&interim_results=true&encoding=linear16&sample_rate=8000&channels=1&language=de-DE
2022-03-31 19:21:29:699262 [NOTICE] [DG :: dgmrcp::channel] handled RECOGNIZE request
2022-03-31 19:21:29:699294 [INFO]   Process RECOGNIZE Response <17555ce6a6134930@speechrecog> [1]
2022-03-31 19:21:29:699298 [INFO]   State Transition IDLE -> RECOGNIZING <17555ce6a6134930@speechrecog>
2022-03-31 19:21:29:699434 [NOTICE] [DG :: dgmrcp::channel] Opening websocket connection
2022-03-31 19:21:29:699577 [INFO]   Send MRCPv2 Data <IP_ADDRESS>:1544 <-> <IP_ADDRESS>:38084 [83 bytes]
MRCP/2.0 83 1 200 IN-PROGRESS
Channel-Identifier: 17555ce6a6134930@speechrecog

2022-03-31 19:21:29:862074 [INFO]   [DG :: rustls::client::hs] No cached session for DNSNameRef("brain.deepgram.com")
2022-03-31 19:21:29:862128 [INFO]   [DG :: rustls::client::hs] Not resuming any session
2022-03-31 19:21:30:017187 [INFO]   [DG :: rustls::client::hs] Using ciphersuite TLS13_AES_256_GCM_SHA384
2022-03-31 19:21:30:017686 [INFO]   [DG :: rustls::client::tls13] Not resuming
2022-03-31 19:21:30:017877 [INFO]   [DG :: rustls::client::tls13] TLS1.3 encrypted extensions: [ServerNameAck]
2022-03-31 19:21:30:017923 [INFO]   [DG :: rustls::client::hs] ALPN protocol is None
2022-03-31 19:21:30:331582 [INFO]   [DG :: rustls::client::tls13] Ticket saved
2022-03-31 19:21:30:331638 [INFO]   [DG :: rustls::client::tls13] Ticket saved
2022-03-31 19:21:30:573510 [ERROR]  [DG :: dgmrcp::channel] Failed to open WebSocket connection: HTTP error: 401 Unauthorized
2022-03-31 19:21:30:573557 [INFO]   [DG :: dgmrcp::channel] send recognition complete
2022-03-31 19:21:30:573689 [INFO]   Process RECOGNITION-COMPLETE Event <17555ce6a6134930@speechrecog> [1]
2022-03-31 19:21:30:573722 [INFO]   State Transition RECOGNIZING -> RECOGNIZED <17555ce6a6134930@speechrecog>
2022-03-31 19:21:30:573855 [INFO]   Send MRCPv2 Data <IP_ADDRESS>:1544 <-> <IP_ADDRESS>:38084 [206 bytes]
MRCP/2.0 206 RECOGNITION-COMPLETE 1 COMPLETE
Channel-Identifier: 17555ce6a6134930@speechrecog
Completion-Cause: 006 recognizer-error
Completion-Reason: Check that credentials are properly configured.

I configured the plugin-factory like this:
<engine id="Deepgram" name="libdgmrcp" enable="true">
        <param name="brain_url" value="wss://brain.deepgram.com/v2/"/>
        <param name="brain_username"<EMAIL_ADDRESS>
        <param name="brain_password" value="mypassword"/>
        <param name="language" value="de"/>
</engine>

Is there any issue? I tried using my API Key as well but it did not work.
Thanks,
Bruno

Hi Bruno,
As a quick check, can you confirm that your credentials work with our HTTP API? For example, you could try this endpoint to list the available models:
curl -u bruno@email.com:mypassword https://brain.deepgram.com/v2/models

At a glance, your config looks valid, so if the above works but the MRCP plugin doesn't, then we may have a trickier issue.

Hello Anthony,
I tried what you suggested and I received this:
{
"error":"Unauthorized",
"reason":"No information available.",
"transaction_key":"dD+Rm7umV2YgvqEkOhLokQxLoqsng0cMkDDnuxHm0rGam5rTg7p1g1GoVjlxMynOvsQ7NAJG93Ymup0Btjw4crN3uUeC47np3GxVq0us/am/4gMcxGv/Lk8U+1XrGNuyTBHWx+TmnMxtXNGq9jAWA/LolcBz+pVAJiGJ4vE4",
"request_id":"m0rJtFo0D0wclLlaP49ekWPsD8FlUHYb"
}

It works If I use my API key on this url: https://api.deepgram.com/v1/. For example, I could get all my projects running:
curl --request GET \
  --url https://api.deepgram.com/v1/projects \
  --header 'Authorization: Token <YOUR_DEEPGRAM_API_KEY>' \
  --header 'content-type: application/json'

Oh! This makes sense now. Deepgram recently launched a new version of the API, at https://api.deepgram.com/v1/ (which is what everything at https://console.deepgram.com refers to) and we're gradually migrating users away from https://brain.deepgram.com/v2. (Don't let the /v1 and /v2 fool you -- it's a new domain, so we started the version number over again).
The WebSocket protocol is identical, so things should generally work the same way, but one thing that did change is auth. The old API is expecting a header that looks like Authorization: Basic $(user:pass | base64) whereas the new API expects Authorization: Token $API_KEY. This repo hasn't been updated to work with the new auth.
The code that handles this is at https://github.com/deepgram/dgmrcp/blob/4a0d45baa4034a373b2850dccf13b04931e1ecb7/src/channel.rs#L339-L342 and https://github.com/deepgram/dgmrcp/blob/4a0d45baa4034a373b2850dccf13b04931e1ecb7/src/channel.rs#L356-L361. PR's are welcome, of course, if you need this change to unblock your work! Otherwise, we'll make sure it's on our todo list.

I changed the URL to the new API, that is the new error (404 Not Found):
2022-04-01 22:42:47:341517 [INFO]   Process RECOGNIZE Request <eb8f400e7a4f4b53@speechrecog> [2]
2022-04-01 22:42:47:341553 [NOTICE] [DG :: dgmrcp::channel] Channel::recognize
2022-04-01 22:42:47:341604 [NOTICE] [DG :: dgmrcp::channel] Building request to wss://api.deepgram.com/v1/listen/stream?endpointing=true&interim_results=true&encoding=linear16&sample_rate=8000&channels=1&language=de
2022-04-01 22:42:47:341720 [NOTICE] [DG :: dgmrcp::channel] Opening websocket connection
2022-04-01 22:42:47:341828 [NOTICE] [DG :: dgmrcp::channel] handled RECOGNIZE request
2022-04-01 22:42:47:341856 [INFO]   Process RECOGNIZE Response <eb8f400e7a4f4b53@speechrecog> [2]
2022-04-01 22:42:47:341863 [INFO]   State Transition IDLE -> RECOGNIZING <eb8f400e7a4f4b53@speechrecog>
2022-04-01 22:42:47:341890 [INFO]   Send MRCPv2 Data <IP_ADDRESS>:1544 <-> <IP_ADDRESS>:47774 [83 bytes]
MRCP/2.0 83 2 200 IN-PROGRESS
Channel-Identifier: eb8f400e7a4f4b53@speechrecog

2022-04-01 22:42:47:512300 [INFO]   [DG :: rustls::client::hs] No cached session for DNSNameRef("api.deepgram.com")
2022-04-01 22:42:47:512444 [INFO]   [DG :: rustls::client::hs] Not resuming any session
2022-04-01 22:42:47:672933 [INFO]   [DG :: rustls::client::hs] Using ciphersuite TLS13_CHACHA20_POLY1305_SHA256
2022-04-01 22:42:47:673351 [INFO]   [DG :: rustls::client::tls13] Not resuming
2022-04-01 22:42:47:673452 [INFO]   [DG :: rustls::client::tls13] TLS1.3 encrypted extensions: []
2022-04-01 22:42:47:673471 [INFO]   [DG :: rustls::client::hs] ALPN protocol is None
2022-04-01 22:42:47:675188 [INFO]   [DG :: rustls::client::tls13] Ticket saved
2022-04-01 22:42:47:989329 [ERROR]  [DG :: dgmrcp::channel] Failed to open WebSocket connection: HTTP error: 404 Not Found
2022-04-01 22:42:47:989515 [INFO]   [DG :: dgmrcp::channel] send recognition complete
2022-04-01 22:42:47:989650 [INFO]   Process RECOGNITION-COMPLETE Event <eb8f400e7a4f4b53@speechrecog> [2]
2022-04-01 22:42:47:989667 [INFO]   State Transition RECOGNIZING -> RECOGNIZED <eb8f400e7a4f4b53@speechrecog>
2022-04-01 22:42:47:989710 [INFO]   Send MRCPv2 Data <IP_ADDRESS>:1544 <-> <IP_ADDRESS>:47774 [239 bytes]
MRCP/2.0 239 RECOGNITION-COMPLETE 2 COMPLETE
Channel-Identifier: eb8f400e7a4f4b53@speechrecog
Completion-Cause: 006 recognizer-error
Completion-Reason: Check that credentials are properly configured and the requested model is valid.

I missed this before, but the other difference between the APIs is the path -- the old API uses /listen/stream whereas the new API just uses /listen (docs).
This is hardcoded at https://github.com/deepgram/dgmrcp/blob/4a0d45baa4034a373b2850dccf13b04931e1ecb7/src/channel.rs#L883 -- changing that line to just .join("listen") should fix it.
Thanks for bearing with me here -- this MRCP plugin predates the new API, and we're still in the transition phase between the old and the new APIs.

Uhuuuu! It worked, that is nice. I integrated with Asterisk, looks pretty good. I had never seen a rust code before and I wasn't very interested in learning it, so excuse me any redundancy in the code. I will create the PR next week, enjoy the weekend ;)


This file doesn't exist any more - new version released.

Hi @Yonisha, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@alancameronwills can you please verify? Thanks.

This is fine, thanks. Please pull, Glenn.

@yonisha Thanks for your contribution to Azure docs. We appreciate it.


[Help] How can I generate two tabs/worksheets for excel?

This library is for making csv files and not excel file, i dont think their is any library for angular to convert json to excel

I want to export multiple csv files as a zip/rar on a button/anchor click ... how can i do that? I tried passing an array of arrays in ng-csv directive but it didn't work.
please help.

@asafdav I have modified the code to be able to generate multiple tables by passing an object.
The object is format like this: var object = { array1: [ ], array2: []}
I wonder how I can do a demon for you?

Hi, can you add a test case and pull request?
I'll checkout locally and test it
On Fri, Oct 16, 2015 at 4:29 PM, Shaohao<EMAIL_ADDRESS>wrote:

@asafdav https://github.com/asafdav I have modified the code to be able
to generate multiple tables by passing an object.
The object is format like this: var object = { array1: [ ], array2: []}
I wonder how I can do a demon for you?
—
Reply to this email directly or view it on GitHub
https://github.com/asafdav/ng-csv/issues/90#issuecomment-148716634.

So I cannot export more than one table at this point. Is that right?

I have solved it by using a callback for ng-csv
Ability to format the data however we want is useful. :)

i have also same issue can u please tell me!!

@asafdav @shaohaolin Has the feature to export multiple tabs to CSV format been added? I'd like them to be able to open it in Google Sheets or something with:
col1  |  col2 |  col3  |  col4
--------------------------
1          4           7           10
2          5           8           11
3          6           9           12

--------------------------
[[current]csv sheet 1]  [csv sheet 2]  [csv sheet n]

@shaohaolin I cherry picked your updates for multi CSV. It doesn't create multiple tabs, nor does it take into account separate Header sets per dataset. Any updates there?

Hi , I am also looking for same feature multi csv, any updates?How do we achieve it?


New version: GrafanaLabs.Grafana.Enterprise version <IP_ADDRESS>

[X] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?
[X] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[X] Does your manifest conform to the 1.6 schema?

Microsoft Reviewers: Open in CodeFlow

Hi @OfficialEsco,
This manifest adds Apps and Features entries that aren't present in previous PR versions. These entries should be added to the previous versions, or removed from this version.
(Automated response - build 839.)


Exit editMode from own javascript than adf's own.

Hi,
Is it possible to exit editMode from example events that I define by myself than adf's own exit editMode function?
            $scope.cancelEditMode = function () {
                $scope.editMode = false;
                $scope.modelCopy = angular.copy($scope.modelCopy, $scope.adfModel);
                $rootScope.$broadcast('adfDashboardEditsCancelled');
            };

I would like to do this from my own event. What is $scope in this case?
This is what my adf-dashboard div looks like in my html:

Found the adfDashboardEditsCancelled broadcast. Closing task


Allow data output streams to be generated via custom mechanisms when given partitioning and file name

Superceded by https://github.com/apache/incubator-iceberg/pull/87


Chunk generator stuff

got the structureOverrides name from the codec for the various chunk generators, field name was structure_overrides.
other names were just copied from the type of the field/param

There are some merge conflicts from an older PR. I believe structureRegistry is better than structuresRegistry by not having the extraneous plural. There are other conflicts where either name may or may not be better, please have a look.

@sfPlayer1 addressed those issues I think. I also changed the references to stronghold in ChunkGenerator. those concentric ring positions can be used for custom structure sets in data packs and aren't just for strongholds


feat: add methods: toJson, isOfType, update,  tests and workflow setup file

Write tests for github action
Add workflow for github action

cc: @magicmatatjahu

@imabp I see that in windows testing jest cannot recognize the matches for test files. You can remove __tests__/*.test.ts, then coverage will run for every tests.


React Native Localization plugin update

Description
This will add support of tvOS for this library. Needed to override the original podspec because it didn't work with s.tvos.deployment_target    = "11.0" had to "downgrade" that to "10.0" (perhaps this is not the right fix, please let me know).
Additionally upgraded the package to its latest version.
Breaking Changes
None (afaik)
I have tested my changes on:
ReNative project directly:

[ ] ios simulator
[ ] ios device
[ ] android simulator
[ ] android device
[ ] web browser
[ ] web -e next browser
[ ] tvos simulator
[ ] tvos device
[ ] androidtv simulator
[ ] androidtv device
[ ] androidwear simulator
[ ] androidwear device
[ ] tizen simulator
[ ] tizen device
[ ] tizenmobile simulator
[ ] tizenwatch device
[ ] webos simulator
[ ] webos device
[ ] macos
[ ] windows
[ ] chromecast device

New project:

[ ] ios simulator
[ ] ios device
[ ] android simulator
[ ] android device
[ ] web browser
[ ] web -e next browser
[ ] tvos simulator
[ ] tvos device
[ ] androidtv simulator
[ ] androidtv device
[ ] androidwear simulator
[ ] androidwear device
[ ] tizen simulator
[ ] tizen device
[ ] tizenmobile simulator
[ ] tizenwatch device
[ ] webos simulator
[ ] webos device
[ ] macos
[ ] windows
[ ] chromecast device

Existing Project created with previous version of renative:

[ ] ios simulator
[ ] ios device
[ ] android simulator
[ ] android device
[ ] web browser
[ ] web -e next browser
[ ] tvos simulator
[ ] tvos device
[ ] androidtv simulator
[ ] androidtv device
[ ] androidwear simulator
[ ] androidwear device
[ ] tizen simulator
[ ] tizen device
[ ] tizenmobile simulator
[ ] tizenwatch device
[ ] webos simulator
[ ] webos device
[ ] macos
[ ] windows
[ ] chromecast device

Ahh damn, thanks @pavjacko !


Fixed TwitchClientHelper link.

Fixed TwitchClientHelper link.
Prerequisites for Code Changes

[ x ] This pull request follows the code style of the project
[ x ] I have tested this feature

Issues Fixed

Linked Wrong site. (TwitchClientHelper)

Thank you for your contribution!