unable to update plugins

Description
For many months now i have been unable to update any plugins inside atom. I am running Fedora 25 and currently running Atom 1.17.0 x64. After running the upgrade process i see a fatal error listed for all plugins and this is the same in safe mode.
Steps to Reproduce

click 'Update all' in the plugin list area

Expected behavior: [What you expect to happen]
Plugins get updated.
Actual behavior: [What actually happens]
Error messages are displayed:
Updating to<EMAIL_ADDRESS>failed.Hide output…
/bin/sh: /bin/electron: No such file or directory

gyp info it worked if it ends with ok
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| linux | x64
gyp ERR! install error
gyp ERR! stack Error: Invalid version number: undefined
gyp ERR! stack     at install (/usr/lib/node_modules/node-gyp/lib/install.js:50:21)
gyp ERR! stack     at Object.self.commands.(anonymous function) [as install] (/usr/lib/node_modules/node-gyp/lib/node-gyp.js:66:37)
gyp ERR! stack     at run (/usr/lib/node_modules/node-gyp/bin/node-gyp.js:72:30)
gyp ERR! stack     at Object.<anonymous> (/usr/lib/node_modules/node-gyp/bin/node-gyp.js:133:1)
gyp ERR! stack     at Module._compile (module.js:570:32)
gyp ERR! stack     at Object.Module._extensions..js (module.js:579:10)
gyp ERR! stack     at Module.load (module.js:487:32)
gyp ERR! stack     at tryModuleLoad (module.js:446:12)
gyp ERR! stack     at Function.Module._load (module.js:438:3)
gyp ERR! stack     at Module.runMain (module.js:604:10)
gyp ERR! System Linux 4.10.15-200.fc25.x86_64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/node-gyp/bin/node-gyp.js" "install" "--runtime=electron" "--target=undefined" "--dist-url=https://atom.io/download/electron" "--arch=x64" "--ensure"
gyp ERR! cwd /home/ura/.atom
gyp ERR! node -v v6.10.3
gyp ERR! node-gyp -v v3.2.1
gyp ERR! not ok

Reproduces how often: [What percentage of the time does it reproduce?]
100%
Versions
1.17.0 x64
Fedora 25 64bit

so i uninstalled atom and downloaded the latest rpm from the atom website. i noticed that the atom icon is missing from the fedora activities menu. when i first ran atom, it looked like the same problem persisted.. but then, by magic, after closing atom and coming back to it about 10 minutes later, suddenly all the plugins updated. i doubt it is related but github had major system problems during the same time that the update process started working.

I have had the same issue for some days.
gyp info it worked if it ends with ok
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| linux | x64
gyp http GET https://atom.io/download/electron/v1.3.15/iojs-v1.3.15.tar.gz
gyp WARN install got an error, rolling back install
gyp ERR! install error
gyp ERR! stack Error: connect ETIMEDOUT <IP_ADDRESS>:443
gyp ERR! stack     at Object.exports._errnoException (util.js:1022:11)
gyp ERR! stack     at exports._exceptionWithHostPort (util.js:1045:20)
gyp ERR! stack     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1087:14)
gyp ERR! System Linux 3.13.0-32-generic
gyp ERR! command "/opt/atom/resources/app/apm/bin/node" "/opt/atom/resources/app/apm/node_modules/node-gyp/bin/node-gyp.js" "install" "--runtime=electron" "--target=1.3.15" "--dist-url=https://atom.io/download/electron" "--arch=x64" "--ensure"
gyp ERR! cwd /home/herman/.atom
gyp ERR! node -v v6.9.5
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

My atom version is 1.17.2.

@wjs876046992 this looks like a separate issue (I've hit it too just now trying to build atom v1.18.0)

What's the verdict here?
I ran into the same (running an OLD version of Atom though)  atom-1.20.1-1.git966dfcc.fc25.x86_64
Seems like it's expectations about where electron is is false...
$ locate electron | grep bin
/usr/bin/electron
/usr/bin/electron-1.3.13
$ ll /bin/electron
lrwxrwxrwx 1 root root 26 Nov  2 13:02 /bin/electron -> /etc/alternatives/electron
$ rpm -qa |  grep electron
electron-1.6.9-1.prebuilt.fc25.x86_64
$ ll /usr/bin/electron
lrwxrwxrwx 1 root root 26 Nov  2 13:02 /usr/bin/electron -> /etc/alternatives/electron

I had to manually remove /usr/bin/electron broken link to /etc/alternatives/electron, and forcibly link it to /usr/bin/electron-#.#.# ... this feels like it will break on next upgrade.

atom-1.20.1-1.git966dfcc.fc25.x86_64

This seems like an unofficial distribution of Atom.  Make sure you are installing Atom from https://atom.io.

I had to manually remove /usr/bin/electron broken link to /etc/alternatives/electron, and forcibly link it to /usr/bin/electron-#.#.# ... this feels like it will break on next upgrade.

Thanks for this, it worked on my Fedora 25 machine as well which uses mosquito-atom from copr... FYI rather than doing the link manually, you can use alternatives --config electron to have the system do it. Probably a previously bad package update broke the link somewhere along the way.


Use provider.getStackName method to get stackname

Fixes #15

I apparently missed somethings but it seams to be fixed. Any plan to merge this?

+1, just hit this bug.


[BUG] - Docker container fails with default IPC socket location

Internal/External
External
Area
Docker
Summary
The instructions documented here do not work when the IPC socket location is not mapped to a volume.
Steps to reproduce
This works ...
docker run --rm \
  -v ipc:/ipc \
  -e NETWORK=mainnet \
  inputoutput/cardano-node

This fails ...
docker run --rm \
  -e NETWORK=mainnet \
  inputoutput/cardano-node

cardano-node: Network.Socket.bind: does not exist (No such file or directory)

System info (please complete the following information):

OS: Debian
Version: 10
Node version: 1.25.1

Additional context
You can leave it to me, I'll provide a fix.

PR: #2341

While the PR is closed, this issue still seems to be valid. At least I still encounter
cardano-node: Network.Socket.bind: does not exist (No such file or directory)
when using the latest docker tag.

Yes, there are various kinks with the upstream images, which are waiting to get fixed as part of this PR #2456
In the meantime, you can head over to nessusio/cardano-node which is the incubation space to what I propose in #2360
Comprehensive documentation is here.

Merged


EPIC: User Profiles

User Profiles Epic

Currently there is no way to edit profile information. We need to create the ability to link social profiles, build a resume, share the resume, download it, and export it.
Milestone => Epic => Issue (subtask)
This will be an Epic because there will be many subtasks. We should make this a milestone also. Milestones, when met are the finished result of epics, which are subtasks of a common goal.
Subtasks that need issues:

[ ] Create a new profile component

[ ] Implement middleware that uses oAuth, like Passport

[ ] Export information from GitHub

[ ] Create a WYSIWYG editor

[ ] Discuss using Apollo with GraphQL and Redux?

[ ] Discuss the new automated code formatter Prettier.

[ ] Integrate Commitizen and All Contributors -->

[ ] Integrate Snyk -->

[ ] Implement Backend Strategy for Profile fileds

We don't use epics in this repo - milestones serve that purpose. I've updated the User Profile milestone with this info.

Why not?
Sprint → Milestone
In Scrum, sprints are a fixed length of time during which an agreed-upon chunk of work is completed and ready to be shipped. Sprints, or “iterations”, are mirrored in GitHub with Milestones. Simply set a start and end date (typically two or four weeks), and add user stories to begin sprinting.
User Stories → GitHub Issues
User stories are high-level feature descriptions that help define benefit from a customer’s perspective. They’re often written in this format, which is intended to keep things simple and focused on business value: As a <user type>, I want <a goal> so that <benefit>.
Epics help teams plan and collaborate on product backlogs; they’re essentially just big user stories (for example, "Dashboard Redesign" would be an Epic, while "Fix NavBar" would be an issue within that Epic). You can map out big chunk of work using Epics, then add related issues to flesh it out. Issues are like subtasks of Epics.
Epics have flexible scope, so you can add, edit, and remove issues as needed. Once you’ve set up an epic, you can track it alongside your other work . Or, filter by epic to track only those issues.
Note: In contrast to Milestones, Epics are not necessarily related by time. It can take several Milestones to complete an Epic, and that’s OK!
Product backlog → Open issues without a Milestone
Your product backlog, sometimes referred to as a Master Story List, includes, well – pretty much everything. Typically ordered vertically by each issue’s business value, ours is a collection of user stories, half-baked feature ideas, things we might do in the future, technical work, and anything else. The point is to make a habit of getting stuff out of your head, and into GitHub.
Be honest with yourself, though: if it’s never going to get done, it’s best to close the issue.
Sprint backlog → Issues with a Milestone
Your sprint backlog contains the work your team has committed to tackling in a given Milestone. Your team can collaborate to add Estimates to issues (by time or complexity), requirements, and attach a Milestone. When a team member is ready for a new task, they simply filter the Board by Milestone, then drag issues from the Backlog to In Progress pipelines.

We don't do sprints.
Milestones are able to track multiple issues related to a common theme easier than a top level ticket. A top level ticket would require you to edit the ticket per each item added. There's no way to associate those tickets with each epic.
With a milestone you are able to add tickets at will and get a top level overview of all attached tickets via the milestone link (eg https://github.com/OperationCode/operationcode_frontend/milestone/14).

That's right because you don't use ZenHub, the best agile board integration for GitHub. I forgot. I guess I should disable that extension.

@rickr we need a label for milestone then. Now that you've removed the Epic label, you should think about replacing it with another name then for grouping issues.

Man that view sure was nice. Now the board is gone after removing the extension.

Again - we are not using agile here. You are free to do whatever you like but in an effort to make this repo friendly to beginners we've opted to make things as straightforward as possible.
Please read my previous comment. Milestones will do everything you'd like to do in an epic.
Here's some good documentation on milestones:
https://help.github.com/articles/about-milestones/
https://help.github.com/articles/associating-milestones-with-issues-and-pull-requests/

The purpose of this being open is to finish creating the subtasks.

Subtasks created.


Class 'JBBCode\Parser' not found in Laravel

I installed the (newly refreshed) v1.2.0 of JBBCode from packagist in my instance of Laravel via composer.  It appeared to install correctly, but I am unable to instantiate the parser (or any other) of the classes in the JBBCode namespace.
My vendor/composer/autoload_namespaces.php file appears correct:
    return array(
        'JBBCode' => array($vendorDir . '/jbbcode/jbbcode'),
    );

My instantiation in a controller is just:
    $parser = new JBBCode\Parser();

I consistently get an error of "Class 'JBBCode\Parser' not found"
I don't appear to be doing anything else weird or wrong.  Have you tested this against a Laravel install?

This comes up in google search results, so just letting people know you don't have to do that. Just use the namespaces like so:
        $parser = new \JBBCode\Parser();
        $parser->addCodeDefinitionSet(new \JBBCode\DefaultCodeDefinitionSet());


Proposal: manage sudo rules

Hi @AdSchellevis and @fichtner!
When trying to monitor OPNsense firewalls with tools like Zabbix (Agent) several tests and checks require root privileges. In case of Zabbix Agent, we are currently using the following sudo rules for basic monitoring of our OPNsense firewalls:
root@opnsense:~ # cat /usr/local/etc/sudoers.d/zabbix
Cmnd_Alias ZABBIX = \
	/usr/bin/fstat, \
	/sbin/pfctl *, \
	/usr/local/sbin/pftop *, \
	/usr/local/bin/python3 /usr/local/bin/zabbix_check_ipsec.py *
zabbix ALL=(ALL) NOPASSWD: ZABBIX

Of course, in theory it would be possible to wrap all these checks into configctl actions, but this would make it impossible to use standard monitoring templates. Especially when using Zabbix there are many monitoring templates ready-to-use for FreeBSD. The same could possibly be said for other monitoring solutions too.
So, instead of reinventing the wheel and requiring custom checks in order to properly monitor OPNsense, I'd suggest to create a MVC-based "plugin" in core to manage custom sudo rules in /usr/local/etc/sudoers.d. It would provide a similar interface like the one that was implemented for os-haproxy in order to create HAProxy configurations from the Let's Encrypt plugin (https://github.com/opnsense/plugins/blob/master/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.php). This way it would be pretty easy to manage sudo rules from other plugins that rely on this functionality.
Furthermore this new sudo plugin could replace the existing sudoers code/template in core.
I would volunteer to provide a proof-of-concept. The Zabbix Agent plugin would be the first plugin to use this new functionality in order to provide a seamless monitoring experience for OPNsense.
However, depending on your security concerns, this core "plugin" will not have a GUI, but instead would only be used by plugins and other core components in the backend only. I could understand if you don't want a GUI for this to not encourage people to deploy their custom/unsupported code on OPNsense.
On the other hand, if you don't mind, I'd build a tiny GUI to add/remove/edit sudo rules, too.
What do you think? Do you have different ideas or concerns?
Thanks for your time and consideration.

Hi Frank,
I'm not sure we really need a new facility for this, but maybe I'm missing something.
Can you explain a bit more about the use case and the standard scripts (examples) that should be allowed for zabbix?
It sounds like the sudo rules should be part of the package, if we need to register a set of files from within a directory, it might be an option to fix this in the template generation (if not 100% static).
Best regards,
Ad

Hi Frank,
For me this seems out of scope. I'm ok with shipping static files in plugins. Templating them is more difficult (we do it in core very lightly), let alone building a framework for a security issue prone use case.
Cheers,
Franco

Thanks, I'll include a static file in one of the next releases.


How to set up the grafana dashboard?

Hi, first of all thank you for this project it is awesome!
I am very new to grafana and have no experience at all.
I would like to know if you could explain a little bit the steps necessary to import your dashboard so it can be used?
Here's what I've done:
I was able to run flexlm_exporter and I can access the metrics at localhost:9313/metrics  via my web browser.
I installed a grafana server and I am able to login correctly.
I was able to import your dashboard using the ID from grafana website.
But I don't know how to connect them.
I tried creating a new data source of prometheus and configured the url to be localhost:9319/metrics but when I enter the dashboard it says no data.
Is this correct?
should I do something else?
Thank you very much

Hi @ilesser,
Sorry for the delay. You are missing the Prometheus server here. You have to setup one prometheus server, and configure there this exporter. Once you have the metrics on the prometheus server side, you can configure it as a grafana datasource, see here.
Closing this, but don`t hesitate to re-open if you have another question.

Hi @mjtrangoni ,
I'll give it a try during the week and let you know.
Thanks for the answer!


GSD Request

--- GSD JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from v5.6 to before v5.10.85",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a70d9245759a48e57bb1dc9f63213dcf3017db32",
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1089dac26c6b4b833323ae6c0ceab29fb30ede72"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "a70d9245759a48e57bb1dc9f63213dcf3017db32",
      "note": "introduced"
    },
    {
      "type": "commit",
      "value": "1089dac26c6b4b833323ae6c0ceab29fb30ede72",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "ASoC: codecs: wcd934x: handle channel mappping list correctly\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.10.85 by commit 1089dac26c6b4b833323ae6c0ceab29fb30ede72, it was introduced in version v5.6 by commit a70d9245759a48e57bb1dc9f63213dcf3017db32. For more details please see the references link."
}
--- GSD JSON ---

This issue has been assigned GSD-2021-1002515


Status updates

Updated to v0.3.0 of addon-framework
addon-framwork has code to do status from manifestwork
updated probers in volsync addon controller to pull out
installedCSV from operator subscription
Removed obsolete controller that was previously created
to self-manage status

Signed-off-by: Tesshu Flower<EMAIL_ADDRESS>

/retest

/retest

/lgtm


[ValuedTextInput] Hover not working properly

Currently
Hovering the component doesn’t trigger the hover styling of the label part of the this component:

Wanted
Hovering any part of the component should trigger the hover styling for the whole component:

We still have an issue when the input hasError:


💡 [FEATURE] -

Idea Contribution

[X] I have read all the feature request issues.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Explain feature request
I would like to add the resources that is related to the competitive resource handbokk in C language

Explain your solution
I will create a separate link for each topic where the user can read the details or the content in the book
Any alternative approaches/features
I would attach the drive link or will upload the contents as a pdf
Additional Context
No response

Where do you plan to add it>

@jfmartinz would like to add it in a separate folder where the competitive programming resources will be updated in the folder


Paket & FAKE vs Ionide

CC: @matthid @forki @enricosada @isaacabraham
Hey
I have one big question about UX for Paket/FAKE and Ionide. At the moment we have separate extensions for FAKE and Paket suport - idea behind that (especially for Paket) was that it would enable users to get good Paket/FAKE experience even if they are not F# developers and don't want F# tooling installed on their machine - this was especially important in pre-SDK times, when getting F# installed was not always simple.
However, @matthid work in FSAC (https://github.com/fsharp/FsAutoComplete/pull/402) and his ideas for future improvements (https://twitter.com/matthi__d/status/1138403342516989955) show us that we can provide way better UX when we integrate tools. Working on things in FSAC also potentially allows other editors to implement similar support for those tools.
So the big question is - do we want to keep separate extensions for Paket and FAKE, or should we just bundle it together, and work on new features on FSAC side? Maybe we should bundle just FAKE - using FAKE without F# tooling installed is silly idea anyway, and keep Paket separated?

Maybe we should bundle just FAKE - using FAKE without F# tooling installed is silly idea anyway, and keep Paket separated?

yes indeed FAKE tooling is just duplicating a lot and conflicting as it works on the same files...
Regarding Paket I'm not sure. In theory it is completely separate, in practice FAKE 5 now depends on paket.core so the dependency is already there. So I'd say we could just use it and simplify our life?
From a users perspective I don't care too much but I'd prefer a single install and have all the stuff just work. If multiple extensions I'd expect them to work well together. So ...

My 2 cents: Paket is not only used for F# projects. I use it in many projects that have no F# in them. Some users might not want to install Ionide to get Paket support?

Why wouldn't you want to install ionide? It's not that huge dependency Imho
Robert Jeppesen<EMAIL_ADDRESS>schrieb am Mi., 12. Juni 2019,
07:41:

My 2 cents: Paket is not only used for F# projects. I use it in many
projects that have no F# in them. Some users might not want to install
Ionide to get Paket support?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ionide/ionide-vscode-fsharp/issues/1119?email_source=notifications&email_token=AAAOANGLXRHE5OY4IC3VUHTP2CEB5A5CNFSM4HW5L2QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXPJ3AA#issuecomment-501128576,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAOANDYX7YOOZG4HVL3D3DP2CEB5ANCNFSM4HW5L2QA
.

I was thinking a C# dev might not even know about Ionide?

yeah, but maybe VS Code can recommend when you have .dependencies file in project

I'd like to keep paket one separate, Ionide/FSAC loads, then uselessly hog memory (Because it trig on .sln files) when opening big C# projects.
The result is that I tend to disable the extension in folders with C# code only, but we still use paket everywhere and the extension is a nice to have.
The Fake & Ionide split is pretty artificial I agree, I don't see any use of one without the other.
VSCode support extensions that are bundles, I think the main F# one should be a bundle of paket + FSAC/Ionide + Fake (whatever the exact split of extensions is) so that there is no need to hunt for other extensions. It could also allow things like F# language coloring to be in separate extensions from the FSAC/LSP part for example.

I tend to agree with Julian.
Paket should be a separate extension.
But ionide and paket extensions can communicate on events.
Probably paket should be an LSP too, with syntax and commands
Not sure about FAKE, but instead of include it in FSAC, it can be an external process to call to list targets, so no dep of FSAC.
Ideally FAKE should support a builtin way to list targets, and we read that (but external process allow to support older FAKE)
And favor a bundle if possible
From mobile
--
Enrico Sada
@enricosada

Da: Julien Roncaglia<EMAIL_ADDRESS>Inviato: mercoledì, giugno 12, 2019 2:23 PM
A: ionide/ionide-vscode-fsharp
Cc: Enrico Sada; Mention
Oggetto: Re: [ionide/ionide-vscode-fsharp] Paket & FAKE vs Ionide (#1119)
I'd like to keep paket one separate, Ionide/FSAC loads, then uselessly hog memory (Because it trig on .sln files) when opening big C# projects.
The result is that I tend to disable the extension in folders with C# code only, but we still use paket everywhere and the extension is a nice to have.
The Fake & Ionide split is pretty artificial I agree, I don't see any use of one without the other.
VSCode support extensions that are bundles, I think the main F# one should be a bundle of paket + FSAC/Ionide + Fake (whatever the exact split of extensions is) so that there is no need to hunt for other extensions. It could also allow things like F# language coloring to be in separate extensions from the FSAC/LSP part for example.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/ionide/ionide-vscode-fsharp/issues/1119?email_source=notifications&email_token=AABD6KZWKNUXGTQL6VSPSBDP2DTEXA5CNFSM4HW5L2QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXQHK4Q#issuecomment-501249394, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AABD6KZGFWCJCGMHLKZWJILP2DTEXANCNFSM4HW5L2QA.

Not sure about FAKE, but instead of include it in FSAC, it can be an external process to call to list targets, so no dep of FSAC. Ideally FAKE should support a builtin way to list targets, and we read that (but external process allow to support older FAKE)

Sadly it is not about listing targets but about basic tooling support (autocomplete and basic stuff is not working well today imho).
If there is a good way to communicate between plugins than I think having two extensions is OKish as long as the "default installation" installs a bundle containing everything (Paket & Fake & Ionide) just as suggested

I'd like to keep paket one separate, Ionide/FSAC loads, then uselessly hog memory (Because it trig on .sln files) when opening big C# projects.
The result is that I tend to disable the extension in folders with C# code only, but we still use paket everywhere and the extension is a nice to have.

That is imho not really a reason to split, more a reason to fix that particular issue ;)
Especially when working on C# projects there is no reason for Ionide to slow down the system. But I think that is off-topic here.

Especially when working on C# projects there is no reason for Ionide to slow down the system. But I think that is off-topic here.

I don’t think it should - yes, it will start, read sln, attempt to parse project files, fail because those are C# files... and then do nothing, don’t think it will use lot of memory

yes indeed FAKE tooling is just duplicating a lot and conflicting as it works on the same files...

Huh? FAKE plugin is just bunch of helpers that are used to execute FAKE, it doesn’t provide any in-editor features

Huh? FAKE plugin is just bunch of helpers that are used to execute FAKE, it doesn’t provide any in-editor features

Yes. But logically https://github.com/fsharp/FsAutoComplete/pull/402 belongs to the FAKE extension. This is the reason for this discussion after all?

Sadly it is not about listing targets but about basic tooling support (autocomplete and basic stuff is not working well today imho).

The only strange thing I have when working with FAKE is that when updating the deps, I need to close and re-open the .fsx file other than that I have the same experience as when writing to a .fs file (inside a project).
Also, if the "autocomplete and basic stuff" doesn't work properly it's probably not specific to FAKE but more to scripting with .fsx files and so it belongs to Ionide extension and FSAC.
For me VSCode-FAKE extension, can/should be a standalone if it provides extra feature than editing support which belongs to Ionide. For example, if the VSCode-FAKE allow something like that:

User do Ctrl + P > "Run fake"
FAKE list all the possible target in a select box
User choose one target
FAKE run the selected target

@MangelMaxime I guess that is mainly because you have become used to the limitations. For new users this is just bad UX:

I have to run fake before getting any tooling support
I have to add #load "intellisense.fsx" for any tooling support
I get tooling support for full framework while FAKE actually runs on netcore/netstandard
I have to add #r "netstandard" to not have everything underlined with red squiggles. This workaround doesn't even work on all platforms.

It is not easy to solve those issues in the FAKE plugin

@matthid Oupsy indeed I totally forget about these issues and was thinking πart of them was required even for running FAKE.
So it's not that easy to categorise indeed :)

It is not easy to solve those issues in the FAKE plugin

That's correct - those things need to fixed in FSAC. As I've mentioned FAKE plugin is just set of helper commands - it doesn't have any access to FSAC and it's hard to imagine good architecture where it would have access to FSAC/language features.
So my proposal would be:

Keep Paket plugin separated - it just makes sense to use Paket without F#, so one extension shouldn't require other
Deprecate FAKE extension and provide its features in F# extension - using FAKE in VSCode without F# installed doesn't make sense, we also need to make sure editor features powered by FSAC work well with F# script so there already exists coupling between both.

FAKE integration improvements are tracked in https://github.com/ionide/ionide-vscode-fsharp/issues/1144


Build error for AnalysisBrowser on Dev 15 build 15.0.25826.0

        private static string GetTypeName(object item) {
            if (item == null) {
                return "null";
            } else if (item is string) {
                return "string";
            } else if (item is Dictionary<string, object>) {
                return "dict(str -> object)";
            } else if (item is List<Dictionary<string, object>>) {
                return "list(dict)";
            } else if (item is List<object>) {
                return "list(object)";
            } else if (item is Dictionary<string, object>[]) { // this line doesn't compile
                return "tuple(dict(str -> object))";
            } else if (item is object[]) {
                return "tuple(object)";
            } else {
                return item.GetType().Name;
            }
        }

I did some test in a separate console app, and it looks like we could replace that problematic condition with this:
typeof(Dictionary<string, object>[]).IsAssignableFrom(item.GetType())

It's rare to see a breaking change like this. I could file it in roslyn github, unless you happen to have talked to them already.

I haven't spoken to them - go ahead and file it. There's no reason for that to break.

Filed https://github.com/dotnet/roslyn/issues/14785

Does it work if you use an alias?
using Dict = Dictionary<string, object>[];
...
if (item is Dict) ...

No, but this compiles:
using Dict = System.Collections.Generic.Dictionary<string, object>;
...
if (item is Dict[]) ...

This has been fixed in the compiler.


update is_ros flag

Why do we need this change? :thought_balloon:
Update is_ros field from string to boolean as Puptoo is now sending boolean value.
Ref - ESSNTL-4611
:guardsman: Checklist :dart:

[X] Bugfix
[ ] New Feature
[ ] Refactor
[ ] Unittests Added
[ ] DRY code
[ ] Dependency Added
[ ] DB Migration Added

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (edcf414) 72.98% compared to head (85c3a58) 72.98%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #342   +/-   ##
=======================================
  Coverage   72.98%   72.98%
=======================================
  Files          29       29
  Lines        1377     1377
=======================================
  Hits         1005     1005
  Misses        372      372

Flag
Coverage Δ

unittests
72.98% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

ros/lib/utils.py
84.97% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Use shared Jenkins build feature

This uses alphagov/govuk-puppet#5611 to build this project.
https://trello.com/c/iDWjE1Vz

👍


Document how the abi-coder package works

Most of the code for the abi-coder package is undocumented. Since it has several moving parts in different places, it makes it tricky to navigate the codebase when the need for maintenance or a bug fix arises.
I think we should add at least some basic documentation (maybe in the readme) outlining the encoding/decoding flow, which would make navigating and understanding the code easy.

@Dhaiwat10 Are you still working on this one?

@danielbate Hey mate, missed your comment on the issue. No I unfortunately completely forgot about this issue and never started working on it. Feel free to take it if you want!

No worries man, ty for the update 🙌🏻


Translations ( with context ) Simple CRUD UI

Add new page Renovation Translation Tool.. ( accessible by http://<IP_ADDRESS>:8000/app/renovation_translation_tool ) ✅
Read existing translations ✅
Create New translation ✅
Edit existing translations ✅
Delete a translation ✅
Docs ✅

@assemmarwan @e-lobo should we sort this based on the language code rather than the name of the language ? It's hard to find Arabic lol 😄

@assemmarwan @e-lobo should we sort this based on the language code rather than the name of the language ? It's hard to find Arabic lol 😄

refactored 👍


System.Runtime.Remoting.Lifetime

System.Runtime.Remoting library started to be supported with .net core 3.1.  The supported version does not have the System.Runtime.Remoting.Lifetime namespace. Therefore ILease and ISponsor interfaces are not available.

@joperezr is this something you can help with?

Not sure what you mean by it being supported in 3.1 but as you can see on the closed issue https://github.com/dotnet/runtime/issues/29784 we intentionally decided not to bring Remoting into Core. It is possible that with the effort put in for wpf and winforms for 3.0 some small part of remoting was brought back but only for the closure of those technologies.

Thanks for your message. I think, i was able to use this library because of .NET Platform Extensions.


Trouble generating powershell.inc using the msbuild target from internals.md

Hi there, I am the maintainer of the powershell package for Arch Linux.
I was just working on updating the PKGBUILD for the latest version of dotnet, and encountered the following error message:
Unhandled Exception: System.ArgumentException: Cannot find the file that contains the reference list. The path '[build directory]/src/TypeCatalogGen/powershell.inc' doesn't exist.

After closer inspection, it seems that powershell.inc is not generated by the given msbuild target any more.
Is this an error on my end, or has the build process changed?
Steps to reproduce
Following the steps in docs/building/internals.md
dotnet msbuild src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj /t:_GetDependencies "/property:DesignTimeBuild=true;_DependencyFile=$(pwd)/src/TypeCatalogGen/powershell.inc" /nologo

Expected behavior
powershell.inc gets generated at src/TypeCatalogGen/powershell.inc.
Actual behavior
Powershell.inc is not created, but no errors are reported.

HI @kylesferrazza! How are you building PowerShell itself? I'm not very savvy on .inc files, but have you tried Start-PSBuild <other options> -TypeGen?

@kylesferrazza The change is in .Net Core. Please see code and comments
https://github.com/PowerShell/PowerShell/blob/master/build.psm1#L1922-L1940

@iSazonov thanks! That fixed it.

I will update the document internals.md. Will close this issue along with the doc update.

@kylesferrazza If you have automatically build indicator we could add it in our readme.md to see Arch Linux night build status.


image build: use cmake

Closes https://github.com/bitcoin-dev-project/warnet/issues/672
Seems to be working for me so far locally, will test a few other options as well.
Should we add a test to CI for this? It might just take too long to run...

We do need this, but it will break rebuilding <= v28.0 images...
I think we should simply add a new dockerfile with this in. When combined with https://github.com/bitcoin-dev-project/warnet/pull/669 having multiple dockerfiles becomes easy to handle IMO. To build v28.0 you'd just run:
docker buildx bake bitcoin-28

and for >28.0 you'd do:
docker buildx bake bitcoin-29
# or perhaps we can get working...?
docker buildx bake <commit sha>

and let the bake magic handle which dockerfile is used for you.

Ah brilliant mate. Will review baker first then rebase this. 👨🍳


approximations of Sin/Log2/Exp2

approximations are tight up to:

1e-14 abstol for sin on [-pi/2, pi/2]
2e-12 abstol for log2 on [0.5, 1.0]
1e-16 abstol for exp2 on [-1/32, 1/32], scales with same reltol outside until clipping occurs

Approximations were created using sollya and remez algorithm closely to what was described in
https://github.com/ARM-software/optimized-routines/tree/8928e471b062b008717c9c2958240c446317de53/math.
Without immediately obvious analogs of frexp/ldexp for fast and overflow-resistant base-2 integer exponent extraction/injection resorted to manually scale powers of two up to 64 in a loop for Exp2, and manually multiply by powers of two up to 64 in a loop for Exp2. Guess its a matter if discussion what we allowed to do here to make it better.

Tests failing.


56: identify components with refs as impure

This fixes #56, skips over components that render with a ref.

Thanks!


[Feature Request] Summary Page for Notifications

I know we have the Activity Steams. These are nice. But they show everything. Right?
I'm already inundated with email and although we have notifications setup in hipchat, they feel too passive for me not to miss something happening on the boards.
I wish there was a way I could go to an inbox-like page with summary of notifications I have received in the last few days, or they could pile up until dismissed. Some kind of icon/visual reference to the count by my login would really round out the notifications feature.

Reference #752

With the last development branch, there is now "web notifications" similar to Github and instead of receiving emails you have a list of notifications in the user interface. Then you can mark everything a read...


Need Help Customizing Relationship Field Labels in Filament AutoResource

I'm encountering a problem with customizing column labels for relationship fields in a Filament resource. Specifically, I'm using the getColumnsOverwrite method to modify the columns displayed in tables, forms, and infolists. However, when attempting to modify the labels for relationship fields such as users.name and category.name, the changes don't seem to take effect as expected.
Sure, here's a description of your issue that you can use to ask the community:
Expected Behavior:
I expect that by specifying custom labels using the label method for relationship fields in the getColumnsOverwrite method, the column labels in the generated views (tables, forms, etc.) should be updated accordingly.
Actual Behavior:
Despite specifying custom labels for relationship fields, such as users.name and category.name, using the label method in the getColumnsOverwrite method, the column labels remain unchanged in the generated views. The labels continue to display the default relationship field names (users.name and category.name) instead of the specified custom labels.

@SouhailBouaouiss, I could not understand what you are trying to do. I think it's not possible to set custom labels with filament auto panel without some kind of trick.
Can you share a code example of what you are trying to do?

In my database schema, I have a column named category_id, which serves as a foreign key referencing the id column in the categories table. To display the corresponding category name instead of the category ID in my application, I have established a relationship between the category_id column and the categories table But I can not get the category name instead of the category id in the table.

I think you cannot do that. You are trying to overwrite the column category.id with category.name, and this does not work. You can only overwrite columns with the same name. Or you can add new columns with the trick described at https://github.com/miguilimzero/filament-auto-panel/issues/1.
The auto panel tries to guess the relationship column here in case you want to customize: https://github.com/miguilimzero/filament-auto-panel/blob/main/src/Generators/AbstractGenerator.php#L105-L123


Reduce fiat -> crypto conversion rate cache TTL

Checklist:

[x] Test your work and double-check to confirm that you didn't break anything

Description:

Reducing cache time from 30 minutes to 2 minutes
I don't really see any need for polling because this util already caches responses for a set period of time and only makes a request to the data service when:

a component needs the conversion rate
and
the cache has expired

@jordajm polling would be for realtime reactive updates. That isn't critical for v1, tho.

Ahh ok, right, this depends on the user interacting with the app somehow to cause components to re-render in order to update pricing - so in the case where a user is sitting on a page without doing anything, polling would allow the prices to stay fresh. Makes sense.
Pls don't merge this yet and I'll add that to this PR.


Document.sourceUri()

Add an accessor method sourceUri to retrieve the final (in case of redirects) URI from which the document was parsed.

(Not sure why this is not marked as merged. It is.)

Cool.

On Apr 7, 2015, at 9:17 PM, Jonathan Hedley<EMAIL_ADDRESS>wrote:
Closed #306 https://github.com/jhy/jsoup/pull/306.
—
Reply to this email directly or view it on GitHub https://github.com/jhy/jsoup/pull/306#event-275850469.


Add 'copy to clipboard' button.

Describe the improvement
Having a 'copy to clipboard' button for the code/configuration snippets in the docs would be a nice enhancement.

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Compiling on macOS fails

hey,
If I try to compile tesseract-sys I get this error:
   Compiling tesseract-sys v0.5.5 (/private/tmp/tesseract-sys)
error: failed to run custom build command for `tesseract-sys v0.5.5 (/private/tmp/tesseract-sys)`

Caused by:
  process didn't exit successfully: `/private/tmp/tesseract-sys/target/debug/build/tesseract-sys-c7abc7d9ae9dd385/build-script-build` (exit status: 101)
  --- stdout
  cargo:rustc-link-lib=tesseract

  --- stderr
  /usr/local/include/tesseract/publictypes.h:33:1: error: unknown type name 'constexpr'
  /usr/local/include/tesseract/publictypes.h:38:1: error: unknown type name 'constexpr'
  /usr/local/include/tesseract/publictypes.h:40:1: error: unknown type name 'constexpr'
  /usr/local/include/tesseract/publictypes.h:45:1: error: unknown type name 'constexpr'
  /usr/local/include/tesseract/publictypes.h:33:1: error: unknown type name 'constexpr', err: true
  /usr/local/include/tesseract/publictypes.h:38:1: error: unknown type name 'constexpr', err: true
  /usr/local/include/tesseract/publictypes.h:40:1: error: unknown type name 'constexpr', err: true
  /usr/local/include/tesseract/publictypes.h:45:1: error: unknown type name 'constexpr', err: true
  thread 'main' panicked at 'Unable to generate public types bindings: ()', build.rs:68:10
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

My understanding is that that bindgen is trying to compile the "wrapper_capi.h" as a C file, but "constexpr" is C++.
I installed tesseract via "brew install tesseract".
tesseract-sys v0.5.5
tesseract v4.1.1
clang v12.0.5
rustc v1.54.0-nightly
macOS v11.4
Let me know if you need any further information.
Thanks!

Hi @sportfloh,
I think you're hitting this issue
https://github.com/ccouzens/tesseract-sys/issues/4
which has been reported to rust-bindgen here:
https://github.com/rust-lang/rust-bindgen/issues/1948
If I remember correctly the issue comes from the current Mac version of clang being weird.
The solution (if you're happy to use brew) is to install brew's clang
brew install llvm tesseract leptonica

And then you need to set a couple environment variables before running your build:
PATH="/usr/local/opt/llvm/bin:$PATH" BINDGEN_EXTRA_CLANG_ARGS='-I"/usr/local/Cellar/tesseract/4.1.1/include" -I"/usr/local/Cellar/leptonica/1.80.0/include"' cargo test

Hope that helps,
Chris

@ccouzens thanks! That works.
Sorry for not searching the closed issues.
Cheers!

No worries- it's nice to see people find my project useful enough to reach out 🙂


Processing a list of prompts from a file

I don't know if this is already on the roadmap, if it has been suggested before, or maybe it's even already possible (if so, apologies) but one feature I'd like to see is the possibility to load a list of prompts from a text file and have them processed in sequence. I imagine this could just be a text file with each line being a "dream prompt". This would be very useful when trying to generate a lot of images with slight prompt variations.

I think that invoking the dream.py from another batching.py could be a solution to easily script, batch process prompts for small variation, execute in painting or image enlargement using stripes technics, automate image2image processing.
Is there style to style (without prompt) feature to stable-diffusion?

It can already do that. Run the script with from_file argument like so
python scripts/dream.py --from_file="path/to/file"

I've added instructions to the README documentation. Thanks for bringing it up!


[ci] Move TypeScript tests into separate job

As of right now test_static is the longest running job with typescript using up most of the time. This time will only go up with increasing type coverage.
I moved it into a separate job. To not starve the available parallel jobs I removed the material-ui-x jon which only had redundant tests. With the exception of @material-ui/icons test:built-typings all tests are already covered by test:coverage. At least it appears that way from the glob pattern packages/**/*.test.js but maybe I'm missing something.
@material-ui/icons test:built-typing was moved into test_unit.
To be mergable someone with repo admin access needs to remove test_material-ui-x from the required checks and replace it with test_types.
Edit: Looks good though test_types is still the slowest. Maybe we need to take a look into composite projects for typescript but this is a good enough start.

Jest has this built-in and would make sense for PRs i.e. only run changed on PRs but full suite on master. Anything else would require a lot of work.

@oliviertassinari could you update the required checks for the repo? I don't have permissions.

Sure!


Allow Info.plist override by environment variable.

Goal
This is the only configuration option that doesn't yet have an environment variable that can be used to set the value. If you need to call upload_symbols_to_bugsnag in many places it can dirty up your Fastfile.

This change would allow one ENV setting to apply to all of those callsites.
Design
This is consistent with the rest of the existing options.
Changeset
Added a new environment variable.
Tests
Not tested at all.
Discussion
Alternative Approaches
Not making this change would leave config_file: argument as the only way to override the Info.plist file to be used.
Outstanding Questions
Linked issues
Review
For the submitter, initial self-review:

[ ] Commented on code changes inline explain the reasoning behind the approach
[ ] Reviewed the test cases added for completeness and possible points for discussion
[ ] A changelog entry was added for the goal of this pull request
[ ] Check the scope of the changeset - is everything in the diff required for the pull request?
This pull request is ready for:

[x] Initial review of the intended approach, not yet feature complete
[x] Structural review of the classes, functions, and properties modified
[x] Final review

For the pull request reviewer(s), this changeset has been reviewed for:

[ ] Consistency across platforms for structures or concepts added or modified
[ ] Consistency between the changeset and the goal stated above
[ ] Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
[ ] Usage friction - is the proposed change in usage cumbersome or complicated?
[ ] Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
[ ] Concurrency concerns - if components are accessed asynchronously, what issues will arise
[ ] Thoroughness of added tests and any missing edge cases
[ ] Idiomatic use of the language

Hi @shepting thanks for the PR! We will look into this.

Hey @shepting, this has been addressed in v2.0.0. You can now set a config_file via environment variable BUGSNAG_CONFIG_FILE. Note you can also override the API key/release stage that's extracted from the config_file by setting the input in Fastfile, or the respective environment variable.

Thank you!


Adding more type of button in button section

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

@piyushkumar12111111 We will be coming up with new button designs within 2-3 days. Wait till then

Currently we are not assigning any design related issues as were are working on app design .After it get's completed we will raising issue regarding that .So, I am closing this issue , till then you can find some other bug or enhancement in the app .


fix(css/parser): Fix parsing of math expression in hsl

Description:
Related issue:

https://github.com/vercel/turbo/issues/2356

cc @alexander-akait Can you take a look?

@kdy1 Yeah, we have bugs with var(...)/env() parsing, looking at this


iOS: Unable to Select Full-sized Album Image

If the demo apps cannot help and there is no issue for your problem, tell us about it
Please, ensure your title is less than 63 characters long and starts with a capital
letter.
When I try selecting an album image on iOS, it selects the album thumbnail instead of the actual full-sized image. However, the same code works fine on Android.
Which platform(s) does your issue occur on?

iOS
Version 3.4.1
Device (iPhone 6, iOS 11.2.5, but the issue occurred on newer phones as well)

Please, provide the following version numbers that your issue occurs with:

CLI: 3.4.2
Cross-platform modules: 3.4.0
Runtime(s): 3.4.1 for both Android and iOS
Plugin(s):

Dependencies:
"@angular/animations": "~5.2.0",
"@angular/common": "~5.2.0",
"@angular/compiler": "~5.2.0",
"@angular/core": "~5.2.0",
"@angular/forms": "~5.2.0",
"@angular/http": "~5.2.0",
"@angular/platform-browser": "~5.2.0",
"@angular/platform-browser-dynamic": "~5.2.0",
"@angular/router": "~5.2.0",
"email-validator": "^1.1.1",
"nativescript-angular": "^5.2.0",
"nativescript-background-http": "^3.1.0",
"nativescript-bitmap-factory": "^1.7.1",
"nativescript-camera": "^3.2.1",
"nativescript-cfalert-dialog": "^1.0.5",
"nativescript-facebook": "^2.1.0",
"nativescript-geolocation": "^4.2.2",
"nativescript-google-maps-sdk": "^2.4.3",
"nativescript-imagepicker": "^4.0.1",
"nativescript-iqkeyboardmanager": "^1.2.0",
"nativescript-permissions": "^1.2.3",
"nativescript-phone": "^1.3.1",
"nativescript-pro-ui": "^3.3.0",
"nativescript-theme-core": "~1.0.4",
"nativescript-web-image-cache": "^4.2.2",
"reflect-metadata": "~0.1.8",
"rxjs": "~5.5.2",
"tns-core-modules": "^3.4.0",
"zone.js": "~0.8.2"
devDependencies:
"@ngtools/webpack": "~1.9.1",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"copy-webpack-plugin": "~4.3.0",
"css-loader": "~0.28.7",
"extract-text-webpack-plugin": "~3.0.2",
"lazy": "1.0.11",
"nativescript-dev-typescript": "~0.6.0",
"nativescript-dev-webpack": "^0.9.1",
"nativescript-worker-loader": "~0.8.1",
"raw-loader": "~0.5.1",
"resolve-url-loader": "~2.2.1",
"typescript": "~2.6.2",
"uglifyjs-webpack-plugin": "~1.1.6",
"webpack": "~3.10.0",
"webpack-bundle-analyzer": "^2.9.1",
"webpack-sources": "~1.1.0",
"@angular/compiler-cli": "~5.2.0"
Please, tell us how to recreate the issue in as much detail as possible.
Using the code below, I am able to prompt the user whether they want to upload an image or take a photo, then display their selected images on the screen.
HTML
<Button *ngIf="input.images.length === 0" height="{{photoButtonHeight / scale}}" text="Attach Photos" (tap)="cameraOrAlbum()" class="uploadButton"></Button>
<StackLayout *ngIf="input.images.length > 0" orientation="horizontal" class="photostack" >
    <ScrollView #scrollView orientation="horizontal" style="width: 90%;">
      <StackLayout orientation="horizontal" style="height: 95%">
        <StackLayout *ngFor="let image of input.images" height="{{photoStackHeight}}" width="{{photoStackHeight * 1.25}}" marginLeft="4"
        >
          <Image src="{{ image.image }}" stretch="aspectFill"></Image>
        </StackLayout>
      </StackLayout>
    </ScrollView>
    <Button #plusButton (tap)="cameraOrAlbum()" (loaded)="setStackHeight()" text="+" ios:style="background-color: #00aeef; color: #ffffff; height: 93%; margin-left: 1%; margin-right: 1%" android:style="background-color: #00aeef; color: #ffffff;"></Button>
  </StackLayout>

Typescript File:
  public cameraOrAlbum() {
    dialogsModule.action("I want to...", "Cancel", ["Take a picture.", "Upload from my albums."])
    .then(function(result) {
      if (result === "Take a picture.") {
        this.uploadPhoto();
      } else if (result === "Upload from my albums.") {
        this.uploadMultiple();
      }
    }.bind(this));
  }

  public uploadMultiple() {
    let context = imagepicker.create({mode: "multiple"});
    startSelection(context, this);
  }

function startSelection(context, that) {
  context
  .authorize()
  .then( () => {
    return context.present();
  }).then(selection => {
    selection.forEach(selected => {
      changeSourceAndSave(selected, that)
    });
  }).catch(function(e) {
    console.log(e);
  });
}

function changeSourceAndSave(imageAsset, that) {
  imageSource.fromAsset(imageAsset).then(res => {
    console.log(JSON.stringify(res));
    let imageObj = createImageObj();
    imageObj.image = changeSource(res)
    saveImage(res, that, imageObj)
  })
}

function changeSource(res) {
  return "data:image/png;base64," + res.toBase64String("jpeg");
}

function saveImage(res, that, imageObj) {
  let folder = fs.knownFolders.documents().path;
  imageObj.imageName = that.placeId + "&&" + that.userId + "&&" + that.input.images.length + ".png";
  imageObj.imagePath = fs.path.join(folder, imageObj.imageName);
  if (res.saveToFile(imageObj.imagePath, "png") ) {
    that.input.images.push(imageObj)
    console.log(that.input.images.length);
  }
}

function createImageObj() {
  return {
    image: "",
    imagePath: "",
    imageName: ""
  }
}

Thanks for your time, and I apologize if it's a simple mistake - I've looked through the Github readme and searched for whether other users had a similar issue, but couldn't find anything.

I fixed my issue - rather than using the same code for both camera and album images, album image assets should be grabbed with .getImage() rather than .fromAsset().


Improve workflow for inviting new users

Admin users would like a setting on importer to optionally send email invites.
They're thinking they want to import people, do some manual data cleaning,
and THEN send email invites.
So, if there were a "skip email invites" for people created on import, that'd be awesome.
AND, if there were a "send email invites" button added to the Nav Dropdown that'd be amazing.

add flag to import to optionally send an email invite to every new user
add field to user re "sent email invite"
add two buttons to grapevine:

"send all unsent email invites" at top of grapevine
"send/resend email invite" within each user listed in grapevine

create views/routes to support everything above

We currently can't create User accounts without triggering Devise's email workflow. We need the option to send an email, but admin users should be able to add accounts (and edit account emails)  without getting stuck on the Devise email.


2.7.x

Codecov Report

Merging #691 into master will decrease coverage by 15.51%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             master     #691       +/-   ##
=============================================
- Coverage     79.10%   63.59%   -15.52%
+ Complexity      213      169       -44
=============================================
  Files            40       40
  Lines           651      651
  Branches         66       66
=============================================
- Hits            515      414      -101
- Misses          106      213      +107
+ Partials         30       24        -6

Impacted Files
Coverage Δ
Complexity Δ

.../org/apache/dubbo/spring/boot/util/DubboUtils.java
81.81% <ø> (ø)
4.00 <0.00> (ø)

...ctuate/endpoint/metadata/DubboConfigsMetadata.java
0.00% <0.00%> (-100.00%)
0.00% <0.00%> (-4.00%)

...ate/endpoint/metadata/DubboPropertiesMetadata.java
0.00% <0.00%> (-100.00%)
0.00% <0.00%> (-2.00%)

.../autoconfigure/DubboEndpointAutoConfiguration.java
0.00% <0.00%> (-100.00%)
0.00% <0.00%> (-2.00%)

...nfigure/DubboHealthIndicatorAutoConfiguration.java
0.00% <0.00%> (-100.00%)
0.00% <0.00%> (-2.00%)

...figure/DubboEndpointMetadataAutoConfiguration.java
0.00% <0.00%> (-100.00%)
0.00% <0.00%> (-1.00%)

...ubboMvcEndpointManagementContextConfiguration.java
0.00% <0.00%> (-100.00%)
0.00% <0.00%> (-2.00%)

...tuate/endpoint/metadata/DubboShutdownMetadata.java
0.00% <0.00%> (-94.74%)
0.00% <0.00%> (-3.00%)

...tuate/endpoint/metadata/AbstractDubboMetadata.java
0.00% <0.00%> (-82.61%)
0.00% <0.00%> (-14.00%)

...ng/boot/actuate/endpoint/mvc/DubboMvcEndpoint.java
0.00% <0.00%> (-77.78%)
0.00% <0.00%> (-5.00%)

... and 4 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update effdbf1...9ff9277. Read the comment docs.


Error response doesn't work with Angular

When working with Angular and mocking an error response it doesn't work. For example:

Returns:

I debugged the Angular code and saw the issue is in the line :

Could you make a small example to reproduce this? This is probably an issue with the requests engine (xhook) which I also maintain, however I need to make sure what exactly the issue is and how it conforms to the XHR spec.
I do know people who used mimic with angular and everything worked correctly so I'll check if they know anything about this.

It only happens when mocking an error. Why xhr.response returns an empty string?

It relates to quirks in the implementation that is trying to be standard
compliant while also covering weird browser behavior.
I'll try triaging this and open an issue on xhook itself
On Sun, Aug 16, 2020, 18:48 Ariel Gueta<EMAIL_ADDRESS>wrote:

It only happens when mocking an error. Why xhr.response returns an empty
string?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/500tech/mimic/issues/300#issuecomment-674542866, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMWUIXZPLL4YMZLX2NHYWDSA75VDANCNFSM4P7EEMGA
.


Svelte 4

currently blocked on a build failure due to code for email rendering, this is related to css-tree importing a data.json file

@rmunn the build is failing because in emailRenderer.server.ts we're importing 'svelte/compiler' and that's what's causing the build to fail. You can test this out by commenting out that import and making a simple shim for each function used.
I know we could come up with a workaround (probably use a separate library for parsing) but this seems like a bug in Svelte so I'd like to make a minimal reproduction and report it.


[semantic-arc-opts] Eliminate all dead live ranges.

Previously, we only did single copy/destroys. Now we handle a copy + any number
of destroy_values.

@swift-ci smoke test

@swift-ci smoke test and merge

@swift-ci smoke test and merge

@swift-ci smoke test and merge

More out of curiosity. @swift-ci smoke benchmark

@swift-ci smoke benchmark

@swift-ci smoke benchmark

@swift-ci smoke benchmark

I am going to kill the test and merge job so that I can see the benchmark results.

The OS X build will still finish and be marked as success though.

Nope too slow.


Allow configure database connection ssl settings

Is your feature request related to a problem? Please describe.
I am trying to use the Crunchy Postgres Operator (PGO) for deploying Postgres.  PGO enforces that all connections are over TLS. In the current version, there appears no way to configure SSL.  Knexjs allows setting the SSL settings - https://knexjs.org/guide/#configuration-options. For example,
  connection: {
    connectionString: config.DATABASE_URL,
    host: config["DB_HOST"],
    port: config["DB_PORT"],
    user: config["DB_USER"],
    database: config["DB_NAME"],
    password: config["DB_PASSWORD"],
    ssl: config["DB_SSL"] ? { rejectUnauthorized: false } : false,
  }

The following file would need the extra ssl property.
Without being able to enable the SSL, I get the following error when COMS tries to connect to the database.
><EMAIL_ADDRESS>migrate
> npm run migrate:latest

><EMAIL_ADDRESS>migrate:latest
> knex migrate:latest

no pg_hba.conf entry for host "<IP_ADDRESS>", user "postgres", database "postgres", no encryption
error: no pg_hba.conf entry for host "<IP_ADDRESS>", user "postgres", database "postgres", no encryption
    at Parser.parseErrorMessage (/opt/app-root/src/app/node_modules/pg-protocol/dist/parser.js:287:98)
    at Parser.handlePacket (/opt/app-root/src/app/node_modules/pg-protocol/dist/parser.js:126:29)
    at Parser.parse (/opt/app-root/src/app/node_modules/pg-protocol/dist/parser.js:39:38)
    at Socket.<anonymous> (/opt/app-root/src/app/node_modules/pg-protocol/dist/index.js:11:42)
    at Socket.emit (node:events:513:28)
    at addChunk (node:internal/streams/readable:324:12)
    at readableAddChunk (node:internal/streams/readable:297:9)
    at Readable.push (node:internal/streams/readable:234:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
npm notice
npm notice New major version of npm available! 8.19.2 -> 10.2.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.2.0>
npm notice Run `npm install -g<EMAIL_ADDRESS>to update!
npm notice

The pg_hba.conf is
sh-4.4$ cat /opt/crunchy/conf/postgres/pg_hba.conf
# PostgreSQL Client Authentication Configuration File
# ===================================================
#
# Refer to the "Client Authentication" section in the PostgreSQL
# documentation for a complete description of this file.  A short
# synopsis follows.
#
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access.  Records take one of these forms:
#
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#
# (The uppercase items must be replaced by actual values.)
#
# The first field is the connection type: "local" is a Unix-domain
# socket, "host" is either a plain or SSL-encrypted TCP/IP socket,
# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a
# plain TCP/IP socket.
#
# DATABASE can be "all", "sameuser", "samerole", "replication", a
# database name, or a comma-separated list thereof. The "all"
# keyword does not match "replication". Access to replication
# must be enabled in a separate record (see example below).
#
# USER can be "all", a user name, a group name prefixed with "+", or a
# comma-separated list thereof.  In both the DATABASE and USER fields
# you can also write a file name prefixed with "@" to include names
# from a separate file.
#
# ADDRESS specifies the set of hosts the record matches.  It can be a
# host name, or it is made up of an IP address and a CIDR mask that is
# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that
# specifies the number of significant bits in the mask.  A host name
# that starts with a dot (.) matches a suffix of the actual host name.
# Alternatively, you can write an IP address and netmask in separate
# columns to specify the set of hosts.  Instead of a CIDR-address, you
# can write "samehost" to match any of the server's own IP addresses,
# or "samenet" to match any address in any subnet that the server is
# directly connected to.
#
# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert".  Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.
#
# OPTIONS are a set of options for the authentication in the format
# NAME=VALUE.  The available options depend on the different
# authentication methods -- refer to the "Client Authentication"
# section in the documentation for a list of which options are
# available for which authentication methods.
#
# Database and user names containing spaces, commas, quotes and other
# special characters must be quoted.  Quoting one of the keywords
# "all", "sameuser", "samerole" or "replication" makes the name lose
# its special character, and just match a database or username with
# that name.
#
# This file is read on server startup and when the postmaster receives
# a SIGHUP signal.  If you edit the file on a running system, you have
# to SIGHUP the postmaster for the changes to take effect.  You can
# use "pg_ctl reload" to do that.

# Put your actual configuration here
# ----------------------------------
#
# If you want to allow non-local connections, you need to add more
# "host" records.  In that case you will also need to make PostgreSQL
# listen on a non-local interface via the listen_addresses
# configuration parameter, or via the -i or -h command line switches.

# CAUTION: Configuring the system for local "trust" authentication
# allows any local user to connect as any PostgreSQL user, including
# the database superuser.  If you do not trust all your local users,
# use another authentication method.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all              <IP_ADDRESS>/32           md5
host    all             all              <IP_ADDRESS>/0              md5
host    replication     PG_PRIMARY_USER  <IP_ADDRESS>/0              md5
# IPv6 local connections:
#host    all             all             ::1/128                trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                               trust
#host    replication     postgres        <IP_ADDRESS>/32           trust
#host    replication     postgres        ::1/128                trust
sh-4.4$

Version Number
I am still on 0.4.2, however, looking at the latest version, 0.6.0 it does not appear to support SSL.
Describe the solution you'd like
I would like to enable ssl when connecting to Postgres.
Describe alternatives you've considered
none
Additional context
n/a

I did a quick check of the Knex typescript interfaces, and it seems like their example of rejectUnauthorized is a MariaDB specific parameter. The Knex config uses the Config interface, which can take in an optional StaticConnectionConfig interface, which unions a bunch of configuration types - notably MariaSqlConnectionConfig and PgConnectionConfig. Both of those interfaces do accept an optional ssl boolean or object attribute, but tracking down rejectUnauthorized it appears to be under just the MariaSslConfiguration interface; it does not appear under PgConnectionConfig interface, which leads to the generic TLS ConnectionOptions interface provided by node. I'm going to go ahead and slip in the recommended line based on their documentation recommendation and hope that is sufficient for enabling TLS support.

I was thinking about making it easier by just allowing setting the connecting string directly instead of the fields as Knex allows,
knexfile.js
module.exports = {
  client: 'pg',
  connection: {
    // connectionString is highest priority to use. If left unspecified then connection
    // details will be determined using the individual connection fields (host, port, etc)
    connectionString: config.get('db.connectionString'),
    host: config.get('db.host'),
    user: config.get('db.username'),
    password: config.get('db.password'),
    database: config.get('db.database'),
    port: config.get('db.port')
  },

custom-environment-variables.json
  "db": {
  "connectionString": "DB_CONNECTION_STRING",
  "database": "DB_DATABASE",
  "host": "DB_HOST",
  "password": "DB_PASSWORD",
  "poolMin": "DB_POOL_MIN",
  "poolMax": "DB_POOL_MAX",
  "port": "DB_PORT",
  "username": "DB_USERNAME"
},

We can consider exposing the connectionString for a release after v0.7.0. However, if we were to proceed with this, this would also need a full implementation into the existing helm chart to ensure that the optionality behavior of the connectionString (specifically ensuring that we are optionally taking in a connection string via secret insertion, and only putting in the variable lookup in the deploymentconfig when it exists, as well as excluding out the other db.* values safely). We'll add this to our backlog for consideration thank you.


Using this plugin with Angular 11 - single SPA micro frontend breaks the application

When we are tying to use this plugin to setup module federation into and Angular 11 - single SPA application, it stops working with following error.
single-spa minified message #37: See https://single-spa.js.org/error/?code=37&arg=application&arg=models-plan&arg={"default":{},"__useDefault":true}
We followed below article by Manfred Steyer:
link

I'm sorry. This has not been tested with single spa.


Perfview could not set CPU sample time inside a container

Hey folks, I manually run a perfview collection with setting /CpuSampleMSec:10, it failed set the property:
Aborting tracing for sessions 'NT Kernel Logger' and 'PerfViewSession'. Insuring .NET Allocation profiler not installed. Detected 64 bit system, removing 64 bit keys [Error: Can't set CPU sampling to 10.000MSec.]
And I try yo remove the CpuSampleMSec setting, it could run collection successfully.
Is this a known issue ?

@zhouqifan2015 I suspect that this is likely a container limitation, as this does work outside of the container environment (I just confirmed to make sure that there wasn't a bug I was unaware of).  What kind of container are you attempting to collect in?  Is this a shared kernel or isolated kernel container?

@zhouqifan2015 I suspect that this is likely a container limitation, as this does work outside of the container environment (I just confirmed to make sure that there wasn't a bug I was unaware of). What kind of container are you attempting to collect in? Is this a shared kernel or isolated kernel container?

Thanks you Brian ! I agree this works outside of container, that's what I did before. For this issue I run into, I was just using docker to create a container with a WinServer image from docker hub. So I think this a shared kernel container.

Yes, I suspect that you're right that this is a shared kernel environment.    My understanding is that you will only be able to change this configuration by collecting on the host.

Thank you Brian ! I think your understanding is totally correct, this makes sense to me now. Closing this issue.


Add HIBP scan and add tests

Fixes #192
Another attempt at adding the hibp scan with dummy data in the test

Check the frontend of the vulnerabilities view
Add HIBP dummy data to the default populated data: https://github.com/cisagov/crossfeed/blob/master/backend/src/tasks/syncdb.ts#L113-L117

Sorry I did the multiple cursor thing in VS code and must have not removed it when I did the next vuln, so it duplicated, i'll fix that now

From: Ashwin Ramaswami @.>
Sent: Monday, April 12, 2021 3:28 PM
To: cisagov/crossfeed @.>
Cc: JENSEN, DANE (CTR) @.>; Mention @.>
Subject: Re: [cisagov/crossfeed] Add HIBP scan and add tests (#1058)
CAUTION: This email originated from outside of DHS. DO NOT click links or open attachments unless you recognize and/or trust the sender. Contact your component SOC with questions or concerns.
@epicfaace commented on this pull request.

In backend/src/tasks/hibp.tshttps://urldefense.us/v3/__https://github.com/cisagov/crossfeed/pull/1058*discussion_r611897241__;Iw!!BClRuOV5cvtbuNI!S6YktmW0niSnJjElRFpru2NBlMkGFfCv4RkC-j7_jYtd3n3iBB89WOnea95lGFwRY2SBO5RVFnjD0Q$:

const results = await lookupEmails(breachesDict, domain);

console.log(

 `Got ${Object.keys(results).length} emails for domain ${domain.name}`

);

if (Object.keys(results).length !== 0) {

 vulns.push(

   plainToClass(Vulnerability, {

     domain: domain,

     lastSeen: new Date(Date.now()),

     title: 'Exposed Emails',

     state: 'open',

     source: 'hibp',

     needsPopulation: false,

     structuredData: { emails: results },

     description: `Emails associated with ${domain.name} have been exposed in a breach. See Data field for a list of emails`

⬇ Suggested change

     description: `Emails associated with ${domain.name} have been exposed in a breach. See Data field for a list of emails`

     description: `Emails associated with ${domain.name} have been exposed in a breach.`

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://urldefense.us/v3/__https://github.com/cisagov/crossfeed/pull/1058*pullrequestreview-633892721__;Iw!!BClRuOV5cvtbuNI!S6YktmW0niSnJjElRFpru2NBlMkGFfCv4RkC-j7_jYtd3n3iBB89WOnea95lGFwRY2SBO5RTFu8R-Q$, or unsubscribehttps://urldefense.us/v3/__https://github.com/notifications/unsubscribe-auth/ATBKBRSEHNXQH5ZB6ILSPX3TINCXHANCNFSM42AE3CIA__;!!BClRuOV5cvtbuNI!S6YktmW0niSnJjElRFpru2NBlMkGFfCv4RkC-j7_jYtd3n3iBB89WOnea95lGFwRY2SBO5T1ijHLCw$.

Looks great @DJensen94 , should be good to merge.


System.Logger support

Could you please add support for System.Logger? It's Java 9+ API for loggers like SLF4J.

Helpful tutorial: https://www.baeldung.com/java-9-logging-api


[PowerAccent] Add dashes

Summary of the Pull Request
Adds dashes to PowerAccent invoking on VK_Key 0xBD.
I can't use the real VK_Key name, as it already is a reserved variable.
PR Checklist

[x] Closes: #20441
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Would it be beyond this PR to also add the different quotation marks („“ ” »« ‚‘ ’ ›‹)?

I think I will block this untilnwe have a functionality to show a subtext

Would it be beyond this PR to also add the different quotation marks („“ ” »« ‚‘ ’ ›‹) for "?

diff PR for that please.

I don't think we need to block it but for this release IMO we should have something to solve hte issue IMO

@aaron-junker sorry, what is making this blocked?  can someone help me get up to speed

Personally I would like to have #20587 merged first.

Hi @Aaron-Junker , is this ready for review? I see there's some conflicts still.

@Aaron-Junker what is left here?  Can this be reviewed for 0.66?

@crutkas Should be ready now.

Hi @Aaron-Junker , Just checked and it seems this PR is updating the cziplib dependency. I assume that's not intended, right?

Hi @Aaron-Junker , Just checked and it seems this PR is updating the cziplib dependency. I assume that's not intended, right?

no. Why is this happening all the time?

I think you have to do "git submodule update" when main is checked out to update your local version of the dependencies. Otherwise you might commit the old local version of the dependency by mistake.

Thank you so much for this! I've been wanting to be able to type em-dashes for months ❤


Website inventory Airtable document clean up

Objective:
We need a way to see the inventory of the website pages. This is the current Airtable document we are using.   https://airtable.com/tblscN2O3bsvY5DvD/viwAO734OqRV9bbrR?blocks=hide
Steps:

[ ] ~Talk to Roberta and see how this document is utilized in her workflow~
[ ] ~Add or delete columns and features~
[ ] ~Set cadences to update the document~
[ ] ~Share the updated form with the team~

Note: Exploring different ways to record the inventory without too many steps or maintaining.

Task update: Revisit the purpose of the website inventory list and if Airtable is the best tool for the inventory list creation. Explore new ways to make sure the list can be easily found and maintained with up-to-date information.

The new inventory list will no longer maintain with the Airtable. Task #1045 was created for creating the new list.
FYI: @RobertaJHahn


Making metric references to enums lazy to prevent NoSuchFieldError, if possible

Addresses #1021 for Servo consumer.  Others coming soon

NetflixOSS » Hystrix » Hystrix-pull-requests #319 SUCCESS
This pull request looks good

NetflixOSS » Hystrix » Hystrix-pull-requests #320 SUCCESS
This pull request looks good


How to run C++ tests on Mac

Hello,
I started out with the C++ exercises, and I must say that your documentation is really good for setting everything up (at least on mac).
However, I have issues running the tests.
I'm new to C++ and developing using the terminal, and I can't figure out how to run the tests.
I downloaded the hello-world exercise, implemented "hello world" and ran cmake in the terminal as described in https://exercism.io/tracks/cpp/tests "MacOS with Xcode":
➜  hello-world mkdir build && cd build && cmake -G Xcode ..
-- The CXX compiler identification is AppleClang <IP_ADDRESS>50022
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/me/exercism/cplusplus/cpp/hello-world/build

Please advice how can I ran the actual test.
I experimented with make .... and tried to find the generated executables to run - unfortunately I wasn't successful.
I suspect I just build files, but not run the actual test.

On linux I get the expected result though
$ mkdir build && cd build && cmake -G "Unix Makefiles" .. && make
-- The CXX compiler identification is GNU 10.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lothar/Documents/_dev/exercism/cpp/hello-world/build
Scanning dependencies of target hello-world
[ 25%] Building CXX object CMakeFiles/hello-world.dir/hello_world_test.cpp.o
[ 50%] Building CXX object CMakeFiles/hello-world.dir/hello_world.cpp.o
[ 75%] Building CXX object CMakeFiles/hello-world.dir/test/tests-main.cpp.o
[100%] Linking CXX executable hello-world
[100%] Built target hello-world
Scanning dependencies of target test_hello-world
===============================================================================
All tests passed (1 assertion in 1 test case)

[100%] Built target test_hello-world

The commands you're using for Mac, which is what is in those docs, only generates the XCode files so that you can open the project in XCode. That command doesn't actually build the code itself, for that you'd need to open the project in XCode and build it there.
You should be able to use the same commands as Linux if you're not going to use XCode.
In the Linux commands for example cmake -G "Unix Makefiles" .. creates the build files for GNU Make, which is used to compile the project when you invoke it with make. On mac, you'd create the XCode build files with cmake -G XCode .. and you'd need to use XCode to compile it.
That documentation comes from the file in this repo here: https://github.com/exercism/cpp/blob/main/docs/TESTS.md. If you have any suggestions on how to make that better feel free to open a PR or just make a suggestion here, we could probably use a sentence or two at the very bottom to explain what that series of commands is actually doing.


Avoid unnecessary reprojection in the MVT format

When reading features using ol.render.Feature a mandatory geometry transform was applied.
The reprojection now only occurs when an option.featureProjection is defined.
With this change it is now easy again to use the MVT format as a standalone way to read features in the native tile projection.
Since there is no reprojection, there is no need either to define an extent and a world extent, for that use-case.
@ahocevar, I require this change to implement an experimental MapBoxVectorTile imagery provider for Cesium, in the OL-Cesium project.

@gberaudo So you want the coordinates in tile-relative pixel coordinates? Wouldn't it be enough to have an if-check like in your description, i.e. only transform when a featureProjection is defined?
if (options.featureProjection) {}


Help with WebApplicationFactory and Integration Testing with version 7.0.1

I am trying to run some integration tests, which all run fine if I switch off all multi-tenancy options.  But when the DBContext is created for the test, the TenantInfo in the DBContext is null.  I have been searching the web for the past few days trying to find how to get the tests to use a tenant that exists in the TenantDbConext.  I have also tried to use an in-memory tenant store, all with similar results.
I have enclosed the cost I am using below, in the hope that someone can suggest a way to make this work. Please ignore the comments; they are just where I have been trying different options.
AppDbContext
using System.Reflection;
using Ardalis.SharedKernel;
using Finbuckle.MultiTenant.Abstractions;
using Finbuckle.MultiTenant.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using rm.micro.security.Core.RoleAggregate;
using rm.micro.security.Core.UserAggregate;
using rm.micro.security.Infrastructure.Data.Interceptors;
using RM.SharedKernel;
using SmartEnum.EFCore;

namespace rm.micro.security.Infrastructure.Data;
public class AppDbContext : MultiTenantDbContext
{
  public AppDbContext(IMultiTenantContextAccessor<RMTenantInfo> multiTenantContextAccessor, DbContextOptions<AppDbContext> options, IDomainEventDispatcher? dispatcher) : base(multiTenantContextAccessor, options)
  {
    _dispatcher = dispatcher;
    TenantInfo = multiTenantContextAccessor.MultiTenantContext.TenantInfo;
  }

  public AppDbContext(IMultiTenantContextAccessor<RMTenantInfo> multiTenantContextAccessor, IDomainEventDispatcher? dispatcher) : base(multiTenantContextAccessor)
  {
    _dispatcher = dispatcher;
    TenantInfo = multiTenantContextAccessor.MultiTenantContext.TenantInfo;
  }

  //public AppDbContext(ITenantInfo tenantInfo) : base(tenantInfo)
  //{
  //  TenantInfo = tenantInfo as RMTenantInfo;
  //}

  //public AppDbContext(ITenantInfo tenantInfo, DbContextOptions<AppDbContext> options) :
  //    base(tenantInfo, options)
  //{
  //  TenantInfo = tenantInfo as RMTenantInfo;

  //}

  private new RMTenantInfo? TenantInfo { get; set; }

  private readonly IDomainEventDispatcher? _dispatcher;

  private static readonly SoftDeleteInteceptor _softDeleteInteceptor = new();
  private static readonly AuditInteceptor _auditInteceptor = new();

  public DbSet<User> Users => Set<User>();
  public DbSet<Role> Roles => Set<Role>();

  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {
    foreach (var entityType in modelBuilder.Model.GetEntityTypes())
    {
      if (typeof(IConcurrencyEntity).IsAssignableFrom(entityType.ClrType))
      {
        modelBuilder.Entity(entityType.ClrType).Property<bool>(nameof(IConcurrencyEntity.Version)).IsConcurrencyToken();
      }
    }

    foreach (var type in modelBuilder.Model.GetEntityTypes())
    {
      if (typeof(ISoftDelete).IsAssignableFrom(type.ClrType))
        modelBuilder.SetSoftDeleteFilter(type.ClrType);
    }

    modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());

    base.OnModelCreating(modelBuilder);
  }

  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  {
    base.OnConfiguring(optionsBuilder);

    if (!string.IsNullOrEmpty(TenantInfo?.ConnectionString))
    {
      optionsBuilder.UseSqlServer(TenantInfo.ConnectionString, options =>
      {
        options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName);

      })
      .EnableSensitiveDataLogging()
      .AddInterceptors(
          _softDeleteInteceptor,
          _auditInteceptor
      );
    }

    //TenantNotSetMode = TenantNotSetMode.Overwrite;
  }

  protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
  {
    configurationBuilder.ConfigureSmartEnum();
  }

  public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()
  {
    //this.EnforceMultiTenant();

    int result = await base.SaveChangesAsync(cancellationToken).ConfigureAwait(false);

    // ignore events if no dispatcher provided
    if (_dispatcher == null) return result;

    // dispatch events only if save was successful
    var entitiesWithEvents = ChangeTracker.Entries<EntityBase>()
        .Select(e => e.Entity)
        .Where(e => e.DomainEvents.Any())
        .ToArray();

    await _dispatcher.DispatchAndClearEvents(entitiesWithEvents);

    return result;
  }

  public override int SaveChanges() =>
        SaveChangesAsync().GetAwaiter().GetResult();
}

The two constructors are commented out, as when not, I receive an ambiguous constructor error.
CustomWebFactory
using Finbuckle.MultiTenant;
using Finbuckle.MultiTenant.Abstractions;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using rm.micro.security.Infrastructure.Data;
using rm.micro.security.Infrastructure.Data.Interceptors;
using RM.SharedKernel;
using Testcontainers.MsSql;
using Xunit;

namespace rm.micro.security.IntegrationTests.Fixtures;
public class CustomWebApplicationFactory : WebApplicationFactory<Program>, IAsyncLifetime
{
  private readonly MsSqlContainer _dbContainer = new MsSqlBuilder()
                                                    .WithPassword("Password123")
                                                    .Build();

  public void SetTenantInfo()
  {
    using var scope = Services.CreateScope();

    var setter = scope.ServiceProvider.GetRequiredService<IMultiTenantContextSetter>();
    var accessor = scope.ServiceProvider.GetRequiredService<IMultiTenantContextAccessor<RMTenantInfo>>();

    var multiTenantContext = new MultiTenantContext<RMTenantInfo>
    {
      TenantInfo = new RMTenantInfo
      {
        Id = Guid.NewGuid().ToString(),
        Name = "Root",
        Identifier = "root",
        IsActive = true,
        ValidUpTo = DateTime.Now.AddYears(1),
        AdminEmail = ""
      }
    };

    setter.MultiTenantContext = multiTenantContext;
  }

  public string ConnectionString() => new SqlConnectionStringBuilder(_dbContainer.GetConnectionString())
  {
    InitialCatalog = "SecurityTests"
  }.ConnectionString;

  protected override void ConfigureWebHost(IWebHostBuilder builder)
  {
    builder.ConfigureLogging(logging =>
    {
      logging.ClearProviders();
      logging.AddConsole();
    });

    builder.ConfigureServices(services =>
    {
      var connectionString = ConnectionString();

// Below is the latest attempt at injecting a tenant

      services.Where(x => x.ToString().Contains("rmtenantinfo", StringComparison.CurrentCultureIgnoreCase))
                .ToList()
                .ForEach(x => services.Remove(x));

      var tenantInfo = new RMTenantInfo
      {
        Id = "tenant-1",
        Identifier = "tenant-1",
        Name = "tenant-1",
      };
      services.AddMultiTenant<RMTenantInfo>()
          .WithStaticStrategy("tenant-1")
          .WithInMemoryStore(config =>
              config.Tenants.Add(tenantInfo)
          );

      services.AddScoped<ITenantInfo, RMTenantInfo>(r => tenantInfo);

      services.RemoveAll(typeof(IHostedService));

      var dbContextDescriptor = services.SingleOrDefault(
                d => d.ServiceType ==
                    typeof(DbContextOptions<AppDbContext>));

      services.Remove(dbContextDescriptor!);

      services.AddDbContext<AppDbContext>((sp, options) =>
        options.UseSqlServer(connectionString)
            .AddInterceptors(
              sp.GetRequiredService<SoftDeleteInteceptor>(),
              sp.GetRequiredService<AuditInteceptor>()
            ));
    });
  }

  public async Task InitializeAsync()
  {
    await _dbContainer.StartAsync();
  }

  public new async Task DisposeAsync()
  {
    await _dbContainer.StopAsync();
  }
}

I have also tried using the following:
services.RemoveAll<ITenantInfo>();
    services.AddScoped<ITenantInfo, TenantInfo>((_) => new TenantInfo
    {
        Id = TestConstants.User.Tenant,
        Identifier = TestConstants.User.Tenant,
    });

and
var mtcSetter = context.RequestServices.GetRequiredService<IMultiTenantContextSetter>();
var resolver = context.RequestServices.GetRequiredService<ITenantResolver>();
var multiTenantContext = await resolver.ResolveAsync(context);
mtcSetter.MultiTenantContext = multiTenantContext;

All end up with the tenantInfo being null when the test is actioned.
I would be grateful for any advice that can show me how to get this working.
As a side note, I have functional tests that use the entire chain from api to db, and they run fine as the tenant is set in the Http header.  I can also manually test using Swagger, and it also runs.   So the API is basically functional; it is only the integration tests that are failing because of the DBContest TenantInfo being null.

Hi @MarkLFT
The approach I take isn’t sophisticated but works ok. I simply create a dummy TenantInfo instance  for each dbcontext I need to use in testing. If you look in the unit test project for Finbuckle.MultiTenant.EntityFraneworkCore in this repo you can see a bunch of places I have done so.

Thanks for the feedback. Unfortunately, after spending many days trying to find a way to run our integration tests, we gave up and uninstalled Finbuckle. We are currently looking at other options.
I still believe Finbuckle is a great project, and should it become easier to test code without having to use hacks and workarounds in the future, we will certainly look at it again.

Understood and best of luck.

I would have to see how you are actually executing the tests, however I do have a theory.
If you are using an ICollectionFixture with XUnit, and you are building the services there, then the setting of the TenantInfo is on a different thread than each test execution. XUnit runs tests concurrently, unless you opt out, ofc.
i.e.
public class Tests
{
    private readonly RMFixture _fixture;

    public Tests(RMFixture fixture) => _fixture = fixture;

    [Fact]
    public void Should_get_tenant()
    {
        var accessor = _fixture.Services.GetRequiredService<IMultiTenantContextAccessor<RMTenantInfo>();

        // This fails because no TenantInfo has been resolved on this thread.
        accessor.MultiTenantContext.IsResolved.ShouldBeTrue();
    }
}

If this is indeed the problem, what you could do instead, is on every test execution, set the tenant. Because each test is run within it's own own thread local. (i.e. web request) This solution is what the middleware does per request.
public class Tests
{
    private readonly IFixture _fixture;

    public Tests(IFixture fixture)
    {
        _fixture = fixture;

        _fixture.SetTenant(new RMTenantInfo { ... });
    }

    [Fact]
    public void Should_get_tenant()
    {
        var accessor = _fixture.Services.GetRequiredService<IMultiTenantContextAccessor<RMTenantInfo>();

        // This should now pass
        accessor.MultiTenantContext.IsResolved.ShouldBeTrue();
    }
}

You could also replace the accessor with your own that doesn't use an AsyncLocal. Perhaps you just want to provide a static Tenant. However this could become difficult if some tests would like to set their own Tenant instead of using a default. I'm sure you could solve that, but if you end up in that situation, just go with Andrew's design would be my suggestion.
// Call this after .AddMultiTenant<RMTenantInfo>()
services.AddSingleton<IMultiTenantContextAccessor<TTenantInfo>, RMMultiTenantContextAccessor<TTenantInfo>>();

@AHansen-Planview, many thanks for your feedback.  I truly hope this information helps others. As for us, we have now gone a different way and no longer use Finbuckle.


Add tests

This is a really great project! Would it be possible to include reference values for each approach, just to test that the representation here behaves as intended in the original publications? I am sure that this was tested behind the scenes when developing the code, but it would be good to include these tests more explicitly, also as examples for the correct units to use.

 :-)


Headers insensitive

fixes #62

NB: package-lock.json not commited, I'm NOT on https://registry.npmjs.org endpoint => pollution with different URL (on lowercase-keys package)


appkit ethers version, will auto trigger tronlink when hard refresh website, any solution about this ?

i m using vue ethers version code


find in literal mode (no regex)

"Find" function should be able to search for strings without:

regex interpretation;
case-sensitivity check;

I haven't found a way to turn off regex in current Find.

You can bind Ctrl-f (or whatever key you use) to FindLiteral instead of Find.

You can bind Ctrl-f (or whatever key you use) to FindLiteral instead of Find.

Thanks, it's working, but it's still case-sensitive. How to make in case-insensitive?

Thanks, it's working, but it's still case-sensitive. How to make in case-insensitive?

Set ignorecase option to true.
BTW I believe it's already set to true by default in the newest tip version (though maybe not in 2.0.8).

Set ignorecase option to true.
BTW I believe it's already set to true by default in the newest tip version (though maybe not in 2.0.8).

It's false by default in 2.0.8, changed to true, issue is solved ;)

It's false by default in 2.0.8, changed to true, issue is solved ;)