Overwriting Navigator Objects of iframe

I want to overwrite the values of the Navigator's properties. The solution to overwrite it before loading a page using page.onInitialized does not work for the inner iframes of a page. So I want to change the code and compile it again so that it always returns back my hardcoded values for the navigator properties , I changed the ./phantomjs/src/qt/qtwebkit/Source/WebCore/platform/qt/UserAgentQt.cpp, and recompile it but it does not affect anything.  Can some one please give me a hint on that?
Phantomjs 2.2.0
Ubuntu 14.0.4

Thank you for submitting this ticket!
This issue tracker primarily serves as the tool to report and track bugs, defects, and development tasks.
For general question, code review request, build problem, or other related discussion, please post it to either:

the official PhantomJS users mailing-list
Stack Overflow (with phantomjs tag)

If you have not read it yet, please check also a few tips on Effective Q&A.


Request: Tokenize endpoint

I'm wanting to feed in example prompt / responses but there doesn't seem to be a way to do it without just attaching them to the system prompt? Is there a way we can have a /api/tokenize endpoint so example prompt / responses can be fed in as context?

Hi @danemadsen thanks for opening the issue, we are working on a messages request parameter that will allow you to pass in request/responses directly, bypassing the need to set a tokenized context. Would that meet your needs?
https://github.com/jmorganca/ollama/pull/991

Yes i just saw the PR, that will work fine. Though i do think the encode /  decode endpoints could also be helpful in certain circumstances as well.

Closing this issue now that #991 is merged 🎊


Nounsdao voters tier1 visionaries

add nounsdao voters tier1 visionary group

Hey @curelycue the badge description is incomplete: "ZK Badge owned by "
Can you push a commit with the description you want?


/usr/local/share/lua/5.1/resty/dns/balancer/base.lua:421: table index is nil

Summary
2020/10/12 19:22:10 [error] 106555#0: *123742784 lua entry thread aborted: runtime error: /usr/local/share/lua/5.1/resty/dns/balancer/base.lua:421: table index is nil stack traceback: coroutine 0: 	/usr/local/share/lua/5.1/resty/dns/balancer/base.lua: in function 'assert_atomicity' 	/usr/local/share/lua/5.1/resty/dns/balancer/base.lua:608: in function 'queryDns' 	/usr/local/share/lua/5.1/resty/dns/balancer/base.lua:1265: in function 'cb_expire' 	/usr/local/share/lua/5.1/resty/timer.lua:87: in function </usr/local/share/lua/5.1/resty/timer.lua:51>, context: ngx.timer
i'm not sure how to reproduce, just found the error log。
Steps To Reproduce
Additional Details & Logs

Kong version (2.1.4)

Hi @luo985, thank you for reporting this!
I want to know if the same problem occurs in the newer releases.
Can you provide some feedback for us to continue to investigate this issue?


Summary module generates empty comments. Should be no comment in this case.

Description
There can be a situation where summary is a non-empty list with blank characters, like: regularStmt("\t\n").
As a result a comment is blank.
In this case the comment should not be shown.
This is a description of a probable bug which is known for many tests.

Could not reproduce this case, probably the problem is in the protected fun genWarnNotification(): String = " " //why is it empty? row in the SimpleCommentBuilder

I reproduced the problem on the following code snippet:
public class Main {

    public static void main(String[] args) {
	// write your code here
    }
}

I got these results:
public class MainTest {
    ///region Test suites for executable com.company.Main.main

    ///region

    @Test
    @DisplayName("main: arg_0 = String[3]")
    public void testMainWithNonEmptyObjectArray() {
        String[] args = {"", "", ""};

        Main.main(args);
    }
    ///endregion

    ///region SUCCESSFUL EXECUTIONS for method main(java.lang.String[])

    /**
     *
     */
    @Test
    @DisplayName("main: ")
    public void testMain() {
        Main.main(null);
    }
    ///endregion

    ///endregion
}

@amandelpie you're totally right, the problem is that when the body is empty the tool calls genWarnNotification() for some reason, and it returns an empty string. It seems if the body is empty we shouldn't add JavaDoc at all.


addendum regarding omero.web.check_version

Addendum re: omero.web.check_version
Renders like:

Staged at https://snoopycrimecop.github.io/www.openmicroscopy.org/security/advisories/2017-SV4-guest-user/

https://snoopycrimecop.github.io/www.openmicroscopy.org/security/advisories/2017-SV4-guest-user/ up to date now, should be ready to merge and deploy after lunch

Deployed on http://beluga.openmicroscopy.org:8000/reports/aacb56d9-a261-4df2-b032-32a7024c3bd2.html

Deployed this afternoon.


APIView - Retain a revision for each major minor package version

APIView currently retain only one pending revision. This causes an issue when CI is enabled from main branch and releases are done from a feature branch for a different major-minor version. We should remove a pending revision from automatic API review only if package version is difference is in patch. As long as major-minor version is different, then APIView revision must be retained.

+1 on this feature.

Python ML team requires this change due to the way release are created from a branch other than main.

There is also the problem where a version is created and an APIView is created, but then the version.py version is bumped after-the-fact. The old fictious version, which will never be released, stays in APIView and the correct version is never generated.
cc/ @l0lawrence


[iOS] How can I see if the onKillNotification works in Debug?

Hello again!
I am developing a package called: notification_when_app_is_killed, and
I want to check fi the notification is working in ios.
I am working with your code (of course I will give you credit) and I will love your help.
Alarm plugin version
latest
Describe the bug
In Debug, when the app is killed there is no onKill notification. Video:
https://drive.google.com/file/d/1BoLUAz_IheNwl_nssPBDwVvkqARQAwP5/view?usp=sharing
To Reproduce
Steps to reproduce the behavior:
Install the example and set alarm
Expected behavior
Should send message
Screenshots
If applicable, add screenshots to help explain your problem.
Device info
iPhone 11, latest iOS

Hi, I read all of your articles already, awesome stuff!
I ran it also in release in Android studio and it also didn't work (the video is in release mode). Should it be on test flight? Because in iOS the release mode behaves as debug (you can't open the app without the cable)

No, no need to make a TestFlight.
What I usually just do is to run flutter run --release in the terminal and once the build is over, I remove the lightening cable and then I'm able to kill the app, see the notification and reopen.
This doesn't work for you ?

I only try running release from Android studio. I will try via CLI and let you know.
Thanks you🙏

Thank you! It works with this command.
I will let you know when the package is finished.
Thanks again, great work @gdelataillade

@gdelataillade https://pub.dev/packages/notification_when_app_is_killed


PerfView displays 0 for all processes

The problem occurs on a specific machine. The same problem was described here: https://stackoverflow.com/questions/32121604/perfview-cpu-msec-is-0-for-all-the-processes
To resolve the problem I have tried to reset settings, download a new version, run as administrator but unsuccessfully.
Do you have any ideas what may cause the issue?

@Drreamer please see https://github.com/microsoft/perfview/issues/1639.  This is probably something installed on the specific machine that is changing the PMU configuration which is used by ETW to capture CPU samples.


Document comparison with rotor

rotor is similar in purpose to this library, except that it uses explicit state machines instead of futures.
What are the advantages and disadvantages of each?  Why is this library better?

I'm not personally intimately familiar with rotor, but my impression is that it's a state machine composition library in which case it fits in perfectly with futures (which also compile to state machines). In that sense I'm under the impression that they'd complement one another why then trying to compete.

I looked at Rotor briefly. It is definitely similar to Tokio, but it's not built around the futures-rs library (which didn't exist when it came out). I'd say that at this point in time there is a lot more activity around Tokio than Rotor, but that could be a myopic perspective. If Rotor were to build around the futures-rs library, then it would be very similar to Tokio, I'd say that's the biggest difference. What it means in the end, imo, is that the futures-rs abstractions make it easier to work with the Tokio implementations.

I asked this question recently on the users discourse and got some feedback from @seanmonstar.
tokio looks like it's giving you a lot more out of the box than rotor, and with futures seems to compose a bit more easily. I've had a lot of success with rotor running loops with just a single kind of protocol, it's been great for composing complex state machines in a hierarchy like @alexcrichton suggests.


Improve unit-tests in openebs-k8s-provisioner

Unit tests for openebs-k8s-provisioner need to be refined. Specifically for GetMayaClusterIP API

Addressed


Status bar icon colors are pulled from the incorrect source

Lapce Version
Nightly
System information
elementary OS 7 Horus (Ubuntu 22.04.3 LTS)
Describe the bug
Status bar icons don't follow the lapce.icon.active color specified, instead following status.foreground specification.
Additional information
This snippet from status.rs appears to run contrary to the seen behavior
                let panel = panel.clone();
                stack((
                    svg(move || config.get().ui_svg(LapceIcons::ERROR)).style(
                        move |s| {
                            let config = config.get();
                            let size = config.ui.icon_size() as f32;
                            s.size_px(size, size).color(
                                *config.get_color(LapceColor::LAPCE_ICON_ACTIVE),
                            )
                        },
                    ),
                    label(move || diagnostic_count.get().0.to_string())
                        .style(|s| s.margin_left_px(5.0)),
                    svg(move || config.get().ui_svg(LapceIcons::WARNING)).style(
                        move |s| {
                            let config = config.get();
                            let size = config.ui.icon_size() as f32;
                            s.size_px(size, size).margin_left_px(5.0).color(
                                *config.get_color(LapceColor::LAPCE_ICON_ACTIVE),
                            )
                        },
                    ),

where it appears to imply that the ERROR and WARNING icons in the status bar should be styled with the lapce.icon.active color. However, changing status.foreground in the theme editor changes the icons, rather than changing lapce.icon.active.

The status bar icons are pulled from correct source, as it uses lapce.icon.active key


Fix nanoseconds set by StrptimeParser's %Q

@muga Can you have a look? I guess it's the last fix on TimestampParser.

Thanks!


Adding support for dotnet core 3.1

Adjustments to adopt dotnet core 3.1

Routing
Json formatters
Demo project

@kanavrov  https://github.com/jlucansky/Quartzmin/pull/27


Fix nices sorting

${${(on)nices}#*:} doesn't sort nice correctly since zsh doesn't recognize minus sign as a part of numbers.

Thank you for your PR and additional https://github.com/b4b4r07/zplug/issues/26.

The order will be A -> B -> C ?

Yes, you're right.


Script is not working

Script is not working
Getting error - Failed Download XHR error

Hi, you can bypass the XHR error by using the provided proxy. Did you try checking the "Use proxy" option?

Yes I have used "use proxy" option. But "use proxy" option makes the script very slow.

The XHR error is because the server you're downloading from doesn't have CORS enabled. The proxy bypasses this restriction. If the provided proxy is slow, look at #2 to see how to use your own proxy instead. Closing this issue for now.


Create and maintain editor plugins

The standard repo lists a set of editor plugins.  Some of which I think already support happiness, but I am pretty sure they don't all.  We should look into them and decide which we can help support.

Since I am a vimer, I looked into the vim plugin, and here are the docs we would have to follow: https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide
Here is the standard version: https://github.com/scrooloose/syntastic/blob/master/syntax_checkers/javascript/standard.vim
I can do this and test it out in my vim and then submit a PR for that.
The other editor I mess with is Atom, so I can look into that one, but I think that is the one that has happiness support already, just an older version the last time I looked.


Update README.md to reflect that the trust namespace is only for secrets

Your new suggestions look good @tspearconquest! Please commit them yourself- If I sign off on the suggestion then I also become an author and then don't believe I can merge :slightly_smiling_face:

/lgtm
/approve
/ok-to-test


Go 1.6

Upgraded go version to 1.6.

The 1.5 vendor experiment is no longer experimental so using export GO15VENDOREXPERIMENT=0 to disable it's functionality. Due to kubernetes/kubernetes#21525, Kubernetes has no types if using vendor.


[KOGITO-1900] Data index Infinispan usernameKey and passwordKey were …

…not applied
https://issues.redhat.com/browse/KOGITO-1900
Signed-off-by: Karel Suta<EMAIL_ADDRESS>Many thanks for submiting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[x] You have read the contributors guide
[x] Pull Request title is properly formatted: [KOGITO-XYZ] Subject
[x] Pull Request contains link to the JIRA issue
[x] Pull Request contains description of the issue
[x] Pull Request does not include fixes for issues other than the main ticket
[x] Your feature/bug fix has a unit test that verifies it
[x] You've tested the new feature/bug fix in an actual OpenShift cluster

Enhanced test to coved all method branches.

Adjusted implementation according to @Sgitario suggestion.


Validation Helpers

Manual validation is a bad experience. We should provide a top level
// PSEUDOCODE

enum ValidationStatus = {
  Valid,
  Escalation,
  Unrecognized
}

// Passed to higher order functions
function compareAll(targetCap: MyCapability, proofCaps: Capability[]): ValidationStatus
function compareAny(targetCap: MyCapability, proofCap: Capability): ValidationStatus
function compare(targetCap: MyCapability, proofCap: MyCapability): ValidationStatus

interface Authorization<caps> {
  from: Did, // top-level issuer,
  to: Did, // top-level audience
  allowed: Capability<caps>[],
  unrecognized: object[]
}

interface FailureReason = "EXPIRED" | "TOO_EARLY" | {escelated: object} // ...

function validate(ucan: Ucan): Result<FailureReason, Authorization>

Here, compare can be expressed in terms of compareAll.
Compare All
Compares the focused capability against the entire list of proof capabilities. This is especially useful for cases of rights amplification, where more than one proof is needed.
All of the compare functions should get translated into compareAll under the hood
Compare Any
Especially useful when there's a version update or some backwards compatible change. Compares the focused capability one-at-a-time with the proof's capabilities, but checks against all of them.
Compare (Exact)
The usual case. Compare only if the capabilities are in the same namespace/semantics.

@matheus23 thoughts? (Other than the fact that I guarantee that the above code will fail to typecheck)

So I've been noodling a bit on this (as well as trying to implement e.g. the wnfs capability as defined in wnfs2 in some ways).
There's two difficult things to deal with when it comes to custom capabilities:

I think we'd like validate in the success case to return enough information to be able to e.g. check private filesystem changes. For that we need to have all inumbers from the whole chain accumulated to be returned. The outermost capability doesn't contain all information what the user is actually capable of anymore, since it only contains one inumber.
We could also just call this a special case and make validate work fine for most use cases and let it just return what capabilities the user has in the end.
I think we want to have the implementation of custom capability checking versioned by ucan version. What I mean by that is: (1) we want the ts-ucans library to be able to handle multiple ucan versions and (2) if that's the case, then e.g. if we end up forcing another format for capabilities in ucan version 0.8.0, but there's a custom capability already in use for version 0.7.0, then that needs to also be able to parse the old version.
What I'm thinking is that custom capability parsers should probably be indexed by ucan version as well?

cc @bgins

We could also just call this a special case and make validate work fine for most use cases and let it just return what capabilities the user has in the end.

Yeah, good point. This is a whole "parse don't validate". We should make the type return a Result or similar, which lets anyone plug into that functionality. Most people won't need that, but if we need it, others will, too. Perhaps it's one more layer in that hierarchy? But we can explore that in more detail when we get to the exact API. Since it's entirely possible to do, the question becomes ow to best expose that

What I'm thinking is that custom capability parsers should probably be indexed by ucan version as well?

Great idea — we can pass that into the checking interface by threading it for the validation functions. 👍

...alternately, we could automatically upgrade the format while validating. Feels like there may be more edge cases there, but it's less manual for the end developer

Yeah my thinking on this was that we can't update the format inside att, since we don't know much about its structure.
But I'll leave that as an issue for later #26
For now, I've tackled a reduced version of this. I.e. a "compare any" version. I can see ways of abstracting this further, but I'll wait for a good concrete use case before I'll abstract it in some possibly weird way :stuck_out_tongue:

ValidationStatus basically ended up as CapabilityResult<A> now
Something like Authorization<caps> is CapabilityWithInfo<A> now. Just per-capability (because from needs to be per-capability). And with some additional info.

I'll close this until we're ready to expand the API with some additional building blocks for custom capabilities :v:

Reopening, because it's still a live discussion

Especially useful when there's a version update or some backwards compatible change. Compares the focused capability one-at-a-time with the proof's capabilities, but checks against all of them.

I'm bit confused about this given the following function signature:

function compareAny(targetCap: MyCapability, proofCap: Capability): ValidationStatus

Is it meant to be following instead ?
function compareAny(targetCap: MyCapability, proofCaps: Capability[]): ValidationStatus

I'll focus on compareAll as all the other ones can be expressed with it. More specifically I think it would be a great idea to make ValidationStatus proper type union so that Valid case is able to provide information about which available capabilities (a.k.a proofCaps) met claimed capability (a.k.a targetCap).
Specifically I would imagine that in some cases claim may be met by multiple sub-sets of available capabilities, so that validator can check (each set) in the next link in the proof chain.
Additionally I like how @matheus23's design introduced capability parser which can filter out Unrecognized capabilities before even comparing things. That way campareAll can either say claim is valid or it escalates.

I end up writing what I think would be a best API for this also including inline below

/**
 * Function checks if the claimed capability is met by given set of capaibilites. Note that function takes capability
 * views as opposed to raw capaibilites (This implies that raw JSON capabilites were succesfully parsed into known
 * capability with specific semantics).
 *
 * Function returns either succesfull sets of proofs that support claimed capability or a set of escalation errors.
 * If claimed capability is unfunded, meaning give capabilities are not comparable result is still an error of empty
 * escalation set (Maybe we should consider union with 3 variants instead to make this more explicit)
 *
 * Please note that it is possible that claim may be met by some capaibilites while at the same time it may
 * escalate constraint of others. In this case function still returns succesfull set of proofs discarding
 * violations (maybe it should not ?).
 *
 * Note: succesfull result provides iterator of proofs. That allows constraint solver to be lazy as in
 * return succesfully as soon as first proof is found and defer finding other proofs until constraint
 * solver deciedes to explore other paths.
 */
declare function claim<C extends CapabilityView> (capability:C, given:C[]): Result<EscalationError<C>[], IterableIterator<Proof<C>>>

/**
 * Represents succesfully parsed capability. Idea is that user could provide capability parser that UCAN
 * library will use to filter out capaibilites that can be compared from the ones it is unable to
 * recognize.
 */
interface CapabilityView<C extends Capability = Capability> {
  capability: C
}

/**
 * Basically any JSON value, but could be refined further if desired
 */
interface Capability { [key:string]: string|number|boolean|null|Capability|Capability[] }

type Result<X, T> =
   | { ok: true, value: T }
   | { ok: false, value: X }

/**
 * Proof of a claimed capability, contains claimed capability (view) and subset of available
 * capaibilites that satisfy it.
 */
interface Proof<C> {
    claimed: C
    capaibilites: C[]
}

/**
 * Represents capability escalation and contains non empty set of
 * contstraint violations.
 */

export interface EscalationError<C> extends RangeError {
  readonly name: "EscalationError"

  /**
   * claimed capability
   */
  readonly claimed: C

  /**
   * escalated capability
   */
  readonly escalated: C

  /**
   * non empty set of constraint violations
   */
  readonly violations: ConstraintViolationError<C>[]
}

/**
 * Represents specific constraint violation by the claimed capability.
 */
export interface ConstraintViolationError<C> extends RangeError {
  readonly name: "ConstraintViolationError"
  /**
   * Constraint that was violated.
   */
  readonly claimed: Constraint<C>
  /**
   * Claim that exceeds imposed constraint.
   */
  readonly violated: Constraint<C>
}

/**
 * Represents violated constraint in the claim. Carrynig information about
 * which specific constraint.
 */
export interface Constraint<C> {
  readonly capability: C
  readonly name: string
  readonly value: unknown
}

// -----------------

/**
 * Function attempt to access capability from given UCAN view (which in nutshell is UCAN with attached capability parser
 * so it can map known capabilites to richer views and surface unknown capabilities). It returns is either successful result
 * with capability view and authorization proof chain or an error describing reason why requested capability is invaid.
 *
 * Access internally utilized `claim` function and walks up the proof chain until it is able to proove that claim is unfounded.
 */

declare function access <C extends CapabilityView>(capability:Capability, ucan:UCANView<C>):Result<InvalidClaim<C>, Access<C>>

interface InvalidClaim<C> {
    readonly name: 'ExpriedClaim'
    readonly claim: C
    readonly by: DID
    // I know to is broken english but "from" is too ambigius as it can be "claim from gozala" or  "gozala claimed car from robox"
    readonly to: DID

    reason: UnfundedClaim<C> | ExpriedClaim<C> | InactiveClaim<C> | ViolatingClaim<C> | InvalidClaim<C>
}

interface ExpriedClaim<C> {
    readonly name: 'ExpriedClaim'
    readonly by: DID
    readonly to: DID

    readonly claim: C

    expiredAt: Time
}

interface InactiveClaim<C> {
    readonly name: 'InactiveClaim'
    readonly from: DID
    readonly to: DID

    readonly claim: C

    activeAt: Time
}

interface UnfundedClaim<C> {
    readonly name: 'UnfundedClaim'
    readonly claim: C

    readonly by: DID
    readonly to: DID
}

interface ViolatingClaim<C> {
    readonly name: 'ViolatingClaim'
    readonly from: DID
    readonly to: DID

    readonly claim: C
    readonly escalates: EscalationError<C>[]
}

interface Access<C> {
  ok: true
  capability: C
  to: DID
  proof: Authorization<C>
}

interface Authorization<C> {
    by: DID
    granted: C[]

    proof: Authorization<C> | null
}

interface DID {}
interface UCANView<C extends CapabilityView> {
  ucan: UCAN
  capabilityParser: CapabilityParser<C>

  // capabilities that parser was unable to parse
  unkownCapabilities: IterableIterator<Capability>
}

interface UCAN {}

interface CapabilityParser<C> {
    /**
     * Returns either succesfully parsed capability or unknown capability back
     */
    parse(capability:Capability): Result<Capability, C>
}

type Time = number

With such a claim in place compareAll is just a claim function that throws away proofs. And propose access is comparable with validate but in contract it provides complete proof chains.
Neither deal with unknown capabilities, I think it's better done in layer above which in my sketch is UCANView that can utilize parser idea from @matheus23 before checking any claims and if desired reference to unknown capabilities could be exposed from InvalidClaim<C> and Access<C> types as well.

One other thing that I would like to try is to define CapabilityViews such that they will bind implementation to exercise them. So that instead of doing e.g.
if (validate(request.ucan).ok && canWriteTo(request.path, request.ucan)) {
   fs.write(request.path, request.content)
}

it could turn into
const access = access({ with: request.path, can: 'write' })
if (access.ok) {
  access.capability.write(request.path, request.content)
}

I'm bit confused about this given the following function signature:

function compareAny(targetCap: MyCapability, proofCap: Capability): ValidationStatus

Is it meant to be following instead ?
function compareAny(targetCap: MyCapability, proofCaps: Capability[]): Validatio

Yeah, the naming could likely be better. This is very much a high level sketch.
From the initial description:

Here, compare can be expressed in terms of compareAll.
Compare All
Compares the focused capability against the entire list of proof capabilities. This is  especially useful for cases of rights amplification, where more than one proof is needed.
All of the compare functions should get translated into compareAll under the hood
Compare Any
Especially useful when there's a version update or some backwards compatible change. Compares the focused capability one-at-a-time with the proof's capabilities, but checks against all of them.
Compare (Exact)
The usual case. Compare only if the capabilities are in the same namespace/semantics.

Or to put it another way:

compareAll is a one-to-many
compareAny (maybe compareOne is better?) is a one-to-one relationship
compare  (compare exact) is compareOne, but filters out proof capabilities that have a different resource type

Hey @Gozala. First of all: Thank you for the work you're putting into this, I really appreciate it! It's good to have more eyes & brains on this problem.
I'm currently working on upgrading our haskell code to UCAN version 0.7/0.8, and I'm collecting thoughts from my experience there & from talking with you into another round of iteration on ts-ucan.
Some ideas I'm sure I'll straight up steal from you (:stuck_out_tongue_winking_eye:):

Returning a concise, verifiable proof (or Authorization?) for each valid capability a UCAN has is a great idea. This should also enable checking revocation in the future, and I'm thinking if this could also fit the role of what's cached on a service per-UCAN.
Actually using a recursive JSON type to represent capabilities.

Looking at your proposal, it looks like these are the things you really want to have in ts-ucan:

Much more precise error reporting (which by the way - will also be helpful for our https://ucan.xyz/validator app)
Rights amplification
Better naming
Parsing UCANs into domain-specific types earlier (UCANView, CapabilityView)

I'll be looking at these things, especially in the bigger view of where ts-ucan is right now and what we have. We could add the capability parsing to ts-ucan's Chained type, which is horribly named at the moment.
Although I'll probably postpone (2) for now.
Also, let me know if I'm missing something that you're trying to get at!
Is there anything in particular that's blocking you from proceeding @Gozala? The current API should be sufficient for implementing a service that accepts UCANs, although I might be missing something. Should we maybe get on a call to discuss this in real-time?

This is being implemented in PR #79


Fixed assigning of classDirectories - read only property issue

Task name: GradleV2 - codecoverage-tools package update
Description: fixed assigning of classDirectories property when code coverage is enabled - to avoid 'can't assign read only property' error.
Documentation changes required: N
Added unit tests: N
Attached related issue: https://github.com/microsoft/azure-pipelines-tasks/issues/14130
Checklist:

[ ] Task version was bumped - please check instruction how to do it - n/a since this is a package update
[ ] Checked that applied changes work as expected - in progress

@anatolybolshakov any news on this pr? it's a straightforward fix...

Hi @gnegnegne sorry for delay - will this still work for Gradle versions < 5.x? If it won't, we need to add some way to determine Gradle version (the simplest way - some optional task input?) and switch this behavior depending on this.

Ciao @anatolybolshakov, I think it won't work, in version <5.x it was possible to directly use the setters for folder structures. Having said that, I don't know it this situation is a problem, considering that the current deployed version already made use of the new setFrom() (It was your fix few months ago https://github.com/microsoft/azure-pipelines-tasks/pull/13563/files )
If support for gradle <5.x is still mandatory than we already have the problem in the current version, so the question should be, is the support still a requirement?


Rewrite hash writer class

Rewrite the hash writer class
Fix all gcc warnings and errors
Update existing unittests

Pulled by mistake


Upgrade 0.48.1

This PR upgrades the controller image to 0.48.1
From this point on, the flag --disable-svc-external-name flag is  set by default to disable forwarding to ExternalName Services. If you require this feature, you can disable setting this flag through user values by setting controller.disableExternalNameForwarding to true.

This PR upgrades the controller image to 0.48.1
From this point on, the flag --disable-svc-external-name flag is set by default to disable forwarding to ExternalName Services. If you require this feature, you can disable setting this flag through user values by setting controller.disableExternalNameForwarding to true.

Correct would be:
If you require this feature, you can disable setting this flag through user values by setting controller.disableExternalNameForwarding to false.

@johannges thank you for noticing. It seems it is already correct in the Changelog. This PR was released as chart version 2.0.0
I'll also change it here.


[Feature][Module Name] workflow instance

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
Workflow instances add layers
Use case
The name of the workflow and the tasks that run at different times are divided into two layers, so that it is easy to browse and find logs. The following is a comparison of the differences between the two graphs:

The latter refers to the design of other systems. This design is more hierarchical and easier to find logs. I hope the community will adopt it.
Related issues
No response
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

任务工作实例分两层查看：
1、第一层显示每个任务的最新一次执行实例情况
2、点击第一层对应任务，进去显示该任务的历史执行实例情况。
好处：可以对执行的多个任务多个实例分类更清楚，更容易查阅，比输入关键字搜索更便捷
望采纳


Fix PDB info structure display

Before:

After:

This has bothered me forever. I thought it was just a datatype with a hardcoded length.


[ISSUE#403] fix some bugs and Optimization code for rocketmq's acl feature.

What is the purpose of the change
Fix some bugs for acl feature.
Brief changelog
(1)add the META-INF/service/org.apache.rocketmq.acl.AccessValidator in broker module.
(2)fix some NPE Exception in rocketmq acl module.
(3)fix some logical Exception and optimize some codes for acl feature.
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

LGTM


update minor build

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found some lint.
Here's what I've got...
For recipe/meta.yaml:

Selectors are suggested to take a <two spaces>#<one space>[<expression>] form. See lines [13]

For recipe/meta.yaml:

PyPI default URL is now pypi.org, and not pypi.io. You may want to update the default source url.

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally.
The following suggestions might help debug any issues:

Is the recipe/{meta.yaml,recipe.yaml} file valid?
If there is a recipe/conda-build-config.yaml file in the feedstock make sure that it is compatible with the current global pinnnings.
Is the fork used for this PR on an organization or user GitHub account? Automated rerendering via the webservices admin bot only works for user GitHub accounts.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11642262887.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.


[windows DNS] Simplify c-ares Windows code

A set of simplifications to make this code easier to reason about:

Replace SockToPolledFdMap with std::map

Make the c-ares close callback do nothing. Instead, let the ares wrapper code destroy polled fds as it normally does, and let everything that hasn't been registered for I/O get destroyed in the GrpcPolledFdFactoryWindows dtor.

Get rid of GrpcPolledFdWindowsWrapper

Move socket_notify_on_write to the RegisterForOnWriteableLocked method. This makes for a nice invariant that no async callback is pending unless a RegisterForOnWriteableLocked or RegisterForOnReadableLocked callback is pending.

Related: internal issue b/293321613

Thanks Alex. While I understand the simplification of changing from using async WSA send to sync WSA send on a non-blocking socket, I'm wondering why are we making this change since we have already developed the machinery for doing the async WSA send with IOCP. Is there a bug in our implementation?

Yeah, doing that in this PR too might have been overzealous and it's independent from the rest of the changes here. I've reverted back to the async WSA send approach (I don't actually see a bug in this code, it's just a lot of machinery)

Ok, this seems very subtle. Did the issue happen when we are shutting down between an async TCP connect and its completion? What exactly happened? Did the OnTcpConnect callback get called later because the poller was shutting down and causing crash or further failures?

I don't actually have a repro of the original bugs seen in the wild, and I actually have not repro'd a crash here yet.
Just reasoning about the code though - before this change there is nothing to prevent the TcpConnect callback from being invoked after the polled fd is destroyed.


fix Error: API:Invalid nonce

The example returns an API error complaining about the nonce, this change will fix it.

I realised, that there error i got, was triggered by the fact that i used the golang kraken api implementation that uses a nonce with nanoseconds with the same key pair just before i used this implementation.
Nevertheless, this change will prevent that from happening to anyone else.

This change did not fix the problem for me.  The problem for me, when there is a collision (usually because API calls get to Kraken in reverse order so the nonce, based on the clock, is lower than the previous nonce, or the same because the calls were made too close together).  Also, the kraken-api code adds the nonce property to the parameter object we pass in, so sending it in a few seconds later doesn't use a new nonce, it uses the same one.  I will propose a fix for this soon if no one else has.


Mailman refactor

Motivation for this change
Add uwsgi and nginx functionality to reduce the amount of manual setup needed for mailman, as well as documentation.
Supersedes #84896.
@alyssais I've taken the liberty of putting you in the maintainers list along with myself. Feel free to object :)
TODO: release notes
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Rebased on current master to reflect mailman updates (cc @alyssais)

It would be good to see this in. Django 1.11 is no longer supported and with https://github.com/NixOS/nixpkgs/pull/89723 mailman-web won't build anymore either.

Note after this is in, django_1_11 should be removed.

Haven't played with this yet but would like to point you to similar mailing list manager we've packaged recently - https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/mail/sympa.nix
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/mail/sympa.nix#L265 defines mta option which would be nice here as well (configures postfix as well if set). Right bellow are structured attrs you could re-use for the TODO.
Otherwise looking good and thanks for doing this! I've struggled trying to write mailman module when I've started with NixOS.

Pity that you've decided to ignore my suggestion without any response and merge it - would be nice if there is a consistency between similar modules and the change I've suggested only makes stuff easier for end-users.
At first I wanted to PR the change I've suggested to your branch and add myself as a maintainer but I'm currently swamped by other things and now even disappointed as new contributors are forced to jump thru hoops until modules are perfect while people with commit access are free to merge things as they wish.

Sorry, I meant to comment.
I'm not sure such an mta option is a good idea, since a mail server setup that can actually deliver mails well takes a lot of extra parts that can't all be configured within a NixOS configuration. To quote the docs I wrote here:

[…] Note that this setup is not
sufficient to deliver emails to most email providers nor to
avoid spam -- a number of additional measures for authenticating
incoming and outgoing mails, such as SPF, DMARC and DKIM are
necessary, but outside the scope of the Mailman module.

TLS is also a part of this, though here it's shown in the example config.
I don't think a module like mailman's should take responsibility for all those things, but at the same time taking responsibility for a small part of them suggests to users that it's "batteries included", which can result in frustrating experiences with it not working out of the box as one may expect if it has a "configure postfix for me" knob. That said, if we can somehow offer a good experience I'm all for adding such an option.
Re merging this: I figured that your suggestion to add an mta option isn't a blocker for merging this and can be done after the fact, essentially being a feature addition.

No hard feelings, thanks for making it right!
The idea about mta is to make it easier to integrate with e.g. already set-up postfix, quickly set one up for trying out mailmain and testing via NixOS tests.
It shouldn't attempt to provide full batteries included solution as that is out-of-scope but only the required mailman integration parts of its config. Done this way it should play nicely with existing setups or setups using nixos-mailserver (we use it in combination with Sympa) which is able to configure all the fluffy stuff you mention for you.
If the option feels too production-mailserver-suggestive to you we can add a description to it stating this explicitly - running a mailserver is not for everyone and certainly not easy to get right from scratch so it's probably a good idea to note that and e.g. suggest nixos-mailserver as a complete mailserver solution.
I'll give this a shot later when I'm done with the currently pending stuff.

So what you're suggesting is to have an option that enables adding the three necessary postfix options (as in https://github.com/NixOS/nixpkgs/pull/86177#pullrequestreview-401703859) as opposed to doing it unconditionally or not doing it at all? Yes, I think that makes sense :)


Inquiry about the inaccurate 3d human pose labels

Hi, thank you for your great work, but I am facing a problem about the accuracy of the 3d human pose labels.
I was running the 3d human pose estimation experiment based on VoxelPose, but according to the visualization of the projected 2d views ('image_with_joints' folder), the gt labels are often inaccurate. I am attaching some of the visualization results.
I checked the code, but I don't see any problems. So I want to ask that does this kind of inaccuracy meet the expectations? Because I don't know the details of the annotation process.
Thank you!

Hi, thank you for your interest. The human poses are semi automatically annotated and might not always be perfect. In the bottom examples you sent I think the issue is the human is actually not visible in the point cloud, and the human pose track stays at the last spot where the human was detected. This might be an error in the code but also potentially an error in the annotations.
However in the other examples I think it is not as bad. You can try to visualize the pose from only one human to see the accuracy. I think overlaying all points from all humans makes it hard to judge.
Finally if you are looking for better human pose annotations, you should check out https://github.com/CAMMA-public/MVOR. The annotations are more precise, however the dataset is much smaller. So you can see which fits your needs the best, maybe both together?
hope these help

Okay I get it. Thank you for your kind reply!


The mouse wheel does not work on macOS

I flag this just for completeness...
I have tested this code
[...]
case (SDL_MOUSEWHEEL)
             r = sdl_get_mouse_state(mouse_x,mouse_y)
             if (event%wheel%y == 1) then
                r = WHEELUP_EVENT
             else
                r= WHEELDOWN_EVENT
             end if
             return
[...]

and it works as expected in both Windows MSYS2/MINGW64 and GNU/Linux Mint but not on macOS. On this OS event%wheel%x and event%wheel%y are always 0! both if one moves the wheel up or down.
I wonder if this is a defect of the SDL2 libraries installed there (by means of MacPorts).
Notice I have a similar fortran code based on XBGI and mouse wheel works also on macOS.

Oops... just discovered it could be an issue with my 7 years old mouse....


docs: fix markdown violations

used https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint

Thanks.
In that example, gfm doesn't need the <> to render URLs as links. But on balance, I've still merged.


Bolt icons testing

Jira
http://vjira2:8080/browse/BDS-952
Summary
Write tests and updating configuration of jest tests
Details
(Explain the changes in enough detail fo reviewers to understand.  Raise any questions for reviewers to consider.)
How to test
Run this code locally and check if all jest test are passing: npm run test:js

@adamszalapski all tests passed, but I saw this error:
Error: ENOENT: no such file or directory, open '/Users/morsd/sites/bolt/packages/components/bolt-icons/src/icons/yeti.js'

It's looking for the icon in "src" not "tests". Is this expected?

Thanks, @danielamorse is expected behavior. After compiling icons we remove the icon that was created only for these tests. Please check if you have this three task before all tests.
 I will investigate what is going on. The biggest problem is when is running npm run test:js the error is occurring but if use  npx jest packages/components/bolt-icons/__tests__/icons.js to run only this test, the error is gone. Maybe @sghoweri have some quick fix for that. If not i will try to fix this by myself.

@adamszalapski yep, those three tasks run.
It would be better not to get this error, as it makes me think that something is broken when I run the tests. If it's not too much work, can we try to fix?
I also noticed:

When I run npm run test:js, packages/components/bolt-icons/src/index.js gets modified with the line:

+ export * from './icons/yeti';

When I run npm start these two files are also modified/added:

m packages/components/bolt-icon/icon.schema.yml
+ packages/components/bolt-icons/src/icons/yeti.js

Ideally, git status would be clean after running start or test. Is that doable?

@danielamorse and @sghoweri all issues that you guys raised should be fixed. Please try to check this PR one more time.

@danielamorse, in my opinion, is not related to chmod but with time when files are created. As far as i know, JS doesn't know when a file is created fully he knows only that command to create a file is finish. And index.js want to access files that not yet created. I will try to fix this but really i was thinking that i fix this because on my end this behavior is not occurring.

@adamszalapski ah, you are correct. I ran it again and the issue re-appeared.

@adamszalapski ah, you are correct. I ran it again and the issue re-appeared.

Hi @danielamorse my assumptions were wrong. The problem is not that js don't know when files are fully saved but button tests use icons to and i recreate them after icons tests. Right now i move cleaning function to be run after all tests and i think that fix this issue. Please check on your end.


Multiple Debuggers attaching at once

Issue Type: Bug
I'm working on an express app. The source code is mostly es6, with the tests mostly coffeescript.  What do you see?
I assume that you have "auto attach" enabled?

Sure!
auto attach is enabled.
After i run the script mentioned above, i see the following:

Note that two debuggers are running.

I think that's because two processes have been spawned. Those numbers are the process IDs. I think that mocha spawns a child process to run tests. You could verify by checking what those PIDs are. But I don't think there is an issue here.

If i restart my machine, only one debugger attaches. The behavior is indeterminate, unfortunately. :/
What info would i need to provide in order for this to be considered an issue?
Thanks!

Try just figuring out what the processes with those PIDs are, like ps -ax | grep <pid> for example. Or evaluate code in them through the debug console, like seeing process.argv might help.


images/cilium: copy the cilium-envoy binary into Cilium image

When we integrated cilium-envoy into Cilium's image we have made the assumption that the image only contained the cilium-envoy binary, which made it safe to copy the entire image into Cilium's. However, since 3698c40e878c, the cilium-envoy's base image was switched to Ubuntu's instead of "scratch". This had the consequence of overwriting the files of Cilium's Runtime image with Cilium-envoy's base image. To fix this, we should only copy the cilium-envoy binary available on the cilium-envoy image.
Fixes: 3698c40e878c ("cilium/proxy: updating proxy image to latest version")
Replace Cilium's base image from ubuntu:22.04 with Cilium's Runtime image (also ubuntu:22.04 based).

/test

/test

/test

/test


Invalid content /en/testnets/cardano/get-started/creating-a-stake-pool/

Where does the issue occur?
https://developers.cardano.org/en/testnets/cardano/get-started/creating-a-stake-pool/
Link is broken in documentation on page 'Creating A Stake Pool'. Link should point to an example of an operational certificate generation.
Broken link is:
https://docs.cardano.org/projects/cardano-node/en/latest/stake-pool-operations/node_keys.html#generate-the-operational-certificate
Returns 404.

Thanks for your feedback! #734 addresses this issue.


Microsoft.Network/dnsZones

Describe the noise
Resource type (i.e. Microsoft.Storage/storageAccounts)
Microsoft.Network/dnsZones
apiVersion (i.e. 2019-04-01)
2018-05-01
Client (PowerShell, Azure CLI, or API)
PowerShell
Relevant ARM Template code (we only need the resource object for the above resourceType and apiVersion, but if it's easier you can include the entire template
Expected response (i.e. "I expected no noise since the template has not been modified since the resources were deployed)
No changes.
Also any of the different type records if they are not in the template what-if does not lists those as ignored.
Current (noisy) response (either include a screenshot of the what-if output, or copy/paste the text)
~ Microsoft.Network/dnsZones/lz001.net/A/stan3 [2018-05-01]
    + location: "Global"

  ~ Microsoft.Network/dnsZones/lz001.net/AAAA/stan2 [2018-05-01]
    + location: "Global"
[
      ~ 0:

        ~ ipv6Address: "2001:db8:85a3::8a2e:370:7334" => "2001:0db8:85a3:0000:0000:8a2e:0370:7334"

      ~ 1:

        ~ ipv6Address: "2001:db8:85a3::8a2e:370:7335" => "2001:0db8:85a3:0000:0000:8a2e:0370:7335"

      ]

~ Microsoft.Network/dnsZones/lz001.net/CNAME/stan5 [2018-05-01]
    + location: "Global"

  ~ Microsoft.Network/dnsZones/lz001.net/MX/stan6 [2018-05-01]
    + location: "Global"

  ~ Microsoft.Network/dnsZones/lz001.net/NS/stan7 [2018-05-01]
    + location: "Global"

  ~ Microsoft.Network/dnsZones/lz001.net/PTR/stan10 [2018-05-01]
    + location: "Global"

  ~ Microsoft.Network/dnsZones/lz001.net/SRV/stan8 [2018-05-01]
    + location: "Global"

  ~ Microsoft.Network/dnsZones/lz001.net/TXT/stan9 [2018-05-01]
    + location: "Global"

  = Microsoft.Network/dnsZones/lz001.net [2018-05-01]
  = Microsoft.Network/dnsZones/lz002.net [2018-05-01]

There are changes in location which is specified in the template resources. Also for Microsoft.Network/dnsZones/lz001.net/AAAA/stan2  I am putting values 2001:0db8:85a3:0000:0000:8a2e:0370:7334 and 2001:0db8:85a3:0000:0000:8a2e:0370:7335 but seems later changed by the service which results like a change in every deployment.
Additional context
Add any other context about the problem here.

We are taking an action to normalize the ipv6 addresses to eliminate that noise
we are investigating the "location": "global" noise
separately, we need a larger enhancement to support identifying these dnsRecord resources when they are not declared in the template

IPv6 normalization was done and is waiting on deployment [w28].

The location properties are defined on the Microsoft.Network/dnsZones resource type, but they are not supported by those DNS record set child resource types. The quick fix would be removing them from the ARM template.

The IPv6 normalization should be fully deployed. We are going to close this issue as you can resolve the use of the location property yourself.


502: bad gateway on <put> when removing cluster / fleet agent overrides from an existing rke2 cluster

Setup

Rancher version: v2.7-head(95edd02)
Rancher UI Extensions: n/a
Browser type & version:chrome

Describe the bug

when updating an rke2 cluster with existing cluster and fleet agent overrides -> removing all the settings, resulted in a 502 gateway error.
To Reproduce

deploy an rke2 cluster

enter cluster agent overrides for resources, add a toleration, and add a custom affinity
enter fleet agent overrides for resources, add a toleration, and add a custom affinity

allow the cluster to successfully get to an active state
upgrade the cluster

remove all overrides that were entered in the first step

Result
An error is shown in the UI and the user is kept on the cluster edit screen, however the update was actually still applied and the overrides were removed
a padding to disable MSIE and chrome friendly error page

cluster did not appear to go into an updating state
Expected Result

if there's an error, I wouldn't expect the new spec to have applied to the cluster
Screenshots

Additional context

did not happen for an rke1 cluster

Thanks @KevinJoiner . The PR that @mantis-toboggan-md has created will address both areas, I believe 🙏  https://github.com/rancher/dashboard/pull/9011

Some of the fields are just in the wrong place, such as.

https://<server_url>/v1/schemas/provisioning.cattle.io.v1.cluster.spec.clusterAgentDeploymentCustomization.overrideAffinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution

Some fields added by Steve should be stripped because they don't exist in ETCd

metadata.fields
metadata.relationships
metadata.state

Other fields are added by the UI and do not exist for example

status.conditions[12].error
status.conditions[12].transitioning

Due to the time constraints and the intermittency in terms of reproducing this (I could never reproduce it, tbh), we will address 1.with this PR and our proposal is that we close this issue and split 2. and 3. into separate issues as it has possible Rancher Dashboard-wide implications because we have always sent those properties without any side-effects, until now.
FYI @gaktive @nwmac @richard-cox

tested on v2.7-head (f0d4078):

deploy an rke2 cluster with all agentCustomization set for fleet and cluster agents
update the cluster, remove all agentCustomization / set back to default -- pass

notes:
since this has gone in, I haven't reproduced this issue
the following warnings are still in the headers of the removal requests:
Warning:
299 - unknown field "metadata.fields"
Warning:
299 - unknown field "metadata.relationships"
Warning:
299 - unknown field "metadata.state"
Warning:
299 - unknown field "spec.machineSelectorConfig"
Warning:
299 - unknown field "status.conditions[0].error"
Warning:
299 - unknown field "status.conditions[0].transitioning"
Warning:
299 - unknown field "status.conditions[10].error"
Warning:
299 - unknown field "status.conditions[10].transitioning"
Warning:
299 - unknown field "status.conditions[11].error"
Warning:
299 - unknown field "status.conditions[11].transitioning"
Warning:
299 - unknown field "status.conditions[12].error"
Warning:
299 - unknown field "status.conditions[12].transitioning"
Warning:
299 - unknown field "status.conditions[13].error"
Warning:
299 - unknown field "status.conditions[13].transitioning"
Warning:
299 - unknown field "status.conditions[14].error"
Warning:
299 - unknown field "status.conditions[14].transitioning"
Warning:
299 - unknown field "status.conditions[15].error"
Warning:
299 - unknown field "status.conditions[15].transitioning"
Warning:
299 - unknown field "status.conditions[16].error"
Warning:
299 - unknown field "status.conditions[16].transitioning"
Warning:
299 - unknown field "status.conditions[17].error"
Warning:
299 - unknown field "status.conditions[17].transitioning"
Warning:
299 - unknown field "status.conditions[18].error"
Warning:
299 - unknown field "status.conditions[18].transitioning"
Warning:
299 - unknown field "status.conditions[19].error"
Warning:
299 - unknown field "status.conditions[19].transitioning"
Warning:
299 - unknown field "status.conditions[1].error"
Warning:
299 - unknown field "status.conditions[1].transitioning"
Warning:
299 - unknown field "status.conditions[20].error"
Warning:
299 - unknown field "status.conditions[20].transitioning"
Warning:
299 - unknown field "status.conditions[21].error"
Warning:
299 - unknown field "status.conditions[21].transitioning"
Warning:
299 - unknown field "status.conditions[22].error"
Warning:
299 - unknown field "status.conditions[22].transitioning"
Warning:
299 - unknown field "status.conditions[2].error"
Warning:
299 - unknown field "status.conditions[2].transitioning"
Warning:
299 - unknown field "status.conditions[3].error"
Warning:
299 - unknown field "status.conditions[3].transitioning"
Warning:
299 - unknown field "status.conditions[4].error"
Warning:
299 - unknown field "status.conditions[4].transitioning"
Warning:
299 - unknown field "status.conditions[5].error"
Warning:
299 - unknown field "status.conditions[5].transitioning"
Warning:
299 - unknown field "status.conditions[6].error"
Warning:
299 - unknown field "status.conditions[6].transitioning"
Warning:
299 - unknown field "status.conditions[7].error"

Warning:
299 - unknown field "status.conditions[7].transitioning"
Warning:
299 - unknown field "status.conditions[8].error"
Warning:
299 - unknown field "status.conditions[8].transitioning"
Warning:
299 - unknown field "status.conditions[9].error"
Warning:
299 - unknown field "status.conditions[9].transitioning"

@slickwarren , thank you for testing these. The warnings you mentioned should be covered as part of https://github.com/rancher/dashboard/issues/9016.
@mantis-toboggan-md @richard-cox , FYI I've added metadata.fields and metadata.state to the description of that issue. Not sure if spec.machineSelectorConfig should be part of it - please feel free to update as needed.


Make enum field as String in POJO yet generate the inner enum class

Currently, enums generate inner classes within the objects they are part of. The type of these enum fields in the POJOs containing them is the enum type generated. With this implementation if someone provides wrong enum value it fails in deserialization with a very generic exception. I  have a use-case where we don't want any deserialization failures because of bad enum values. Is it possible to have type of enum fields as string in POJOs yet generate the inner enum class?
Can it be configurable ? If not, can someone please advise how to do it by overriding one of the classes like EnumRule, ObjectRule, PropertyRule .. ?

The EnumRule could be updated to be more forgiving with possibly a default or invalid value.
or
The ObjectRule could be updated to provide builder methods that accept strings for enum properties that catch the invalid exception method.
Either of these would have to be controlled by global configuration or would have to be added to the schema as another java (jsonschema2pojo) specific extension.

This isn't something we need to generate in the types, it's a feature of the deserialization library. Are you using Jackson?
Support for unrecognised enum values is a feature of Jackson. Check out DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL. Alternatively you can write your own custom deserializer to do whatever you like.


Flutter Doctor: IntelliJ IDEA not detect plugins not installed in channel beta

In the beta channel, I run the command flutter doctor and is not showing me the warning about plugins flutter and dart in intellij not installed.
flutter doctor in channel stable:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.22.4, on macOS 11.0.1 20B29 darwin-x64, locale pt-BR)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
[!] Android Studio (version 4.1)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[!] IntelliJ IDEA Ultimate Edition (version 2020.2.3)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.51.1)
[!] Connected device
! No devices available
! Doctor found issues in 3 categories.
flutter doctor in channel beta
Building flutter tool...
Flutter 1.23.0-18.1.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision 198df796aa (5 weeks ago) • 2020-10-15 12:04:33 -0700
Engine • revision 1d12d82d9c
Tools • Dart 2.11.0 (build 2.11.0-213.1.beta)
~  flutter doctor                                                                                 ✔  31s  21:14:44
Downloading package sky_engine...                                   0,6s
Downloading flutter_patched_sdk tools...                            0,7s
Downloading flutter_patched_sdk_product tools...                    0,6s
Downloading darwin-x64 tools...                                     1,0s
Downloading darwin-x64/font-subset tools...                         0,1s
Downloading android-arm-profile/darwin-x64 tools...                 0,3s
Downloading android-arm-release/darwin-x64 tools...                 0,3s
Downloading android-arm64-profile/darwin-x64 tools...               0,2s
Downloading android-arm64-release/darwin-x64 tools...               0,3s
Downloading android-x64-profile/darwin-x64 tools...                 0,3s
Downloading android-x64-release/darwin-x64 tools...                 0,3s
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.23.0-18.1.pre, on macOS 11.0.1 20B29 x86_64, locale pt-BR)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
[✓] Android Studio (version 4.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.2.3)
[✓] VS Code (version 1.51.1)
[!] Connected device

This is not an error it is just a warning caused by the new Android Studio version where they changed the plugins path and Flutter can detect the plugins. You can still use Flutter.


When searching for games and clicking on the games tab, does not show any games available.

I can't find any games on the website.

Btw, i was using firefox.

Same

But why???

I'm getting this as well. I've tried Firefox, Edge, Chrome, even my phone, no luck. I don't think it's a browser issue..


Functionality

Hello!
Except reporting future is your plugin can put missing translations to locale files?

It's not yet planned, but it would be a nice feature.
I'll put it on the todo-list. :)

Hey @tasselchof I just want to make sure I understand what you're asking. You would want the library to actually write in the missing translations into the language files.
For example:
Before running vue-i18n-extract
// component.vue
$t('missing.string')

// en_EN.json
{
  "some.string": "Hello"
}

After vue-i18n-extract
// en_EN.json
{
  "some.string": "Hello",
  "missing": {
    "string": ""
  }
}

If that's the case would you just want the added translation string to be empty when added?

I don’t think you want it to be blank, because then there will be holes in
the interface. Better to have the source language than nothing at all.

This should not be empty. We have source language, so we just add strings with source language in each language file.
So, in an example of @Spittal after running tool we will have:
// en_EN.json {   "some.string": "Hello",   "string": "string" }
And somebody who translating can go inside a file and change this string.

That's very good, @tasselchof.
I see a potential problem:

Some keys are missing
You let the library generate "fillers" to fill the gaps ("string": "string")
You run the library and it tells you that you have a complete and valid language file

... 4. But actually it is valid just because it has been filled with fake placeholders.
So probably I would do:
 // en_EN.json
{
"some.string": "%%MissingTranslation%%",
"string": "%%MissingTranslation%%"
}

and then make the library show as "missing translations" also the "%%MissingTranslation%%" placeholders.
What do you think about it?
Do you like this idea @Spittal?

Notifications are not so important, like understanding such a phrase in context. Also, you can get this notification simply checking locale of translated string. If you use not keys, but full phrases like:
$('Translate me');
Then in not English locale key simply will be equal to the value and this can generate a notification.
The way you are offering... in fact, you will need to check this % in the start of translation and if it exists do no translate string.
Tools like Poedit works the way I describe (those practices are pretty widely implemented).

So here is a rundown of the options / situations as I see them:
Situations:
-1. Missing key in default locale (aka called by dev, key not found)
vue-i18n: key not available, will render key in front-end
vue-i18n-extract: COULD create key in default locale (and all other
locales)
0. Missing value in default locale
vue-i18n: will supply the key in the front-end
vue-i18n-extract: opportunity for option action below

Missing key in (non-default) locale file
vue-i18n: will supply the key (or value if availabe) in the front-end
vue-i18n-extract: could create key AND value in locale file (as with -1

Missing value in (non-default) locale file
vue-i18n will supply the value of the default language
vue-i18n-extract: could create value in locale file

Options:
A. Leave blank (default), front end is resolved by vue-i18n according to
above situations
B. Clone default language value => has the downside of putting
false-positives in the collection / changing statistics (and would need to
be double parsed)
C. Copy key to value => also potentially full of false positives
D. Placeholder '%%key_missing%%' => parseable by vue-i18n-extract (and
vue-i18n unfortunately)
Discussion:
Tools like crowdin and weblate won't know the difference between a real
translation and any of B, C or D. In cases where translators are paid via
statistical analysis, the latter 3 will change their job from translation
to correction, which is generally less well-paid. Further, this makes the
first pass of a translation job that much easier to mess up because the
interface on those tools will show all of the strings as already
translated.
At any rate, I think that the dev should be in charge of how they want this
handled (if at all) and should therefore be fully optional - in a sense
like different degrees of logging errors as commonly seen in many types of
software.
.

Hi folk! Did you found a way to extract all missing strings to a json, for example?
Thanks in advance!

@enzonotario Hello, you have a CLI opntion -o to extract a json file.
[--output, -o] Use if you want to create a json file out of your report.(ex. -o output.json)

Thanks! but I need just the missing keys, so I have created a node script like:
const VueI18NExtract = require('vue-i18n-extract').default;
const report = VueI18NExtract.createI18NReport(config.jsDir + '/**/*.?(js|vue)', config.i18nDir + '/*.?(js|json)');

// missing keys are in report.missingKeys

Maybe not exactly what you want, but since I have to do the actual translations with sisulizer anyway, just getting a json-file as blueprint works fine for me. Doing that with:
const VueI18NExtract = require('vue-i18n-extract').default,
	fs = require('fs'),
	items =  VueI18NExtract.parseVueFiles('src/**/*.?(js|vue)');

var result = {}, i = 0;

items.forEach(item => {
	let path = item.path, parts = path.split('.'), o = result, prop = parts.pop();
	parts.forEach(name => {
		if (!(name in o)) o[name] = {};
		o = o[name];
	});
	if (!(prop in o)) {
		o[prop] = path;
		i++;
	}
});

fs.writeFileSync('i18n/msgs.json', JSON.stringify(result));
console.log(`found ${i} keys`);

Maybe something for an example in case somebody else finds it useful too?

Although the library containsextract in its name I confess this was the number 1 reason I came across it. Translation extraction is something that depends a lot on the context you build your project. Perhaps this project should limit itself in proving ways to make it easier for people to build this kind of feature themselves using the Node API.
Some things to consider:

vue-i18n supports custom formatting, which means one can use MessageFormat instead of the default key-based approach proposed by vue-i18n
One could write a complete new format (e.g. write fluent.js bindings to use with vue-18n and hook it to the custom formatting API)
Some people (like me) uses translation text instead of keys (i.e {{ $t('Text to be translated') }} - there are pros and cons on both styles and as mentioned before in the discussion here, using keys could lead to false positives on reports, blank translations with a broken UI, etc
One might want to remove already translated keys that are no longer in use
Or, keep keys no longer in use for whatever reason the project dictates

To build a standalone extraction solution, these have to be figured out:

How to deal with custom formats?
How to avoid false positives for key-based translatable text?
What to do with translations no longer in use?

Hi @erickwilder,
I find your observations right.
It isn't easy at all to build a generic extraction tool that could cover all the formats and the edge cases.
When I started it wanted to solve a specific problem covering specific requirements.
Then it grew up getting more flexibility and a bunch of options, but this doesn't make it a standalone extraction solution.
What is happening is that people are extending the library making it working with more custom formats,.for example.
That's why I don't believe that it can be a superic solution, but more kind of collection of specific solutions.
What would you suggest?

Hi!
I wrote small package for exporting missed strings from the report to json locale files. Works fine for my projects. Hope, it helps somebody.
vue-i18n-extract-translations
Still waiting for official release with that feature.

@gapon2401 would you like to integrate that feature in the library?

This is probably obsolete now.


Don´t Work in Huawey Y7

Before opening an issue:

[Y] My question isn't answered in any other issues (even the closed ones)
[Y] I'm not reporting a bug/error

If you open unnecessary/dumb issues, you'll be rewarded with appropriate tags.

I installed the app today and configured it but don´t make nothing, or better say, the only thing that does is used apples and restart the battle when is finished, but don´t select the support ni used carts during the battle

Device model: Huawei Y7 (Dub-LX1)
Screen size: 6.3 inch (1520 X 720)
Android Version: Android 8.1
RAM: 3GB

Phones having notch should be Android 9 or above, otherwise, FGA won't work
See https://github.com/MathewSachin/Fate-Grand-Automata/wiki/Game-Area-detection#case-4-your-phone-is-android-7-or-8-and-has-a-notch


[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>-2
Distro Version
Ubuntu 23.10
Other Software
$ which git
/usr/bin/git
$ git --version
git version 2.40.1
Repro Steps
git clone of a new repo is failing when cloning into a directory outside of the WSL VM using the WSL distro's git binary. The initially created .git dir HEAD and config files appear to be corrupted as seen from within WSL, but not Windows.
(I've anonymized my project and repo names)
$ wslpath -w $(pwd)
C:\dev\proj\myproj
$ git config --list --show-origin
<shows ~/.gitconfig as only config file with expected contents>
$ git clone https://
Cloning into 'MyProj'
fatal: unknown error occurred while reading the configuration files
$ cd MyProj/.git
$ ls -li
ls: cannot access 'config': No such file or directory
ls: cannot access 'HEAD': No such file or directory
total 0
-????????? ? ? ? ?            ? HEAD
-????????? ? ? ? ?            ? config
$ cat config
cat: config: No such file or directory
$ cat HEAD
cat: HEAD: No file or directory
These files appear to created without issue as accessed directly from Windows:
PS> cd C:\dev\proj\myproj\MyProj.git
PS > ls
Directory: C:\dev\proj\myproj\MyProj\.git

Mode                 LastWriteTime         Length Name

-a----         5/21/2024  12:35 PM             26 config
-a----         5/21/2024  12:35 PM             23 HEAD
(expected)
PS > Get-Content config
[core]
ignorecase = true
(expected)
PS > Get-Content HEAD
ref: refs/heads/master
(expected)
strace of the clone shows the newfstatat of config and HEAD failing (not surprisingly, given the above), which is the cause of the clone failure:
$ strace -o clone.strace git clone https://
Cloning into 'MyProj'
fatal: unknown error occurred while reading the configuration files
$ tail -n15 clone.strace
openat(AT_FDCWD, "MyProj", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
newfstatat(3, "", {st_mode=S_IFDIR|0777, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(3, 0x561125a099a0 /* 3 entries /, 32768) = 72
newfstatat(AT_FDCWD, "MyProj/.git", {st_mode=S_IFDIR|0777, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, "MyProj/.git", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4
newfstatat(4, "", {st_mode=S_IFDIR|0777, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(4, 0x561125a119e0 / 4 entries /, 32768) = 104
newfstatat(AT_FDCWD, "MyProj/.git/config", 0x7ffcef0cff30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "MyProj/.git/HEAD", 0x7ffcef0cff30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
getdents64(4, 0x561125a119e0 / 0 entries */, 32768) = 0
close(4)                                = 0
rmdir("MyProj/.git")          = -1 ENOTEMPTY (Directory not empty)
close(3)                                = 0
exit_group(128)                         = ?
+++ exited with 128 +++
Other notes:

I've be able to reproduce with the "Ubuntu" and "Ubuntu 24.10" WSL distros.
I've reproduced this behavior when cloning several other repos.

Expected Behavior
A successfully cloned git repo with .git/{HEAD,config} files accessible via their Windows drive or through WSL.
Actual Behavior
(see repro steps)
Diagnostic Logs
(see repo steps)

Adding logs from collect-wsl-logs.ps1:
WslLogs-2024-05-21_13-03-20.zip

I did reproduce the issue when generating the attached logs.

I just hit the same issue with a plain text file created via vim in my WSL distro, but to another location on the Windows C:\ drive. So the issue is not git-specific. I updated the issue title accordingly.

Reviewing the /mnt/c mount:
$ mount | grep 'C:\'
C:\ on /mnt/c type 9p (rw,noatime,dirsync,aname=drvfs;path=C:;uid=1000;gid=1000;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=5,wfd=5)

Thank you @flakfizer.
I wonder if the issue comes from the windows filesystem here. Can you share the output of chkdsk ?
Also can you share the full strace of the command that seems to crate the corrupted file ?

chkdsk reports no issues with the volume when run after repo-ing.
("Windows has scanned the file system and found no problems.
No further action is required."). Output is here: chkdsk.out.txt. Note from the initial report that I have no issues accessing the files from Windows and the files have the expected contents.
Redacted full strace output attached here
gitclone.strace.out.redacted.txt
.

If it helps, I also started hitting this issue and I can a persistent repro for it

Refer to related issue which is closed now. https://github.com/microsoft/WSL/issues/11619#issuecomment-2151353794
This should be fixed and available in latest updates, check for updates on windows.

I just hit the same issue with a plain text file created via vim in my WSL distro, but to another location on the Windows C:\ drive. So the issue is not git-specific. I updated the issue title accordingly.

Can you mention the exact steps of repro while creating a text file.

I'm not able to reproduce reliably. The comment you referred to was in reference to an issue I hit once but haven't seen since.

I kept hitting the same issue today.

Repro steps:

enter an empty folder, git init
enter .git, ls -la

config/HEAD files are not accessible

but if you use sudo ls -la

config/HEAD files are accessible with correct metadata and contents

Above steps are reproed with a new created mountpoint from c:/ to /mnt/test.

Git works good with native wsl disk under ~.

I doubt it is something wrong inside P9 file system. Is there anyway to find the logs?


Support for side mouse buttons

Possible to add support to listen to side mouse buttons XBUTTON1 and XBUTTON2?

Yes, you can modify the global-mouse-events.cc file to add wParam == WM_XBUTTONUP and wParam == WM_XBUTTONDOWN to the conditional statement at lines 49 & 51, then add the following to the else-if clause at line 64:
} else if (GET_XBUTTON_WPARAM(nMouseData) == XBUTTON1) {
    button = 4;
} else if (GET_XBUTTON_WPARAM(nMouseData) == XBUTTON2) {
    button = 5;
}

Finally got around to adding this in v1.2.0. 👍


Update mxdoc node definition script

Script Updates

Add support for html output as an option in addition to Markdown
Add in additional attributes not currently output per attribute: doc, ui name
Add in output and token port attribute support
Add in version, isdefaultversion, and inherit. For inheritance, allow to emit inherited attributes as an option.
For testing: add in html output for python tests as part of CI actions.

The formatting for html attempts to mimic that of Markdown as much as possible.
Examples
New Properties
Following is example output (run for CI action). It shows some of the additions include showing inheritance

HTML Output Comparison

Markdown Output Comparison

Generated HTML (For comparison example)

 Nodedef: ND_lama_conductor

 Type: BSDF

 Version: 1.0. Is default: True

 Doc: Lama conductor

Name
Type
Default Value
UI name
UI min
UI max
UI Soft Min
UI Soft Max
UI step
UI group
UI Advanced
Doc
Uniform

tint
color3
1, 1, 1
Tint

Main

Overall color multiplier. It should be used with parcimony, as a non-white value breaks physicality. The prefered way to define the color of a conductor is through the Fresnel attributes right below.

fresnelMode
integer
0
Fresnel Mode

Main

Fresnel mode
true

IOR
vector3
0.18, 0.42, 1.37
IOR

Main

Index of refraction (often denoted by eta), defining the color reflected by the surface in the normal direction.

extinction
vector3
3.42, 2.35, 1.77
Extinction

Main

Extinction coefficient (often denoted by kappa), influencing how the reflected color curve evolves between its value in the normal direction (or 0 degree), and 1 when reaching 90 degrees. A null value does not deviate the curve at all.

reflectivity
color3
0.945, 0.7772, 0.3737
Reflectivity

Main

Color reflected by the surface in the normal direction.

edgeColor
color3
0.9979, 0.9813, 0.7523
Edge Color

Main

Indicates how the reflected color curve evolves between its value in the normal direction (or 0 degree), and 1 when reaching 90 degrees. Note that this color is unlikely to be reached, and just bends the curve towards it when reaching grazing angles. A null value does not deviate the curve at all.

roughness
float
0.1
Roughness
0.0
1.0

Main

Micro-facet distribution roughness.

normal
vector3
None
Normal

Main

Shading normal, typically defined by bump or normal mapping. Defaults to the smooth surface normal if not set.

anisotropy
float
0.0
Anisotropy
-1.0
1.0

Anisotropy

Defines the amount of anisotropy, changing the co-tangent axis roughness from the original value to 1 (or to 0 with a negative value).

anisotropyDirection
vector3
None
Direction

Anisotropy

Overrides the surface tangent as the anisotropy direction.

anisotropyRotation
float
0.0
Rotation

Anisotropy

Rotates the anisotropy direction (possibly overriden by the previous attribute) around the normal, from 0 to 360 degrees.

iridescenceThickness
float
0.0
Thickness
0.0

200.0

Iridescence

Thin film thickness in nanometers, driving the iridescent effect.

iridescenceIOR
float
1.5
IOR
1.0
3.0

Iridescence

Thin film index of refraction, driving the iridescent effect.

exteriorIOR
float
1.0
Exterior IOR
1.0
3.0

Advanced

Defines what the IOR of the exterior medium is (can be either the outside medium, eg. air or water, or in case of a layered material, the top layer medium, like plexiglass or varnish).

out
BSDF
None

/easycla


WIP: [FLINK-9431]Introduce time bounded condition to cep

What is the purpose of the change
In cep the event is now driving the transformation of the NFA, I think the time factor should also be taken into account in some senior.
When a key's data is not endless, and if we want to match the following pattern after we match the AB after B has appeared for  ten seconds.
Pattern.begin("A").followedBy("B").notFollowedBy("C")

We can not emit the result because there is no branch can lead to the Final State, And i think we can add a TimeEnd state to describe a pattern that accepts a time condition evaluated by processing time / event time to compare the timestamp in the element we have meant before.
As described in the issue link,  there are two main reason why i introduce this feature

the notFollowedBy cant be at the end of the pattern
the within just compare with the element at start, and some key's data may not endless, so we have to evaluate condition not also on event but also on time

Brief change log

Add the method to distinguish the event driven condition or time drivern condition in IterativeCondition
when advanceTime, we not only prune the expire element, but also look the time bounded condition

Verifying this change
This change is already covered by existing cep tests, may be it need a little more about the new api.
This change added tests and can be verified as follows:
Documentation

Does this pull request introduce a new feature? (yes)

I'm closing this as "Abandoned", since there is no more activity and the code base has moved on quite a bit. Please re-open this if you feel otherwise and work should continue.


Feature Request: Give an API to reconstruct the query back from AST

This will really help in testing different queries and hence it will be possible to write an extensive and exhaustive test suite with it.

This would be best implemented as a separate library. This is how many other projects handle this. There is one change still to be made to the AST (standardising the type and variant to a single type see issue #3 ). There could also be a bit of change in the AST with issue #20
I'd be willing to work on this, along with a traverser allowing a user to move along the AST in a standard manner. (I've built similar libraries for Salesforce SOQL using this AST as inspiration). It would be cool to give back if people are interested in this.
It could in theory be then used to build more advanced language features that would compile down to raw SQL (or different dialects), similar to SASS, Babel, etc. (This would be a move away from the original intention of the library as a validator for Codeschool SQL classes so not sure how that would go. Which by the way :+1: to Codeschool. 😄  )

Hey @gurvinder372,
I thought I'd give a quick update on this. I'm working on the AST walker at the moment. Im hoping to have this finished this weekend. It's not in Github yet, I'll upload it once I've simple docs and some more of the main statement types covered.
This is it in action moving over create-check-1.json. So it's going well. :)

Once this is done I should have the generator done within the next week-ish (SQL is a lot more expressive than SOQL and that one took 2 days to build. Tests are the time consuming part). With this you'll be able to modify the AST in a standard manner and regenerate it back to SQL.
@nwronski I also may have some pull request to clean up some small bits of the AST structure/naming to make movement a bit easier, I'm not sure if they're 100% needed yet so I'll hold off on issues or pull requests. But just a heads up :)
Let me know what you think. Any ideas on the generator too would be good (template/string concat/etc).

Thanks James, I apologies for delayed reply but really appreciate your response.
Looking at AST-Walker in the screenshot, I think it will be helpful in getting more clarity on how AST is generated and what steps are involved once this AST walker has been implemented.
I want to go through the walker and understand in depth on how I can reverse the steps from AST and get the input string back again. It will help in creating a library which can construct input string from AST and will make adding test-queries easier and faster. I am looking forward to it.

Hey,
The AST is generated from this library. It's just a simple JSON object. The walker works exactly the same as the estraverse library does for the JavaScript AST. The API is the exact same so the docs for that can give a good overview.
The walker is just for manipulating the AST, allowing you to build linters or items like that on top of it.
Generation of code from the AST is really just string concatenation. To give an example: if we take the following :
CREATE INDEX `bees`.`hive_state`
ON `hive` (`happiness` ASC, `anger` DESC)
WHERE
  `anger` != null AND NOT `happiness`

and pass it through sqlite-parser, then we get:
{
  "statement": [
    {
      "type": "statement",
      "target": {
        "type": "identifier",
        "variant": "index",
        "name": "bees.hive_state"
      },
      "on": {
        "type" : "on",
        "target": "hive",
        "columns": [
          {
            "type": "identifier",
            "variant": "column",
            "format": "indexed",
            "name": "happiness",
            "direction": "asc"
          },
          {
            "type": "identifier",
            "variant": "column",
            "format": "indexed",
            "name": "anger",
            "direction": "desc"
          }
        ]
      },
      "variant": "create",
      "format": "index",
      "where": [
        {
          "type": "expression",
          "format": "binary",
          "variant": "operation",
          "operation": "and",
          "left": {
            "type": "expression",
            "format": "binary",
            "variant": "operation",
            "operation": "!=",
            "left": {
              "type": "identifier",
              "variant": "column",
              "name": "anger"
            },
            "right": {
              "type": "literal",
              "variant": "null",
              "value": "null"
            }
          },
          "right": {
            "type": "expression",
            "format": "unary",
            "variant": "operation",
            "expression": {
              "type": "identifier",
              "variant": "column",
              "name": "happiness"
            },
            "operator": "not"
          }
        }
      ]
    }
  ]
}

To reverse the operation we walk the AST taking each node in turn and putting it through a template. A really basic version of this would be the following for the on node:
function on(node){
  var columns = node.columns.map((column) => {
    return `\`${column.name}\` ${column.direction}`
  }).join(', ')
  return `ON \`${node.target}\` (${columns})`;
}

You recurse down the tree and build up the program from the bottom up (it's easier). In this case we would create the node in the leave function of the traverser.
Again this is just an idea of how it might work. The final product needs to take into account edge cases, alternative syntax, etc. Also how you handle the strings is a case in itself. I've used template strings in the above case but you could use a template library (underscore, moustache, etc).
Some of the harder bits are when you have to handle logic for math operations, functions, etc. Hope this gives a bit of an overview?

@jdrew1303 sorry I haven't been able to respond sooner. I am definitely open to suggestions for how I can further standardize the AST. I am also hoping to clear out some of the outstanding issues soon, such as the expression parsing problems, in the next couple weeks. I think having a tool for traversing the AST would be greatly appreciated by many users, including myself, so thank you. I'll be available later today to take a look at what you've been working on, if you want, as well.

Hey,
@gurvinder372  Better late than never, here's the preliminary repo. It will work at the moment for the majority of cases. I'll be spending today cleaning up the docs and code (ive a lot to delete 👍 ). If it blows up when encountering a node it doesn't understand then you can fallback to iteration. Also the code will be heavily refactored over the next day so dont look under the hood. 😃
@nwronski  I'll also start writing up some more info on the AST (all nodes having a type is the main one, even the base node). On a side note, have you ever looked at Arel before? It's the AST manager thats used by Rails Active Record under the hood. I was thinking that maybe by looking at that as a model for the node types for the parser to standardise interactions/names/etc? If they've done the thinking before and worked out kinks might as well use it?
Hopefully tomorrow I can start working on a generator for SQLite. Ill make it pluggable to be able to hook in other syntaxes (MySQL, Postgres, etc). I'll be basing a lot of the work off squel.js. Never know it might be good for them to get on board to remove the burden of this. Also going to take a look at their AST to see if there's anything worth stealing borrowing. 🤔

Traverser is good to go. (You'll have to use the iterator fallback until I finish pull requests for some ast changes in the sqlite-parser as there are some nodes that it doesnt know how to move through).
Also, may I present the generator repo: https://github.com/jdrew1303/sqlgenerate
It's in process at the moment. You'll see commits going through over the next few days. 👍 I've been a bit over with the traverser (and that was relatively straightforward vs the work needed for a generator) so it's looking like it'll take 2-ish weeks for a beta quality library. It will only generate SQLite syntax but over the next while I'll add in different syntax generators.

@jdrew1303 very cool! If you are thinking about submitting a PR for this repo, please take a look at this first and this first, as I've already started adding missing type properties where I find them. If you find other nodes without a type please let me know and I will add them as well.

@nwronski Thanks 😃 I think you've hit most of the ones I was looking at. 👍 If I come across any more I'll give you a shout for the more complicated stuff or I'll put together an issue and a PR for simple stuff.

@jdrew1303 I made a ton of changes and fixes over the last two weekends and I am almost ready to release v1.0.0. In the meantime, I published v1.0.0-beta so you can pull the v1.0.0-beta tag of the repo to get the latest stuff or you can install it via npm using npm i sqlite-parser@beta. Let me know if you have a chance to check it out.

Hey @nwronski !
Cool. I was waiting until the majority of the changes were in before working on the generator. I'll be spending tomorrow reworking the traverser to accommodate the new node types and working on the generator after that. So far it looks really good 👍 😃 Thanks for cutting a version for it. For some reason I couldn't get node to pull in the hashed version into the test suite 😫 with the beta its able to pull that in. This is going to be so cool! :sunglasses: I can't wait to start building tools on top of it. First up, a linter; its always great to ruin someones day :trollface: :joy:
There are two items at the moment that aren't handled by the parser :

location and range information on nodes (for sourcemaps, adding comments inline, debugging, etc)
comments (will allow for documentation generation tools and retaining comments on code when the parser and generator is used for refactorings on codebases)

I dont know if these are items of value for you at the moment? If there's anything in there that doesn't make sense for codeschool let me know and I can handle development of those bits? :relaxed:
I'll give you a shout with anything else I come across :neckbeard: Sorry I didn't get back sooner on this (Github isn't sending me notifications on repos :expressionless:)

I could probably add a node for comments if that is worthwhile. They are parsed but dropped from the AST right now. Could you create a new issue here for that one?
Will have to look into the sourcemap stuff some more to see what would be possible.

+1


Promise internal then expect does not fail test

Bug
What is the current behavior?
Lets say I have a class named UserStorage which has a method called clear().
This method returns new Promise<null>((resolve, reject) => { /** code */ });
This method works fine and is not the main issue. The issue is an internal method
is ran inside the promise that fails but does not fail the test.
test("w", () => {
    expect.assertions(1);
    return UserStorage.clear()
        then((res) => {
            const exists = fs.existsSync(`${dirPath}`);
            expect(exists).toBe(true); // the dir was just deleted in the promise. UserStorage.clear()
        })
        .catch((err) => console.log(err));
});

Is it something to do with the fs library perhaps? exists is false in this test. I get this as the return.
    Test Suites: 1 passed, 1 total
    Tests:       8 passed, 8 total
    Snapshots:   0 total
    Time:        3.425s
    Ran all test suites matching /^/__\*u*/___.spec\.ts$/ with tests matching "^testing the datastore ".
      console.log spec/datastore.spec.ts:167
    { Error: expect(received).toBe(expected)

    Expected value to be (using ===):
      true
    Received:
      false
        at /__\*u*/___.spec.ts:166:28
      matcherResult:
       { actual: false,
         expected: true,
         message: [Function],
         name: 'toBe',
         pass: false } }

What is the expected behavior?
The test should fail if any expect fails in the test.
Please provide your exact Jest configuration and mention your Jest, node, yarn/npm version and operating system.

Does it work when you remove  .catch((err) => console.log(err));? I think it is not failing because you are caching the test failure exception

@rogeliog there we go. Yeah that did it. Although I can see why this makes sense, it would be nice to still get a log of the error if it did fail. Since I am testing my own code later on if something fails I would like to see what particular piece failed from my throw statements.

I agree that it would be great to be able to get a better error 😄  but it seems like it will require some work... the same is true for this example
it('foo bar', () => {
  try {
    expect(1).toBe(2);
  } catch (e) {}
})

um.... just catch, log and rethrow / return a failed promise.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch


Fetching vod list from Video Download no results occur

Hi,
Unsure of how long this has been happening but when you go to a channel, click on video download, then click on fetch video list a loading prompt appears for about a second then disappears. Turning on developer logs just shows this:
<IP_ADDRESS> - - [08/Sep/2023:01:19:00 +0000] "GET /api/v0/twitchapi/videos/ HTTP/1.1" 404 219 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"

there's seemingly no channel id passed to the url, could you maybe check the browser dev tools console as you do all this and check for any errors?

i just realised why this was happening, i pushed an update to dev that's building