enable mapping and filtering objects with transducers

Hi!
PR related to #2668

If you want to understand why I'm nervous about this, see  #257, #364, #546, #625, #656, #920, #1317, #1601, #1817, #2046, and most comprehensively, #1067.
The problem is this:
> R.reduce((a, b) => b - a, 0, {x: 1, y: 2})
1
> R.reduce((a, b) => b - a, 0, {y: 2, x: 1})
-1

This scares me.
...
A lot.

:ghost:

Hi @CrossEye, good point!
I understand you, then, one solution for keeping the simetry in R.map and R.filter without breaking reduce and others is tagging that _xmap and _xfilter transducers are associative and having a different _reduce behaviour depending on the transducer that is passed.
What do you think?
Thanks!

That's a really nice clean-up.  When I tried to think of clean ways to address the concerns I mentioned earlier, everything I came up with was downright ugly.  This seems pretty clean.
I'm :+1: on this.  I would like to hold it open for a few days to allow others from @ramda/core to have a chance to chime in.  But my take is that this is nice work.  Thanks for the contribution!

Hi @CrossEye
I'm sad to say that my second solution it doesn't work well. I added new tests that doesn't work as expected:
  it('throws if input is an object and function is a composition with some no associative transducer', function() {
    var throwsATypeError = function(err) {
      return err.constructor === TypeError &&
             err.message === 'reduce: list must be array or iterable';
    };
    assert.throws(function() {R.into({}, R.compose(mapInc, takeOne), {a: 1, b: 2});}, throwsATypeError);
    assert.throws(function() {R.into({}, R.compose(takeOne, mapInc), {a: 1, b: 2});}, throwsATypeError);
  });

I have to work a little bit more for having a consistent behaviour with transducer composition. My idea is if some transducer like takeOne is not associative, then object input shouldn't work.
Cheers!

I fixed map and filter composition. I could squash the last two commits after people from @ramda/core give me the approval.
Thanks!

Hi!
I checked that in map.js and filter.js there is code that handles the object case:
// filter
      _reduce(function(acc, key) {
        if (pred(filterable[key])) {
          acc[key] = filterable[key];
        }
        return acc;
      }, {}, keys(filterable))

// map
      return _reduce(function(acc, key) {
        acc[key] = fn(functor[key]);
        return acc;
      }, {}, keys(functor));

I think that, after the changes of this PR, two cases could be refactored to:
// filter
return _reduce(_xfilter(_stepCatObject), {}, filterable);

// map
return _reduce(_xmap(_stepCatObject), {}, functor);

Do you think it's good to do the refactor in this PR?

Yes, I would include that refactoring in this same PR.  Thanks for persevering with this!

@kedashoe:
You're absolutely right that the interesting property here is commutativity, not associativity.  (It's funny, I have a reasonably strong background in math, and I know clearly what those two mean, but people often make exactly this mistake, and it never triggers my, "Hey, that's wrong" signal.)
You're probably right too about reduced.  Just in general, I've never been thrilled with its existence.  In fact, our whole transducers work bothers me a bit.  It feels more clever than useful.  But when it's useful, it's very useful.  I'm simply not sure it's worth the complexity.  I've been in favor of the idea of this PR because I think it could occasionally be very useful as well.  But it would be a shame to say that we follow the Functor laws only if you don't happen to return reduced.  So yes, I'm starting to doubt it altogether.
@xgbuils: What do you think about the fact that this would break the Functor laws?

Sorry by I don't get it. Could you put an example that breaks the law?

From the functor laws:

iii. No parts of f's return value should be checked.

Here we are checking to see if the return value is the special reduced sentinel.
In any event, the commutativity issue is more to the crux of things I reckon. I've always felt we should allow folding objects regardless, so I'll let @CrossEye take this one.

I'm trying to link the concepts between R.reduced function and No parts of f's return value should be checked. Maybe I need a specific example like:
given functions f and g:
var f = function(x) {
...
}

and object:
var obj = {...}

I'm really trying to link the concepts between R.reduced function and No parts of f's return value should be checked. Maybe I need a specific example like:
given functions f and g:
var f = function(x) { ... }
var g = function(x) { ... }

and object:
var obj = {...}

R.map does not follow the law n.
Maybe could help me.

Here's a concrete example, @xgbuils:
> jQuery.map ([1, 2, 3, 4, 5], n => n % 2 === 0 ? null : n * n)
[1, 9, 25]

Note that jQuery.map inspects the value returned by the given function. This is unlawful: map (x => x) should be equivalent to x => x for any functor, but jQuery.map (x => x, [null, null, null]) evaluates to [] rather than [null, null, null].

Hi @davidchambers
Thanks for the explanation. I got it. But your answer it raises another question. Is it really necessary having this implementation rule (No parts of f's return value should be checked)? Is not enough being compliant with identity an composition laws for preventing these weird behaviour? For example, jQuery.map is not compliant with composition law.
var f = x => x === 1 ? null : 2* x;
var g = x => x === null ? 5 : 3 * x;

jQuery.map(jQuery.map([1, 2], f), g) // [12]
jQuery.map([1, 2], x => g(f(x))) // [5, 12]

Maybe is something to talk on fantasy-land repository.
Hi @kedashoe
I think I got it you say. An example:
var f = x => x === 1 ? {'@@transducer/reduced': true, '@@transducer/value': 2 * x} : 2 * x
var g = x => 2 * x

// breaking composition law
R.map(g)((R.map(f, [1, 2])) // 4
R.map(x => g(f(x)))([1, 2]) // [NaN, 8]

I have to think about it. Thanks!

After this dialog I learnt about some points.

Tests like eq(R.into([], x => x + 1, {a: 3, b: 2, c: 1}), [4, 2, 0]); are wrong because an agreement I perceived is if we consider two equivalent inputs, then, we don't want to apply to the same function and get different outputs. Then, if we consider that {a: 3, b: 2, c: 1} is equal to {b: 2, a: 3, c: 1}), then we would like that R.into([], x => x + 1, {a: 3, b: 2, c: 1}) was equal to R.into([], x => x + 1, {b: 2, a: 3, c: 1}) but it isn't. Then, in my opinion, R.into({}) is the only function able to get the equivalence:
R.into({}, x => x + 1, {a: 3, b: 2, c: 1}) // {a: 4, b: 3, c: 2}
R.into({}, x => x + 1, {b: 2, a: 3, c: 1}) // {b: 3, a: 4, c: 2}

Because {a: 4, b: 3, c: 2} is equal to {b: 3, a: 4, c: 2}.
R.into('') and R.into([]) should be avoided to operate with objects.

map is currently functor laws compliant with array an objects. However it is not compliant with transducers:
R.into([], R.compose(R.map(f), R.map(g)), array) is not equivalent to R.into([], R.map(R.compose(g, f), array) because of functions could use R.reduced function.
Then,

@xgbuils: What do you think about the fact that this would break the Functor laws?

I think that we could keep the same behaviour as now. map. How we can do it? An easy way is avoiding to do the proposed refactor (_reduce(_xfilter(pred, _stepCatObject), {}, filterable) and _reduce(_xmap(fn, _stepCatObject), {}, functor)).
Of course, I'm going to replace @@transducer/associative to @@transducer/commutative and only _objectReduce will have set this property to true.
What do you think?
On the other hand, it comes to me a thought if there are some way to implement lawful transducers. But it's another topic.

I checked that in map.js and filter.js there is code that handles the object case

@xgbuils: while this is true, keep in mind that the specialization for arrays can also be expressed in terms of transducers (#2622).

Do you think it's good to do the refactor in this PR?

No.

The PR still includes map, but map is not commutative.

Hi @kedashoe

The PR still includes map, but map is not commutative.

The only transducer that is commutative is _stepCatObject
const ts = '@@transducer/step';

_stepCatObject[ts](_stepCatObject[ts](acc, a), b) is equivalent to _stepCatObject[ts](_stepCatObject[ts](acc, b), a)

_xmap just propagate the commutativity. I mean, if xf is commutative, then new XMap(f, xf) is commutative.
You can see the related tests:

composing map and take (no commutative)
composing map and filter (commutative)

PS. I noticed that I didn't update the description of tests and it is still written associative instead of commutative. I will fix it.

_xmap just propagate the commutativity.

Hmm, why is it propagated in _xmap and not in _xtake?

Because _xtake is order-sensitive.

Because _xtake is order-sensitive.

Map is order sensitive. Is take though? What do you get if you take 5 and then take 1? What if you take 1 and then take 5?

Hi @kedashoe!

Map is order sensitive. Is take though?

It isn't. For example:
const ts = const ts = '@@transducer/step';
const xTakeOne = new XTake(1, _stepCatObject);
let acc = {}

xTakeOne[ts](xTakeOne[ts](acc, {a: 1}), {b: 2}) // _reduced({a: 1})
xTakeOne[ts](xTakeOne[ts](acc, {b: 2}), {a: 1}) // _reduced({b: 2})

What do you get if you take 5 and then take 1? What if you take 1 and then take 5?

When I talk about transducer commutativity, I'm talking about the point indicated above, not about function composition like R.compose(R.take(1), R.take(5)) ===  R.compose(R.take(5), R.take(1))

not about function composition

Ya I think I was not looking at this correctly.
I don't understand how this addresses the initial concern though. I'm not sure what property we're actually defining here and what it has to do with commutativity. I don't want to hold this up though if others want to move forward.

I want to look through this one more thoroughly again.  I should have time starting Wednesday.

I just want to note that I haven't forgotten this.  But I have to say that every time I try to get through this, I end up confused.  Part of this is that while what transducers do is pretty well clear to me, it's not always clear how they do so.  But part of it is really understanding why this is really important, and what's left of the original concerns that spawned it.  I will spend some more time in the next few days, but I'm afraid I might get woozy again.

Hi @CrossEye
It's curious, because I learned about transducers thanks to ramda library. A year ago I tried to create a library that manages lazy evaluation using iterables. But after making some performance benchmarks I noticed that ramda won using transducers over all the libraries that try to do same aproach than me. Then, I needed to look into what are transducers and how they work. Indeed, this PR and  the comments I received are really valuable for learning about transducer concepts.
I can try to synthesize what has been talked during these days. First of all I noticed that sometimes I used the word transducer when I wanted to say transformer. Then, I want to clarify the two concepts:

A transformer is an object that has some properties like @@tranducer/init, @@tranducer/step, @@tranducer/result, etc.
A transducer is a function that receives a transformer and returns another transformer.

My final proposal can be splitted in two parts:

It enables to transduce objects with commutative transformers and throws an error when not.
R.map/R.filter remain functor lawful compliant with arrays and objects and remain no functor lawful compliant with transducers.

About point 1:
A commutative transformer is new concept that I defined in this way. A transformer xf is commutative if @@transducer/step complies this law for each acc accumulator and a and b input items:
const ts = '@@transducer/step';
xf[ts](xf[ts](acc, a), b) is equivalent to xf[ts](xf[ts](acc, b), a)

or for each acc and <key, value> pairs <ka, a> and <kb, b>:
const ts = '@@transducer/step';
xf[ts](xf[ts](acc, a, ka), b, kb) is equivalent to xf[ts](xf[ts](acc, b, kb), a, ka)

We can notice that at least _stepCatObject is a commutative transformer. And, for each commutative transformer and object input that is traversed by _objectReduce, the transduced result is the same regardless the order of the object keys (forget objects with reduced values at the moment, I'm going to talk about it in the point 2).
We can also notice that:

_xmap(f, xf) is a commutative transformer if xf is commutative transformer.
_xfilter(f, xf) is a commutative transformer if xf is commutative transformer.

I took advantadge on it for creating a new @@transducer/commutative prop that indicates if transformer is commutative or not:

_stepCatObject has the property  @@transducer/commutative set to true
_xmap(f, xf) has the property  @@transducer/commutative set to true if and only if xf has the property  @@transducer/commutative set to true
_xfilter(f, xf) has the property  @@transducer/commutative set to true if and only if xf has the property  @@transducer/commutative set to true.

@kedashoe pointed that my definition of commutative transformer isn't related to the concept of commutativity. I'm open to change to another better name if you see it right.
I will talk about de point 2 when I have a while.
Cheers!

why this is really important, and what's left of the original concerns that spawned it.

After getting this merged, I'd modify _dispatchable to utilize transducers to map and filter arrays and objects, and I'd get rid of array and object specializations and associated ad-hoc type switching. Then I'd add Map suport to map and filter by adding _stepCat and _reduce for Map.

Hi! A month ago I said that:

R.map/R.filter remain functor lawful compliant with arrays and objects
This part is true because the particular implmentations for arrays and objects are not modified.

[...] and remain no functor lawful compliant with transducers.
And after thinking a little more, I don't know what means be lawful compliant with transducers or transformers

Assuming that transducer is a function that receives a transformer and returns a transformer. A transducer proposal functor laws could be:

Identity law:
R.map(x => x) is equivalent to xf => xf
Composition law:
R.compose(R.map(f), R.map(g)) is equivalent R.map(R.compose(g, f))

Notice that R.reduce or R.into does not participate on these laws. Then, we have no problem with objects with @@transducer/reduced property because @@transducer/reduced property is something handled by _reduce implementation.
The real problem with transducers are not object inputs: The real problem is using an object accumulator with R.reduce:
var f = ([key, value]) => ({[key]: 2 * value})

R.into({}, R.map(f), [['a', 1], ['b', 2]]) // {"a": 2, "b": 4}
R.into({}, R.map(f), [['@@transducer/reduced', 1], ['b', 2]]) // undefined

I think it's an issue of javascript transducer protocol.
Cheers!

Good catch!
Workaround: store the object in accumulator as array of [key, value] pairs and use fromPairs as @@transducer/result.

Hi @GingerPlusPlus ,
I forgot this PR. Updated with your proposals.
Thanks!

@GingerPlusPlus Any chance of taking a look again and seeing if its ready for a merge?

I would be reluctant to merge this until @@transducer/reduced becomes a valid key.

Hi @GingerPlusPlus

I would be reluctant to merge this until @@transducer/reduced becomes a valid key.

I don't know how @@transducer/reduced issue is related to this issue. As I showed, the problem about @@transducer/reduced exists regardless merging this PR. Is there another issue for fixing  @@transducer/reduced issue? On the other hand, I'm not sure how to fix it without breaking the transducer protocol. I mean, the specs says that a value with @@transducer/reduced prop should be considered a reduced value.

I don't know how @@transducer/reduced issue is related to this PR.

I'm already thinking in terms of reimplementing object-to-object paths with the enhanced transducers, and that issue would cause a (small) regression there. And, in general, I'd be reluctant to merge code with known issues.

As I showed, the problem about @@transducer/reduced exists regardless merging this PR.

Where did you show it?

Where did you show it?

Some repplies above I said:
var f = ([key, value]) => ({[key]: 2 * value})

R.into({}, R.map(f), [['a', 1], ['b', 2]]) // {"a": 2, "b": 4}
R.into({}, R.map(f), [['@@transducer/reduced', 1], ['b', 2]]) // undefined instead of {'@@transducer/reduced': 1, b: 2}

Then, the issue about @@transducer/reduced as valid key is not introduced in this PR.

I'm going through old issues and trying to triage them.  This one still has my head spinning, and I'll come back to it soon.


Fix: @properties and categorize them as attributes

Fixes https://github.com/mkdocstrings/python/issues/14, Fixes https://github.com/mkdocstrings/python/issues/9
We classify if functions are a @property by checking if they have property in labels.
Fixes:

@property now shows correctly alongside the attributes
@property renders correctly with CSS class doc-attribute
@property doesn't show parens anymore
All objects are not properly categorized (see issue#14)

For material theme only for now

Oh, I still need to check for property here: https://github.com/pedrolabonia/python/blob/d2d0168af31bd0aff05202cdff464476b2d9dfad/src/mkdocstrings_handlers/python/templates/material/_base/children.html#L90
I'll commit that tomorrow

Please keep separated changes in different PRs :slightly_smiling_face:
One for #9 first. #14 has not been discussed yet.


Ability to hide features that extend beyond a specified window

Would be incredibly helpful (especially with RNASeq / RNASeq Coverage) to hide all features in any(all) tracks that lie outside a specified window.

This would be an easy way to get rid of mis-mapped RNASeq reads which have skips that are extremely long and span between genes.
It would remove the visual clutter of other features that are obviously too long (therefore likely irrelevant) for what is being investigated.
I imagine this could potentially improve performance when only investigating a small region.

Are these weird RNASeq reads correctly or incorrectly mapped?

I don't have the actual RNASeq data to hand so I can't say for sure. I'm guessing that it might be due to 2 regions of very similar sequence being close together.
For example, a read that came from gene1 exon2-3, ends up mapped as spanning from gene1 exon2 to gene2 exon3 because gene1 exon3 and gene2 exon3 are very similar.
Have a look at the region Si_gnH.scaffold00008:424866..433120 for an example.


Understand convergence issues better through plotting and reporting

[X] better plotting of group level prior/posteriors
[x] plot participant level priors/posteriors. Note participant level priors are identical to group level parameters (for the hierarchical model). Determine if the problem the uninformative priors on alpha and epsilon.


[Bug]: failureMessage is coloured when syntax errors

Version
29.7.0
Steps to reproduce

Create a simple test in a typescript file with a syntax error: test('sum', () => { expec(1+2).toEqual(3) }); $$
jest --json or jest | cat

Expected behavior
I expect failureMessage or testExecError to not have colour codes
Actual behavior
failureMessage and testExecError has colour codes
Additional context
This isn't about writing to stdout, as these properties will have colours in them if you're writing custom reporters as well.
I haven't dug who introduces those codes, but --colors or FORCE_COLORS config does not impact them.
Environment
Need to install the following packages:
<EMAIL_ADDRESS>Ok to proceed? (y)
  System:
    OS: Linux 5.15 Ubuntu 20.04.6 LTS (Focal Fossa)
    CPU: (8) x64 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
  Binaries:
    Node: 18.18.0 - ~/.config/nvm/18.18.0/bin/node
    npm: 9.8.1 - ~/.config/nvm/18.18.0/bin/npm
  npmPackages:
    jest: ^29.7.0 => 29.7.0

Did you try:
npx jest --json --no-color

or:
FORCE_COLOR=false npx jest --json

For me these work as expected, i.e. there no no ansi escape codes in the output. Although I don’t see failureMessage or testExecError in the output too. Might be there are issues with reproduction steps.

I see it regularly. My test files are in typescript and I use ts-jest
// hello.test.ts
test('sum', () => { expec(1+2).toEqual(3) }) $$

// jest.config.ts
import type {Config} from 'jest';
const config: Config = { preset: 'ts-jest' };
export default config;

node_modules/.bin/jest ./hello.test.ts --json
{"numFailedTestSuites":1,"numFailedTests":0,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":1,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":0,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1712138134523,"success":false,"testResults":[{"assertionResults":[],"coverage":{},"endTime":1712138135196,"message":"  ● Test suite failed to run\n\n    \u001b[96mhello.test.ts\u001b[0m:\u001b[93m1\u001b[0m:\u001b[93m21\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS2552: \u001b[0mCannot find name 'expec'. Did you mean 'expect'?\n\n    \u001b[7m1\u001b[0m test('sum', () => { expec(1+2).toEqual(3) })\n    \u001b[7m \u001b[0m \u001b[91m                    ~~~~~\u001b[0m\n\n      \u001b[96mnode_modules/@types/jest/index.d.ts\u001b[0m:\u001b[93m14\u001b[0m:\u001b[93m15\u001b[0m\n        \u001b[7m14\u001b[0m declare const expect: jest.Expect;\n        \u001b[7m  \u001b[0m \u001b[96m              ~~~~~~\u001b[0m\n        'expect' is declared here.\n    \u001b[96mhello.test.ts\u001b[0m:\u001b[93m2\u001b[0m:\u001b[93m1\u001b[0m - \u001b[91merror\u001b[0m\u001b[90m TS2304: \u001b[0mCannot find name '$$'.\n\n    \u001b[7m2\u001b[0m $$\n    \u001b[7m \u001b[0m \u001b[91m~~\u001b[0m\n","name":"/home/path/to/hello.test.ts","startTime":1712138135196,"status":"failed","summary":""}],"wasInterrupted":false}

ts-jest is managed in its own repo. Any issues with it must be reported there.
As already mentioned, FORCE_COLOR=false does what you want.


set but no get on class... but using get on instance of class compiles.

TypeScript Version:  3.3.3333
Search Terms:
typescript default get when only set present
namespace Controller
{
    export class MainController
    {
        private readonly _codeWorkflowState = new CodeWorkflowState();

        private handleInterpreterWorkerMessage(e: any)
        {
            if(this._codeWorkflowState.hasNexToInterpret)
            {
                // bug? nextToInterpret accessor does not exist. No static error reported. newerCode's value is undefined (the value) at runtime.
                const newerCode: string = this._codeWorkflowState.nextToInterpret;
            }
        }
    }

    class CodeWorkflowState
    {
        private _nextToInterpret : string | null = null;

        set nextToInterpret(code: string)
        {
            this._nextToInterpret = code;
        }

        get hasNexToInterpret() : boolean
        {
            return this._nextToInterpret !== null;
        }
    }
}

Expected behavior:
Error: no 'nextToInterpret' property on class 'CodeWorkflowState'
OR
Error: default compiler supplied accessor 'nextToInterpret' has type undefined but assigning to type string.
Actual behavior:
Compiles fine.  Variable of type string has value undefined at runtime.
Playground Link: https://www.typescriptlang.org/play/index.html#src=namespace Controller
{
    export class MainController
    {
        %2F**
         * Tracks the current state of code moving from editor%2C to interpreter%2C to renderer.
         *%2F
        private readonly _codeWorkflowState %3D new CodeWorkflowState()%3B

        private handleInterpreterWorkerMessage(e%3A any) %2F%2F any because from outside TypeScript so can't enforce type
        {
            if(this._codeWorkflowState.hasNexToInterpret)
            {
                %2F%2F bug%3F nextToInterpret accessor does not exist. No static error reported. newerCode's value is undefined at runtime.
                const newerCode%3A string %3D this._codeWorkflowState.nextToInterpret%3B
            }
        }
    }

    class CodeWorkflowState
    {
        private _nextToInterpret %3A string | null %3D null%3B

        set nextToInterpret(code%3A string)
        {
            this._nextToInterpret %3D code%3B
        }

        get hasNexToInterpret() %3A boolean
        {
            return this._nextToInterpret !%3D%3D null%3B
        }
    }
}

TypeScript doesn't have a concept of writeonly properties. See #21759

Ok, so let's say I've implicitly created a getter.  What is the return type of this getter? I would think it would have to be undefined since this is the value that is actually returned by using it.  So why is the result of that getter assignable to const newerCode: string ?

Also, I'm not sure the duplicate label fits. I'm not advocating that this usage pattern should be supported. I'm advocating that it be a compile error. The impact of emitting this code, for our application, was that we had a value of undefined assigned to a variable of type string.  This defeating of the type system lead to unexpected crashes for us.  I believe CSA has enough information to flag this assignment as illegal. I think it should.

Also, I'm not sure the duplicate label fits. I'm not advocating that this usage pattern should be supported. I'm advocating that it be a compile error. The impact of emitting this code, for our application, was that we had a value of undefined assigned to a variable of type string. This defeating of the type system lead to unexpected crashes for us. I believe CSA has enough information to flag this assignment as illegal. I think it should.

I'm advocating that it be a compile error.

What is "it" ? The existence of a setter without a getter, or an assignment to the property? The former would be a breaking change, the latter needs representation in the type system, which is effectively the same as having a writeonly modifier (since that's what we'd have to emit to a corresponding .d.ts)

Sorry, by "it" I mean the assignment to the field newerCode in:
const newerCode: string = this._codeWorkflowState.nextToInterpret;
I think that assignment should generate a static error. I don't see the immediate connection to the writeonly modifier because I'm not actually sure what that means. Maybe my view is simplistic, but in the context of my submitted code I see the world as follows:

The single line above is (currently) a legal TypeScript statement in the context of the provided code.
It is an assignment with a lhs and a rhs.
During type assignment, we need to do a type assignment to the lhs variable declaration and the rhs expression.
Type assign to the lhs variable string because of the annotation.
Type assign to the rhs expression type undefined (because this is the value I observe at runtime).  I assume all invocations of non-existent getters on a class yield the value undefined.
rhs type undefined is not invariant nor covariant wrt type string therefore report static error.

Our of curiosity, currently, what is the type assigned to the rhs expression of the assignment in the example code?

To the absolute highest extent possible, an implementation file and a generated declaration file need to behave identically. Knowing that, take this class
// a.ts
class A {
  set y(s: string) {
  }
}

And run it through tsc --d:
// a.d.ts
declare class A {
    y: string;
}

Note that it would be wrong to generate
    y: string | undefined;

because the class doesn't allow writes of undefined to y,
The correct declaration file would say
    writeonly y: string;

@RyanCavanaugh said:

The existence of a setter without a getter [producing a compiler error] ... would be a breaking change

Seems worth considering.  With --strictPropertyInitialization enabled I am surprised when I can read a non-optional non-undefined-able property and get undefined.  Similar to how #27899 is asking for static properties to get checked for initialization, I'm imagining this issue asking for accessor-implemented properties to also get checked this way:
class Foo {
    set prop(x: string) { }
    //  ~~~~ <--
    // Property 'prop' has no 'get' accessor and its 'set' accessor type does not include 'undefined'.
    // Either
}

which could be silenced either by accepting undefined
class Bar {
    set prop(x: string | undefined) { } // no error
}

or by declare-ing the getter (which is not valid today)
class Baz {
    set prop(x: string) { } // no error
    declare get prop(): string;
}

Of course this is a breaking change, but is setter-only code more likely to be intentional or a mistake?
In any case, people coming here should probably be aware of ESLint's accessor-pairs linter rule, since it might help them.


Persistent "Invalid Session error code 101" when trying to afterSave on an anonymous user

Hi there,
Thanks for a great system!
I was recently trying to add custom data to an anonymous user with cloud code via an afterSave callback, and I started getting a weird "Invalid Session error code 101" in the iOS client code.
Once this issue happened once, it seemed impossible to get rid of, until I deleted the build off my device, deleted derived data and restarted xcode.
I think I managed to track it down to not calling Parse.Cloud.useMasterKey();. However, the weird part about it was, once it happened once, it would continue to happen regardless of how I changed my code on either the server or client-side, until I took the remedial steps above.
Steps to reproduce

Setup an afterSave in cloud code without useMasterKey e.g.

`
Parse.Cloud.afterSave(Parse.User, function(request, response)
{
var user = request.object;
Parse.Cloud.run("createExtraData", {},
{
	success: function(result)
	{
		user.set("extraData", result);
		user.save();
	},
	error: function(error)
	{
		response.failure("failed to create extraData");
	}
});

});
`

Create anonymous user on iOS-side so above cloud code data gets called. Witness a 101 invalid session error in the xcode console

Add Parse.Cloud.useMasterKey(); to the top of afterSave and deploy

Run a code path that creates an anonymous user on the iOS-side again. In my case, just deleting the app and re-running it was enough. Witness the 101 error again.

Delete app, clean project, delete derived data, restart xcode. Run a code path that creates an anonymous user again, and witness the 101 error not happen.

Environment Setup

Server
Database

Still using Hosted Version

Many Thanks!

https://github.com/ParsePlatform/parse-server/issues/2252

You should not use Parse.Cloud.useMasterKey() in cloud code but pass {useMasterKey: true} to your options

Another question @LiamInJapan , you mention you run on Hosted Version. This repository is only for parse-server issues, once you've migrated your servers to the open source version of parse.
Feel free to reopen the issue if I'm mistaken, but there isn't anything we can do from there.


migrate ginkgo to v2

Changes
Migrates shipwright/build to ginkgo@2.
Refactors some test suites that were using  BeforeSuite and  AfterSuite incorrectly.
Replaces all occurrences of github.com/onsi/ginkgo with github.com/onsi/ginkgo/v2.
Removes dependencies to deprecated ginkgo extensions (table) and ginkgo config.
fixes #874
Submitter Checklist

[ ] Includes tests if functionality changed/was added
[ ] Includes docs if changes are user-facing
[ ] Set a kind label on this PR
[ ] Release notes block has been filled in, or marked NONE

See the contributor guide
for details on coding conventions, github and prow interactions, and the code review process.
NONE

/retest


Eclipse import and Egit

import project to eclipse and set egit properties

This is in basebox 1.0.0 now.


[Feature] lake pk table support column mode partial update (part-2)

Why I'm doing:
To support column mode partial update in lake PK table. More detail about column mode partial update: #20436
I break PR into 2 parts. And this one is second PR, it contains:

Modification when publish version, generate .cols files.
Update planner support column mode partial update on shared-data mode.

Fixes #46516
What type of PR is this:

[ ] BugFix
[x] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[x] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

[ ] This is a backport pr

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.3
[ ] 3.2
[ ] 3.1
[ ] 3.0
[ ] 2.5

https://github.com/apps/mergify backport branch-3.3

https://github.com/Mergifyio backport branch-3.3


Invalid sequence number when persist? option is set to true.

When Sink persist? option is set to true then the current_seq_num of a track does not get incremented at all.
The code looks as follows:
track = Map.update!(track, :current_seq_num, &(&1 + length(to_remove_segment_names)))

But the to_remove_segment_names is in this case empty therefore :current_seq_num stays forever a 0.
The invalid code fragment

changing this to do length(stale_segments) should do the fix


New version: RadeonProRender v0.2.12

Registering package: RadeonProRender
Repository: https://github.com/JuliaGraphics/RadeonProRender.jl
Created by: @SimonDanisch
Version: v0.2.12
Commit: 23f61ca5edf823db208a4cffe79b5a85dd5ead2d
Reviewed by: @SimonDanisch
Reference: https://github.com/JuliaGraphics/RadeonProRender.jl/commit/23f61ca5edf823db208a4cffe79b5a85dd5ead2d#commitcomment-70602778
Description: Wrapper for AMD's RadeonPro ray tracer

[noblock], well, trying to mirror RadeonProRenderSDK version here and don't manage to release a version whenever they do...


Any docs for install or quick_start?

Documentation issue

miss documentation
documentation go wrong

Fixed in https://github.com/spidernet-io/egressgateway/pull/246 https://github.com/spidernet-io/egressgateway/pull/247


documentation is largely outdated

Bug Description
When I go to https://sdk.clams.ai I see outdated and incorrect material there. (especially https://sdk.clams.ai/introduction.html). documentation directory needs overall review and updates.

[x] runtime parameters
[x] different ways to encode appmetadata
[x] clams develop command
[x] clams source command
[ ] mmif consumer (https://clams.ai/mmif-python/0.5.1/consumer-tutorial.html)

Reproduction steps
go to https://sdk.clams.ai/ and read.

For the consumer related documentation were originally written for galaxy integration. We will update that part when we update the galaxy as a workflow engine.


"explorer.autoReveal" Highlight but don't scroll to file option.

An extra option for this setting, so it highlights the file but doesn't scroll to it. The automatic scrolling can become a distraction.
Thanks

/duplicate of #23902


SolidFire v1.3.2 volume cloning is broken

Related to the change https://github.com/NetApp/netappdvp/pull/34 cloning broke.
Create a vol and a clone of it:
3-docker15 hackathon-vol2 # docker volume create -d netapp --name base
base
3-docker15 hackathon-vol2 # docker volume create -d netapp --name base-clone -o from=base
base-clone
3-docker15 hackathon-vol2 #

Docker says everything is ok.  Try to mount the clone:
3-docker15 hackathon-vol2 # docker run -ti -v base-clone:/mnt  alpine ash
docker: Error response from daemon: VolumeDriver.Mount: Problem attaching docker volume: netappdvp-base-clone mountpoint: /var/lib/docker-volumes/netapp/netappdvp-base-clone
error: Failed to retrieve volume by name in mount operation;  name: netappdvp-base-clone
error: Failed to find any Volumes with DockerName: netappdvp-base-clone for Account: 5.
See 'docker run --help'.

Checking the attributes metadata of the clone it is empty:
{
  "id": 1,
  "result": {
    "volumes": [
      {
        "access": "readWrite",
        "accountID": 5,
        "attributes": {},
        "blockSize": 4096,
        "createTime": "2017-01-13T00:21:14Z",
        "deleteTime": "",
        "enable512e": false,
        "iqn": "iqn.2010-01.com.solidfire:pnay.netappdvp-base-clone.65",
        "name": "netappdvp-base-clone",
        "purgeTime": "",
        "qos": {
          "burstIOPS": 15000,
          "burstTime": 60,
          "curve": {
            "4096": 100,
            "8192": 160,
            "16384": 270,
            "32768": 500,
            "65536": 1000,
            "131072": 1950,
            "262144": 3900,
            "524288": 7600,
            "1048576": 15000
          },
          "maxIOPS": 15000,
          "minIOPS": 50
        },
        "scsiEUIDeviceID": "706e617900000041f47acc0100000000",
        "scsiNAADeviceID": "6f47acc100000000706e617900000041",
        "sliceCount": 1,
        "status": "active",
        "totalSize":<PHONE_NUMBER>,
        "volumeAccessGroups": [],
        "volumeID": 65,
        "volumePairs": []
      }
    ]
  }
}

Looks like the create clone logic was not updated to populate the attributes metadata which then causes the subsequent mount to fail.
Also, if you create a new clone with underscores in the name (example: docker volume create -d netapp --name base__clone -o from=base) it succeeds to make a Docker vol but no SolidFire vol is actually created.  Please fix/verify underscore support for src and clone vol as well.

yeah, there's a few things missing in that implementation, I've got a fix started, should have it posted here early next week.

I've got this started in a branch here:
https://github.com/j-griffith/netappdvp/tree/update_attributes_on_sf_clone
Few details to finish up and some testing then I'll get a PR up for it.

@j-griffith,
Great to hear you are working on it!
I noticed while using the docker create -o from=source-vol syntax to create a clone in v1.3 that QoS settings are also inherited on the clone (good) but if you pass -o type=dev or -o qos=100,200,300 it does not override them (bad).
While working on this bit of code can you also modify to update QoS on the clone if provided by the user?
Thanks!

Fixed in  e7e2db5


Bad performance for VictoryCursorContainer

I am following the instruction from victory official website to render some chart on APP using react native, here is my code
      <VictoryChart
        theme={ChartTheme}
        domain={this.domain}
        scale={scale}
        containerComponent={
          <VictoryCursorContainer
            cursorDimension="x"
          />
        }
      >
        <VictoryPortal groupComponent={<G />}>
          <VictoryLine
            name={"line"}
            interpolation={"monotoneX"}
            style={lineStyle}
          />
        </VictoryPortal>

        <VictoryAxis
          tickValues={this.xTickCalculator(data)}
          tickFormat={t => xLabelFormat(t)}
        />
        <VictoryAxis tickCount={numberOfYTick} dependentAxis />
        { point }
      </VictoryChart>

With a small amount of data, it turns out to be laggy when I user VictoryCursorContainer.
Is there any way to improve the performance?

We are now tracking all performance related issues here: https://github.com/FormidableLabs/victory-native/issues/369

@bolan9999 sorry for this late comment, but do you have an example/explanation how you implemented that?


Fixed Dockerfile to perform make build before building the server

Fixes #308.

Did the existing tests not catch this (maybe because make build was already run)? Or is this in preparation for future work?

Correct, I think it's because make build was already run in tests and it's an ordering thing.


New version NormalizeQuantiles: 0.5.4

Registering: NormalizeQuantiles
Repository: https://github.com/oheil/NormalizeQuantiles.jl
Version: v0.5.4
Commit: e101f0a526d80bc9c38b791f3820c8f2767db11a
Proposed by: @oheil
Reviewed by: @oheil
Reference: https://github.com/oheil/NormalizeQuantiles.jl/commit/e101f0a526d80bc9c38b791f3820c8f2767db11a#commitcomment-33322216

Why was the julia compat not included here? @StefanKarpinski @nkottary

It's already there and looks good, I guess:
https://github.com/JuliaRegistries/General/blob/9932158699f0dc9fcd0eed3bbd8121ce72639656/N/NormalizeQuantiles/Compat.toml

Ok, looked in the wrong file.


Treeview - render with collapsed nodes?
I see from the examples, some <li> have  class="expanded"
But if you omit  class="expanded", it still renders as expanded initially?
Is this a bug (if not have  class="expanded", then it should render as collapsed?)
Inspecting the element while clicking to expand/collapse I see  class="expanded" removed and added from the element, not sure why it doesn't initialize that way, or like I said in the title, maybe I'm being stupid and doing something wrong (:
(Have to call toggleNode from JS in a document.ready for all the nodes I want to be collapsed by default)
Use case:  I am rendering a document tree - that needs to be collapsed by default

https://github.com/olton/Metro-UI-CSS/blob/master/js/plugins/treeview.js#L116

Sweet!   Sorry I missed it!
https://metroui.org.ua/treeview.html doesnt reference data-collapsed=true anywhere (:


Add experimental renderer based on pyglet. Do not merge.

Only works in sugiyama, loop merge, figure eight, and kathy roundabout for now. Large envs such as bottleneck and baybridge will exceed the renderer max size and crash the program.

Close favoring PR #261


{network-function} HTML tags are rendering as empty parameter values in reference docs

Describe the bug
Problem to solve:
HTML tags in source code are causing build warnings in MicrosoftDocs/azure-docs-cli. More importantly, customer-facing reference docs are not instantiating properly -- parameter values formatted with `<>` are missing. Here's an example:

Requested solution:
These values should be escaped with a backtick. Here's an example from az webpubsub.

Related GitHub issues:
This is the same issue as these GitHub issues.
List of HTML tag instances that need update:

File name
Build error

latest/docs-ref-autogen/network-function/traffic-collector.yml
HTML tag 'indexToRemove' isn't allowed.  Replace it with approved Markdown or escape the brackets if the content is a placeholder.

latest/docs-ref-autogen/network-function/traffic-collector.yml
HTML tag 'value' isn't allowed.  Replace it with approved Markdown or escape the brackets if the content is a placeholder.

latest/docs-ref-autogen/network-function/traffic-collector/collector-policy.yml
HTML tag 'indexToRemove' isn't allowed.  Replace it with approved Markdown or escape the brackets if the content is a placeholder.

latest/docs-ref-autogen/network-function/traffic-collector/collector-policy.yml
HTML tag 'value' isn't allowed.  Replace it with approved Markdown or escape the brackets if the content is a placeholder.

Related command
az network-function
Errors
n/a
Issue script & Debug output
n/a
Expected behavior
n/a
Environment Summary
Azure CLI 2.62.0
Additional context
No response

Thank you for opening this issue, we will look into it.


Limited movement in .bat files

I've found that when I have a .bat file open in the visual studio editor, sub-word navigation doesn't allow the cursor to pass punctuation or space character.
Steps to reproduce:

Open a .bat file in Visual Studio 2019
Add the content: have a nice day!
Try to use sub-word navigation
Cursor gets stuck inside each word

Slow day at work so I finally got around to debugging this. Turns out GetExtentOfWord on the ITextStructureNavigator implementation used for .bat (and .ps1, probably more) in VS2019 doesn't work the same as on the navigators used for C# or SQL or plain text. Instead of returning the whitespace it returns the previous word.
It seems to relate to the TextMate grammar support since its concrete name is Microsoft.VisualStudio.TextMate.VSWindows.WordPattern.WordPatternTextStructureNavigator but I can't find any deeper info online.  RegexUtilities.TryGetMatchAtPosition(..., endInclusive: true, ...) might be something?
The C# editor features seem to live under the https://github.com/dotnet/roslyn repo, but this looks like it'd have to be reported elsewhere.
@reduckted would you perhaps mind checking if it's the same in VS2022, in case you're still running your fork?

I'm seeing the same behavior in VS 2022.

I'm also seeing something similar maybe. I have keyboard bindings defined globally (removed all the conflicts first) and files like, txt, rakefile, ruby, md, etc. all get stuck at the end of the word. I have let up on the ctrl key to move past every word. Weird.


camera mount error [unknown/unknown: [unknown/unknown] Compiling JS failed: 1:1:invalid empty parentheses '( )' Buffer size 3 starts with: 280a29]

Describe the bug
when i try this example
https://github.com/nonam4/react-native-vision-camera-face-detector/blob/main/example/src/index.tsx
##Env :
###  platform :ANDROID,

 buildToolsVersion = "34.0.0"
        minSdkVersion = 26
        compileSdkVersion = 34
        targetSdkVersion = 33
        kotlinVersion = '1.8.0'
        ndkVersion = "23.1.7779620"

### React native
- "react-native-vision-camera": "3.9.0",
- "react-native-vision-camera-face-detector": "1.3.5",
- "react-native": "0.72.3",
-  "react-native-reanimated": "^3.4.2",
- "react-native-worklets-core": "0.3.0",

### Babel config

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    ['react-native-worklets-core/plugin'],
    [
      'react-native-reanimated/plugin',
      {
        processNestedWorklets: true
      }
    ],
  ],
};

any help please;

Please try to update both react-native and reanimated versions to minimum listed on package's readme, clear your app cache then see if this error keep happening.

thanks it work fine after the upgrade 👍
is there a way to take photo and record a 10 second video while the face is detected ?
thanks for help

You should read vision camera documentation


Bump packages

Update the rubygems-*.tgz to rubygems-*.tar.gz in the packaging script after merging this pr.

reopen to re-trigger

reopen to re-trigger CLA bot


LDAP - Unable to see users and groups in SAS Environment Manager.

What steps do we need to follow to be able to see users and groups in SAS Environment Manager?
We have set up LDAP Client on the Viya Jump Server and been able to communicate with LDAP on Azure Cloud.
Then followed: https://documentation.sas.com/doc/en/sasadmincdc/v_028/calids/n1aw4xnkvwcddnn1mv8lxr2e4tu7.htm but unable to see users and groups in SAS Environment Manager.
Are we missing any steps?

This is outside the scope of the deployment tooling. If you are using your own LDAP server setup on the Jump Box then that's in your control. Any documentation would be provided by SAS, which it seems you've found and having someone who is an LDAP expert on your team. The deployment repo provides a simple openLDAP server that runs in the namespace where SAS Viya is installed and is used for development and educational purposes and not intended for production systems. You'd have to reach out to the SAS Environment Manager team and work with folks there to see what needs to be setup on your LDAP server to complete the task. Take care.


Errors validating default on property init

If default value is specified on init, it should be set (and therefore validated) after all the other properties.
For example, this may error:
class HasMatrix(properties.HasProperties):

    matrix = properties.Array(
        '2x2 matrix',
        shape=(2, 2),
        default=lambda: np.random.rand(2, 2),
    )

since the default may be validated before shape is set.

See here: https://github.com/aranzgeo/properties/pull/186


MULTICHANNEL DATA INPUT

Hi, does the SERGAN model work also witch multichannel (4 channels) data input?
Let me know, best regards

Hi,
I haven't tested with multi-channel data. In principle, you could give it a try. But the stability of GAN training should be monitored and fine-tuned accordingly.


Set log_path in system config

Is your feature request related to a problem? Please describe.
I'm setting up AWX to install FluentD on VMs (not in Containers). Ansible's "ansible.builtin.service" doesn't have command line arguments like "-o" because it's using systemctl. So the logs can only be defaulted to /var/log.
Describe the solution you'd like
I'd simply like "log_path" to be an attribute I can set in the  section of FluentD's config file. It's an attribute that can be set with command line arguments, but not in the config file.
Describe alternatives you've considered
I could modify the service file to include the "-o" command line argument, or have Ansible modify the code directly like in the system_config.rb file and so on so that attribute becomes available. In either case though it would just be a hacky temporary solution.
Additional context
My /var/log directory is mounted to a low capacity drive because we expected to be able to store all fluent related data in our /opt directory. For now I can set the log rotation very tightly to keep it from filling up, but I think the log path being configurable in the global settings file is a deserving feature that I'm surprised doesn't exist already.

I don't know why system_config does not have log_path option...
I'm wondering if there was a reason for this, but it seems more convenient to be able to set it up in the config file.

I could modify the service file to include the "-o" command line argument,

I think this is the main case now.
In Fluent Package, It is supposed to be set in a unit file or as environment variables.
https://github.com/fluent/fluent-package-builder/blob/1bd0d76c2e13a94a8d93c30bb51096e54d77bbf1/fluent-package/templates/etc/systemd/fluentd.service.erb#L32
ExecStart=/opt/<%= package_dir %>/bin/fluentd --log $FLUENT_PACKAGE_LOG_FILE --daemon <%= Shellwords.shellescape("/var/run/#{package_dir}/#{service_name}.pid") %> $FLUENT_PACKAGE_OPTIONS

@daipom is this still active or the ENV variable method is your proposed fix?

@Athishpranav2003 Sorry for my late response.
Thanks for considering it!

I don't know why system_config does not have log_path option...
I'm wondering if there was a reason for this, but it seems more convenient to be able to set it up in the config file.

The reason would be that Fluentd needs to know the path before parsing the config file.
Fluentd outputs some logs before parsing.
It would be convenient if we could specify the path in the config file, but then there would be the problem of how to handle the logs before parsing.
If we can come up with a good solution, we can improve it, but if not, I don't see the need to force it.

Oh i see. It makes sense that the parsing logs are also crucial and they seem to create a problem here. I am currently not sure of any sol but maybe there is some way to tackle this. Ideally we can solve this by having a default logging destination and change that+copy the initial logs to the configured directory once its obtained. Idk what issues might occur in this case


multi-byte language length support

Description
Current code treats one multi byte character (some Eastern Asian languages) as 3 words. It restricts word count more than expected, especially in header/footer section.
https://github.com/qax-os/excelize/blob/master/sheet.go#L1094-L1098
for i := 4; i < v.NumField()-1; i++ {
    if v.Field(i).Len() >= 255 {
        return fmt.Errorf("field %s must be less than 255 characters", v.Type().Field(i).Name)
    }
}

Thanks for your issue, I have fixed it, please upgrade to the master branch code, and this patch will be released in the next version.

Appreciate your quick fix. Thanks!


failed swc error

Describe the bug
tried the same with code sandbox working as expected
Link to the blitz that caused the error
https://stackblitz.com/github/sridhram/spotify-clone?file=README.md
Steps to reproduce
run npm run dev
Expected behavior
server should start
Parity with Local

[X] I have run the project in my local machine and I could not reproduce the issue.

Screenshots
No response
Platform
Browser name  = Chrome
Full version  = <IP_ADDRESS>
Major version = 113
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
performance.memory = {
  "totalJSHeapSize": 74787679,
  "usedJSHeapSize": 60811631,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Hash = fc9e1a28

Additional context
No response

hi :wave: thanks for reporting this!
adding @next/swc-wasm-nodejs as an explicit dependency fixes the install issue
the project still fails to run because of a bug with Next 13.4 in webcontainer
we're looking at it and should have a fix soon-ish

Hey 👋 We fixed the issue with SWC so I am going to close this issue. Feel free to open a new ticket in case you still experience an issue.


Add bad quality to lle

Small cosmetic change to add bad quality flags to LLE data below 50 MeV. Also modified some colors to make it easier to read channel plot

Current coverage is 71.78% (diff: 100%)

Merging #138 into master will increase coverage by 0.03%

@@             master       #138   diff @@
==========================================
  Files            87         87
  Lines          9107       9119    +12
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           6534       6546    +12
  Misses         2573       2573
  Partials          0          0

Powered by Codecov. Last update 4188d18...c904286


[KYLIN-4066] Fix No planner for not ROLE_ADMIN user

fix issue KYLIN-4066
Signed-off-by: langdamao<EMAIL_ADDRESS>

Can one of the admins verify this patch?

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@96ba0c6). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #732   +/-   ##
=========================================
  Coverage          ?   25.71%
  Complexity        ?     6015
=========================================
  Files             ?     1386
  Lines             ?    82708
  Branches          ?    11599
=========================================
  Hits              ?    21269
  Misses            ?    59386
  Partials          ?     2053

Continue to review full report at Codecov.

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


Please document passparser

Add passparser to the documentation somewhere please. Right now it's only referenced in the changelog.

Done, thanks for pointing this out!


Earliest/latest/fixed Operation parameters

Closes #41.

Latest commit removes fixed data, because that can be set with earliest and latest. This saves 2 parameters, making the class more concise and clear.


Importing Existing Resources

Describe the solution you'd like
To import the existing resources which are already provisioned in the AWS as Kubernetes CRDs.
Describe alternatives you've considered
https://crossplane.io/docs/v0.12/introduction/managed-resources.html

This is a dupe of #41


Open source

Changes readme for give precise information about this real time chat web application. Organize the folder and how to initialize the application.

Good


s2i BuildStrategy with Kaniko

Add a BuildStrategy which

Generates Dockerfile with s2i
Does a Dockerfile build using kaniko

cc @zhangtbj

from https://github.com/redhat-developer/build/issues/88#issuecomment-606706709

I believe this is an stale issue and no require efforts are needed here. I´m closing this issue, but please feel free to re-open @sbose78 if needed.

I believe this is an stale issue and no require efforts are needed here. I´m closing this issue, but please feel free to re-open @sbose78 if needed.


Allow accessing events registered via vm.$on(...) via a property, similar to $listeners

What problem does this feature solve?
Currently, if an event is registered via vm.$on('event-name', handler), it does not appear in the this.$listeners object (Vue 2.6.x)
In some instances you only want to handle the event processing if there is indeed a listener registered (for performance reasons).  But when component event listeners are registered programatically via this.$on (or vmReference.$on) it is not currently possible to see them in this.$listeners, e.g.:
if (this.$listeners['event-name']) {
  // Do something computationally intensive
  // then emit event
  this.$emit('event-name', resultOfComputation)
}

What does the proposed API look like?
No new API for the public.

It makes sense not to have listeners registered via $on onto $listeners as those are usually passed via v-on by the parent and can be relayed to an element of the component with v-on="$listeners". It could be on a different object but why should this be added to Vue while it can be handled in user land easily by extending Vue.$prototype.on?

The case is where the application dynamically adds a listener after the instance has initialized (and may remove it later).
And there doesn't appear to be any way to determine if a custom event listener has been added dynamically via vm.$on(...) (and when removed via vm.$off(...)).
In our use case, when a certain prop is set to true, the listener handler is instantiated on demand, and when the prop is false the listeners are removed.
I don't think modifying the prototype would help in this situation.

I suppose we could check the private object vm._events, which does have the the listeners from both v-on and vm.$on(..) registered (and check the array length), but since that is not a "public" API it wouldn't be as clean.

By modifying the prototype you could add those events to a custom property like $onListeners
Eduardo San Martin Morote

On 15 Nov 2019, at 20:00, Troy Morehouse<EMAIL_ADDRESS>wrote:

The case is where the application dynamically adds a listener after the instance has initialized (and may remove it later).
And there doesn't appear to be any way to determine if a custom event listener has been added dynamically via vm.$on(...) (and when removed via vm.$off(...)).
In our use case, when a certain prop is set to true, the listener handler is instantiated on demand, and when the prop is false the listeners are removed.
I don't think modifying the prototype would help in this situation.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.


Updated auth-flow-tab

Added references to initiate authentication flow and notes for requirement #1360580. Please review.

Docs Build status updates of commit 534fa1a:
:clock10: Pending: waiting for processors (8 builds ahead of you)
:warning: Docs Build is busy, currently there are 8 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 534fa1a:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:warning:Warning
View
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md

Line 14, Column 175: [Warning-bookmark-not-found] Cannot find bookmark '#Initiateauthenticationflow' in 'tabs/how-to/authentication/auth-tab-aad.md', did you mean '#initiate-authentication-flow'?

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 3b864f1:
:clock10: Pending: waiting for processors (8 builds ahead of you)
:warning: Docs Build is busy, currently there are 8 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 3b864f1:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:warning:Warning
View
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md

Line 14, Column 175: [Warning-file-not-found] Invalid file link: '../auth-tab-aad.md'.
Line 32, Column 639: [Warning-file-not-found] Invalid file link: '../auth-tab-aad.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit c60d649:
:clock10: Pending: waiting for processors (7 builds ahead of you)
:warning: Docs Build is busy, currently there are 7 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit c60d649:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:warning:Warning
View
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md

Line 14, Column 175: [Warning-file-not-found] Invalid file link: '../../../auth-tab-aad.md'.
Line 32, Column 639: [Warning-file-not-found] Invalid file link: '../auth-tab-aad.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 0882df5:
:clock10: Pending: waiting for processors (8 builds ahead of you)
:warning: Docs Build is busy, currently there are 8 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 0882df5:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:warning:Warning
View
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md

Line 14, Column 175: [Warning-file-not-found] Invalid file link: '../auth-tab-aad.md'.
Line 32, Column 639: [Warning-file-not-found] Invalid file link: '../auth-tab-aad.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 53caca3:
:clock10: Pending: waiting for processors (8 builds ahead of you)
:warning: Docs Build is busy, currently there are 8 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 53caca3:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:warning:Warning
View
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md

Line 14, Column 175: [Warning-bookmark-not-found] Cannot find bookmark '#Initiate-authentication-flow' in 'tabs/how-to/authentication/auth-tab-aad.md', did you mean '#initiate-authentication-flow'?
Line 32, Column 639: [Warning-bookmark-not-found] Cannot find bookmark '#Navigate-to-the-authorization-page-from-your-pop-up-page' in 'tabs/how-to/authentication/auth-tab-aad.md', did you mean '#navigate-to-the-authorization-page-from-your-popup-page'?

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 4e97baf:
:clock10: Pending: waiting for processors (8 builds ahead of you)
:warning: Docs Build is busy, currently there are 8 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 4e97baf:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:warning:Warning
View
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md

Line 32, Column 639: [Warning-bookmark-not-found] Cannot find bookmark '#navigate-to-the-authorization-page-from-your-pop-up-page' in 'tabs/how-to/authentication/auth-tab-aad.md', did you mean '#navigate-to-the-authorization-page-from-your-popup-page'?

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 998291a:
:clock10: Pending: waiting for processors (8 builds ahead of you)
:warning: Docs Build is busy, currently there are 8 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 998291a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:white_check_mark:Succeeded
View

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

Docs Build status updates of commit 866aea7:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/tabs/how-to/authentication/auth-flow-tab.md
:white_check_mark:Succeeded
View

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


Kendall

Brief Description
Discount code API added. GET, DELETE, and POST are routes are active once the new db gets merged. Delete simply changes the number us uses left to 0 so no one else can the coupon code. The others work as expected.
References Issue
Issue 103
Type of change

[ ] Bug fix
[!!!] Feature
[ ] Major change (potentially breaking, list anything that is broken below)
[ ] Documentation

Breaking Changes
Incompatible with current db. Will work once the new db is merged
Testing done
Describe tests that were used, along with instructions for testing.

[ !] Postman GET route

[ !] Postman DELETE route

[ !] Postman POST route

[ !] Docker was used.

[ ] Docker was not used and I have listed my configuration below.

System Specifications:

Operating System: Win 11 Home
Node Version: 16.16.0
NPM Version: 8.18.0

Checklist:

[! ] My code follows the styling guidelines.
[ !] I have added unit tests and verified that they pass.
[ ] I have used the linter and fixed any linting issues.
[! ] I have commented the code.
[ !] I have adjusted the documentation to match the changed code.
[! ] Prior to submitting the PR, I made sure the latest changes were merged with my branch.
[ !] Existing tests pass locally with changes.

Explanation for unchecked
I'm checking with Ben about Linting right now

Can you also make the title of the PR something that shortly describes the work?


[Bug]: Can no longer enable online maps

What modules are you seeing the problem on?
ScriptHookVDotNet3.dll (v3 SDK/API)
SHVDN Version
nightly 115 - don't have game open
Game Version
3285
Bug Description
I never use a trainer to enable MP online maps. I use my own scripts using the native function from a menu.
Function.Call((Hash)0x0888C3502DBBEEF5);
This works without any issuesl on versions before R* update 3258. Tonight I installed 3285 for testing purposes as well as the  nightly build ScriptHookVDotNet-v3.6.0-nightly.115 as I had read there were problems.
Anyway, I'm passing this on although I play reverted 99.9% of the time.  (N.B. I don't use Simple Trainer to enable MP online).
Steps To Reproduce
This code no longer works in V3258 with nightly 115. As a result I can't load MP online maps. For example I normally load Cayo Perico with its IPLs in MP online mode.  However it no longer loads as it requires to online mapping. No error messages, just doesn't load. No run time errors and obviously no compiler error since i've had this script for years.
Code run
Function.Call((Hash)0x0888C3502DBBEEF5);        //void ON_ENTER_MP()
Link To Code Example
No response
The Current Behavior
Does nothing.
The Expected Behavior
Loads MP Online Maps for addons that require it.

UPDATE:  I swapped in the exe from 3274 and for whatever reasons that fixed the issue. No idea why 3258 was broken.

Can't repro even in b3258 and with Function.Call(Hash.ON_ENTER_MP) in my game.


[FALSE-POSITIVE]

Domains or links
Please list any domains and links listed here which you believe are a false positive.
parkhavengarden.com.au
More Information
How did you discover your web site or domain was listed here?

Website was hacked
Incorrectly marked as Phishing on Phishtank or OpenPhish?

The previous web developers managing the website were uploading Native Word files for their clients instead of PDF versions. I have taken over hosting and management of the website, moved to my hosting (Flywheel) and have removed all Word Documents. I had discovered their website flagged via VirusTotal as Malware. I have so far managed to get 2 of 4 flags removed, I have two remaining, CyRadar and from this database.
Have you requested removal from other sources?
Please include all relevant links to your existing removals / whitelistings.
I have requested Cyradar remove the website via a Contact Email address.
Additional context
Add any other context about the problem here.
:exclamation:
We understand being listed on a Phishing Database like this can be frustrating and embarrassing for many web site owners. The first step is to remain calm. The second step is to rest assured one of our maintainers will address your issue as soon as possible. Please make sure you have provided as much information as possible to help speed up the process.
Send a Pull Request for faster removal
Users who understand github and creating Pull Requests can assist us with faster removals by sending a PR to mitchellkrogza/phishing repository, on the falsepositive.list file

https://github.com/mitchellkrogza/phishing/blob/main/falsepositive.list
Please include the same above information to help speed up the whitelisting process.

How did you discover your web site or domain was listed here?

Adding to the above, when I used VirusTotal to scan the site, SOCradar appeared in the results. When I went to the SOCradar.io site and used the IOC radar tool to scan the URL, the name mitchellkrogza appeared as a Feed Source the URL was flagged on.
I have just rescanned today on VirusTotal and now the site does not appear on any vendors lists. This ticket can be closed.


Add noise models

This PR seems to be opened for quite long.
Can we either close it or finish and merge?
@simonwa7

This PR seems to be opened for quite long.
Can we either close it or finish and merge?
@simonwa7


Better js lib management

Currently all third party js is loaded directly using script tags.
This should be updated to use a package manager such as bower, browserify, or something else.

Fixed by #5


Is there a Safari/WebKit bug for this?

I learned about this library as part of my work on https://insights.developer.mozilla.org/reports/mdn-browser-compatibility-report-2020.html, where one developer said this:

What gives me the most headaches is typically scrolling behavior of iOS.  I t annoys me that I need a JavaScript library just to get this right, so that if I get a modal, that the background doesn’t scroll on iOS. I think that’s basically the worst issue that you stumble across in almost every project. [...] The goal is always that you lock scrolling completely. There’s a good library for that, it’s not even large, it’s a small JavaScript dependency. But it annoys me that you need these workarounds for doing simple stuff like that.

Today I took a look at this repo to try to understand what difference between Safari/WebKit and other browsers makes this workaround necessary, but reading the different code paths depending on isIosDevice I'm not sure I understand it.
I don't doubt that this library is needed and gets the job done, but would like to ask what change to WebKit or other browser engines would be required for it to no longer be necessary?
I ask because I'd like to make sure the appropriate bug is filed at https://bugs.webkit.org/, or on Chromium if changes are needed there too.
(I'm on the Google Chrome team, trying to make the web more interoperable so web developers can spend less time on workarounds.)

The difference between WebKit on iOS and all other browser engines is that it doesn't allow to reliably prevent body scrolling by setting overflow: hidden to the body, as it should.
This is a very (very) long-standing issue with WebKit on iOS. Setting overflow: hidden to the body used not to prevent body scrolling in any situation before recently (one or two years ago). The situation has now slightly improved, but remains quite unsatisfactory.
Based on my own (not thorough) tests, it now works when:

the website is added to homescreen;
the browser UI is visible.

However, it still does not work when:

the browser UI is collapsed;
the browser UI is hidden through the settings in Safari.

It also might now work with some metatags; when the keyboard is displayed; or in in-app browsers.
As you can gather, this is quite a mess. This is why libraries like this one, which use preventDefault() on scroll-related events when necessary are still required and popular. This is far from being a great workaroung though, as they don't perfectly polyfill the overflow: hiddenbehaviour:

they don't prevent scroll initiated at the bottom of the screen when the browser UI is not visible (that zone is responsible of other problems in Safari);
they use non-passive event listeners, which are bad for performance;
they alter the overscrolling/rubberbanding behaviour;
they can cause conflicts with pinch & zoom gestures.

There used to be several bugs filled on that issue, today only one remains: https://bugs.webkit.org/show_bug.cgi?id=214781, and does not cover all situations mentioned. The reason why there aren't more filled bugs being: I guess people got tired of filling bugs, testing fixes which only solve small parts of the problem, and arguing with the WebKit team.

The difference between WebKit on iOS and all other browser engines is that it doesn't allow to reliably prevent body scrolling by setting overflow: hidden to the body, as it should.
This is a very (very) long-standing issue with WebKit on iOS. Setting overflow: hidden to the body used not to prevent body scrolling in any situation before recently (one or two years ago). The situation has now slightly improved, but remains quite unsatisfactory.
Based on my own (not thorough) tests, it now works when:

the website is added to homescreen;
the browser UI is visible.

However, it still does not work when:

the browser UI is collapsed;
the browser UI is hidden through the settings in Safari.

It also might now work with some metatags; when the keyboard is displayed; or in in-app browsers.
As you can gather, this is quite a mess. This is why libraries like this one, which use preventDefault() on scroll-related events when necessary are still required and popular. This is far from being a great workaroung though, as they don't perfectly polyfill the overflow: hiddenbehaviour:

they don't prevent scroll initiated at the bottom of the screen when the browser UI is not visible (that zone is responsible of other problems in Safari);
they use non-passive event listeners, which are bad for performance;
they alter the overscrolling/rubberbanding behaviour;
they can cause conflicts with pinch & zoom gestures.

There used to be several bugs filled on that issue, today only one remains: https://bugs.webkit.org/show_bug.cgi?id=214781, and does not cover all situations mentioned. The reason why there aren't more filled bugs being: I guess people got tired of filling bugs, testing fixes which only solve small parts of the problem, and arguing with the WebKit team.

Thank you for all the details, @brunostasse, that's great! Sounds like I should test various combinations of overflow: hidden across browsers and see if I can find existing (failing) tests and browser bugs for differences, mostly WebKit bugs that is.
Assuming that overflow: hidden worked perfectly across browsers, would JS still be required to prevent scrolling in the scenarios this library is usually used? Or is there also a CSS solution to this problem that's even further from working across browsers which would be the ultimate fix?

Thank you for all the details, @brunostasse, that's great! Sounds like I should test various combinations of overflow: hidden across browsers and see if I can find existing (failing) tests and browser bugs for differences, mostly WebKit bugs that is.
Assuming that overflow: hidden worked perfectly across browsers, would JS still be required to prevent scrolling in the scenarios this library is usually used? Or is there also a CSS solution to this problem that's even further from working across browsers which would be the ultimate fix?

@foolip I imagine that overscroll-behavior will be a great solution once widely supported.

@foolip I imagine that overscroll-behavior will be a great solution once widely supported.

@foolip There is at least one other case in which you'll find that overflow: hidden is not working properly, that is in Firefox (at least in Android I think) when the page has the viewport metatag user-scalable=0. In that case, body scroll is indeed prevented, but the body is also being scrolled to the top, which is not desired.
Regarding other scenarios where this library might still be useful if overflow: hidden worked perfectly, to my knowledge there is only one: when you want to prevent body scroll initiated only on some elements. For instance, if you have a side menu or a bottom panel displayed only on part of the screen, you don't want scroll initiated inside this element to propagate to the body, BUT, you also don't want the body to be unscrollable if initiated outside of it.
To achieve that with CSS you can set overflow: hidden  on mouseenter/touchstart on this element, and remove it on mouseleave/touchend. While this works well in Firefox and WebKit (in the case where overflow: hidden does prevent body scrolling), it doesn't work properly in Chromium on touch devices (Android & Windows). I don't think we can say that FF and WebKit are right and Chromium wrong in behaving like that, as I don't think what should happen in that case is spec'ed anywhere.
Another way of handling this is using overscroll-behavior: contain, as mentioned by @diachedelic. This is again not a silver bullet at the moment for two reasons though:

I noticed what appears to be a bug in Chromium, where if you scroll inside a container with overscroll-behavior: contain, and then scroll immediately the body, the body doesn't get scrolled, instead you keep scrolling the container. This can be mitigated by only applying it on mouseenter/touchstart and removed on mouseleave/touchend.
This only works when the scroll is initiated in scroll containers, that is elements with content overflowing and the overflow property set to either auto or scroll. If you want to prevent body scroll while scrolling over an element that is not scrollable, then it won't work, you'll be scrolling the body.

I am not aware of all the scroll related specs, so I am not sure if this makes sense, but maybe overscroll-behavior could be made to have effect even for elements with overflow values equal to scroll, auto and hidden, no matter if there is content overflowing or not. Considering the fact that elements with overflow: hidden are still programmatically scrollable, as opposed to those with the values clip and visible, that would make sense to me. That way overscroll-behaviour: contain would indeed be a perfect way of preventing body scroll in all scenarios.

@foolip There is at least one other case in which you'll find that overflow: hidden is not working properly, that is in Firefox (at least in Android I think) when the page has the viewport metatag user-scalable=0. In that case, body scroll is indeed prevented, but the body is also being scrolled to the top, which is not desired.
Regarding other scenarios where this library might still be useful if overflow: hidden worked perfectly, to my knowledge there is only one: when you want to prevent body scroll initiated only on some elements. For instance, if you have a side menu or a bottom panel displayed only on part of the screen, you don't want scroll initiated inside this element to propagate to the body, BUT, you also don't want the body to be unscrollable if initiated outside of it.
To achieve that with CSS you can set overflow: hidden  on mouseenter/touchstart on this element, and remove it on mouseleave/touchend. While this works well in Firefox and WebKit (in the case where overflow: hidden does prevent body scrolling), it doesn't work properly in Chromium on touch devices (Android & Windows). I don't think we can say that FF and WebKit are right and Chromium wrong in behaving like that, as I don't think what should happen in that case is spec'ed anywhere.
Another way of handling this is using overscroll-behavior: contain, as mentioned by @diachedelic. This is again not a silver bullet at the moment for two reasons though:

I noticed what appears to be a bug in Chromium, where if you scroll inside a container with overscroll-behavior: contain, and then scroll immediately the body, the body doesn't get scrolled, instead you keep scrolling the container. This can be mitigated by only applying it on mouseenter/touchstart and removed on mouseleave/touchend.
This only works when the scroll is initiated in scroll containers, that is elements with content overflowing and the overflow property set to either auto or scroll. If you want to prevent body scroll while scrolling over an element that is not scrollable, then it won't work, you'll be scrolling the body.

I am not aware of all the scroll related specs, so I am not sure if this makes sense, but maybe overscroll-behavior could be made to have effect even for elements with overflow values equal to scroll, auto and hidden, no matter if there is content overflowing or not. Considering the fact that elements with overflow: hidden are still programmatically scrollable, as opposed to those with the values clip and visible, that would make sense to me. That way overscroll-behaviour: contain would indeed be a perfect way of preventing body scroll in all scenarios.

iOS seems to support overflow:hidden on body now, can it be added in?

@ryanbadger are you sure? I just installed body-scroll-lock because I was unable to get overflow: hidden working correctly on the body with iOS 14.4

anyone tell me hoe to fix this bottom scroll for safari


Unknown license vulnerability

Snyk was not able to detect a license for this package. This could occur from a package file that lacks a license definition or might be having incorrect format.

See https://github.com/cowboy/node-exit/pull/18#issuecomment-2453219243


[Github] Change address forms to not have duplicate IDs

1. Why is this change necessary?
2. What does this change do, exactly?
3. Describe each step to reproduce the issue or behaviour.
4. Please link to the relevant issues (if any).
5. Checklist

[x] I have rebased my changes to remove merge conflicts
[ ] I have written tests and verified that they fail without my change
[ ] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Imported from Github. Please see: https://github.com/shopware/shopware/pull/3764

[public] Automated response: This issue is linked to the internal issue https://shopware.atlassian.net/browse/NEXT-37045.
[created from NEXT-37045, comment 486686]


Request retry on 429 "too many requests"

Coverage remained the same at 100.0% when pulling 9db57dbedfb12c2fcde0ea81825f6c03edb1cf41 on throttling-retry into cacf2f0ac4959152c3d4a48bf78b93222601acc0 on master.


Choose a license

Ideally, this project would have an open source license with a copy of the license text in a file called LICENSE.
Picking a license is important for others when they want to use your project or want to make a contribution.
https://choosealicense.com/
I recommend the permissive MIT license, as most (non-commercial and commercial) projects have no problem adopting this as a library.

Thanks! Added a license! :)


WIP: Bump versions and CI to nextcloud 28

PR includes fixes for poddit because it was branched from there. Should be merged after https://github.com/pdsinterop/solid-nextcloud/pull/140 was merged.

Marked as draft because of #140


added new videos for hudi oss site

added new videos

@bhasudha this is ready for review

@bhasudha updated with feedback and updated readme

@nfarah86  There are still tags for the previous videos with plural. For ex:

https://hudi.apache.org/videos/tags/deletes
https://hudi.apache.org/videos/tags/bulk-inserts
https://hudi.apache.org/videos/tags/upserts
https://hudi.apache.org/videos/tags/inserts

Can we get rid of these tags and retag those blogs with singular ?

@nfarah86 There are still tags for the previous videos with plural. For ex:

https://hudi.apache.org/videos/tags/deletes
https://hudi.apache.org/videos/tags/bulk-inserts
https://hudi.apache.org/videos/tags/upserts
https://hudi.apache.org/videos/tags/inserts

Can we get rid of these tags and retag those blogs with singular ?

Yes- let me retro back

@bhasudha updated - I also took the liberty to update other tags too so they are consistent

@bhasudha made the aws -> amazon changes


Fix nativefiledialog port using build time include dir

Describe the pull request

What does your PR fix?

Fixes installed lib include path pointing to build-time location. Problem is in this bit:
target_include_directories(
    nfd
    PUBLIC
        $<BUILD_INTERFACE:
            ${CMAKE_CURRENT_LIST_DIR}/src
            ${CMAKE_CURRENT_LIST_DIR}/src/include
        >
        $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

For install target, BUILD_INTERFACE evaluates to empty string, which is expanded to current build folder and so unofficial-nativefiledialog-config.cmake has lines like these that include absolute build folder path:
set_target_properties(unofficial::nativefiledialog::nfd PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "C:/src/vcpkg/buildtrees/nativefiledialog/src/44c798f8b9-0d908eb5b1.clean/;${_IMPORT_PREFIX}/include"
)

Separating into two different target_include_directories fixes it.

Which triplets are supported/not supported? Have you updated the CI baseline?
All (except UWP), No

Does your PR follow the maintainer guide?

Yes

Thanks for the PR!


Write any valid code in ruby

You need to write any valid code in ruby to solve any problem, create PR, it will be accepted if it is valid.

Can you please assign this to me? I am new to open source.

@Nimesh-21
Assigned.

can you assign this issue to me ?

@snehasish-pathak
Assigned.

Hello @ShehrozIrfan I would like to work on this issue. Can you please assign this to me?

@riteshsoni123
Assigned.

Can you please assign this to me? I am new to this open source contribution

@zilladeepak Assigned!

Requested a PR please review it.


Rule 921150 blocking multipart/form-data content type with JSON data

Description
For our application, we have configured GCP WAF security policies. While sending POST request with JSON data and Content-Type: multipart/form-data, error body_denied_by_security_policy is occurring due to owasp-crs-v030001-id921150-protocolattack(rule not added in evaluatePreconfiguredExpr() command)
Audit Logs / Triggered Rule Numbers

owasp-crs-v030001-id921150-protocolattack is triggered with 403 error for above POST request with JSON
Your Environment

CRS version : 3.0
Paranoia level setting: PL1
Spring Boot Version: 2.7.1
Web Server and version (e.g., apache 2.4.41): NA
Operating System and version: NA

Confirmation
[ ] I have removed any personal data (email addresses, IP addresses,
passwords, domain names) from any logs posted.

Hey @Absal1706, sorry for the inconvenience, let's try to sort this out.
Am I right that GCP WAF means Google Cloud Armor?
Are you a paying customer? What did their support say?
CRS is technically not supporting v3.0 anymore, yet 921150 is a relatively simple rule and I presume it did not change since v3.0 (you may want to check that out here on GH yourself, though).
The rule checks for header injections via empty headers. I do not readily see that in your submitted screenshot. So I am a bit troubled to see the problem in your request.
Can you reproduce your request / the blockade via curl? If yes, please share and I can give it a shot here, if it need be on a v3.0.
And finally, I can not really make sense of (rule not added in evaluatePreconfiguredExpr() command). Is that part of an error message? As Google uses their own non-ModSecurity engine, it's very hard for us to test issues as this, namely because this is not a ModSecurity error message and we do not have access to Google's engine.

Hi @dune73 ,
Thank you for your swift reply.

Am I right that GCP WAF means Google Cloud Armor?

Yes

Are you a paying customer? What did their support say?

Yes, paying customer. So far we didn't contact them. Please let me know regarding the details so that I can ask for their support.

I do not readily see that in your submitted screenshot

Sorry for the inconvenience. Problem is, through FormData from client  side, I am sending a JSON object. While doing so, it throws protocol attack error even for EMPTY JSON object.

I can not really make sense of (rule not added in evaluatePreconfiguredExpr() command)

Again sorry. This command generally used to disable the signatures. If we disabled the signatures in cloud armor policy, operations working fine.
So I have disable the rule like below
evaluatePreconfiguredExpr('protocolattack-stable', ['owasp-crs-v030001-id921150-protocolattack'])
Ref : https://cloud.google.com/armor/docs/rule-tuning#protocol_attack

As Google uses their own non-ModSecurity engine, it's very hard for us to test issues as this, namely because this is not a ModSecurity error message and we do not have access to Google's engine.

In link, it is mentioned that cloud armor are preconfigured based on https://github.com/coreruleset/coreruleset/releases/tag/v3.3.2. So only, I raised this request for more information.

Thank you for your swift reply.

Glad to be of assistance.

Are you a paying customer? What did their support say?

Yes, paying customer. So far we didn't contact them. Please let me know regarding the details so that I can ask for their support.

Generally, we would prefer if you could address the paid support first before you ask for free support. But no worries, let's see if I can help.

I do not readily see that in your submitted screenshot

Sorry for the inconvenience. Problem is, through FormData from client side, I am sending a JSON object. While doing so, it throws protocol attack error even for EMPTY JSON object.

The rule in question is looking at argument names and LF+CR as part of the argument names AFAICS. Now I do not see that in your screenshot, so I reckon something else is amiss here. And given I do not have access to the engine GCF uses to execute our rules - or more exactly the GCF rule derived from the original CRS rule to run on the custom GCF rule engine - there is very little I can do.

Again sorry. This command generally used to disable the signatures. If we disabled the signatures in cloud armor policy, operations working fine. So I have disable the rule like below evaluatePreconfiguredExpr('protocolattack-stable', ['owasp-crs-v030001-id921150-protocolattack'])

Got you. That is likely to be a viable workaround at a reasonable cost of security when all the rest is intact.

In link, it is mentioned that cloud armor are preconfigured based on https://github.com/coreruleset/coreruleset/releases/tag/v3.3.2. So only, I raised this request for more information.

Sure thing. GCF is a custom rule engine running a selection of rules originally based on CRS. So we are a good place to ask for help, but in this particular case, I either fail to see the obvious or GCF / the engine is to blame here.
If you come to the same conclusion, I ask you to close this issue and address it to the paid GCF support.

This would have auto-closed with either the old or the new auto-close policies, but I think because the auto-close policy has been messed with recently this issue will stay open forever…
Closing.


UUID in PostgreSQL being Misintepreted as Integers

I had this issue https://github.com/yiisoft/yii2/issues/10773  but solved it by Modifying one of your core files, please include this patch in your next update.
 Thanks!