Newest _.isEqual creates incompatibility with Backbone.Relational (and more!)

Hello,
The newest _.isEqual introduces an incompatibility with Backbone.Relational, but it could be more wide-spread. I'm not sure if this bug should go here or in Backbone, you can decide!
The new check in eq() introduces array comparisons:
if (a.length === +a.length || b.length === +b.length)
Backbone.Collection reset() sets a length variable:
this.length = 0;
And Backbone.Model set() checks for a change in attribute using:
if (!_.isEqual(now[attr], val))
Finally, Backbone.Relational replaces the serialized json arrays with a collection using Backbone.Model set(), but with the new _isEqual and the length variable on the Collection, when you pass an empty array with length = 0, the set doesn't occur because _.isEqual incorrectly detects that they are equal, even though one is an array and the other is a Backbone.Collection.
So I think the new _isEqual will incorrectly say anything is equal with zero length because of the new test:
if (a.length === +a.length || b.length === +b.length)
I'm really not sure what the right fix is. Is it adding a check that something is a "pure"-array like object (no non-array properties)? Is it updating Backbone.Model set() to be more strict on checking the types than _.isEqual? Is it removing the array-like implementation in Backbone.Collection?
Either way, there should be a test like equal(_.isEqual(new Backbone.Collection(), []), false, 'Backbone.Collection is array-like, but also has properties'), but without the dependency on Backbone.
If this isn't clear, please let me know.
Cheers!

Ah, yes. The incompatibility is due to the fact that the previous _.isEqual function used a for...in loop to compare arrays and objects, whereas the current version uses an optimized while loop for arrays and array-like objects.
A possible workaround would be to change the if (a.length === +a.length || b.length === +b.length) branch to the following:
var isArrayA = _.isArray(a), isArrayB = _.isArray(b);
if (isArrayA || isArrayB) {
  if (!isArrayA || !isArrayB) return false;
  // Compare object lengths to determine if a deep comparison is necessary.
  // ...
} else {
  // Deep compare objects.
  // ...
}

@jashkenas: What are your thoughts on this?

@kitcambridge: I don't fully understand the problem. Does @kmalakoff not want to treat array-like objects as arrays? If that is the case (and your suggested solution makes it look that way), then I'd say Backbone is using Underscore improperly (which is actually pretty funny, considering their authors). Underscore defines array-like objects as anything with numeric length properties (but not numeric-strings, as I would prefer). If they want to use the Underscore functions, they'll need to understand that and change. And, yes, I understand we just changed this function, so it is understandable that their code broke, but it does indicate they were using the function improperly to begin with.

@michaelficarra: what I am raising is the false positives of the new array-like check and how it has real-implications on Backbone. I came to a similar conclusion about Backbone (in my local repositories, I updated the Backbone check), but the Underscore definition of array-like still doesn't sit well with me because it ignores the possible non-array like properties of an object in a comparison. A solution that wouldn't yield "false positives" (maybe these aren't considered as false positives?) would be to both check the array-like objects in the while loop and then the non-array like properties if it passes that first check.
@kitcambridge: I did a similar solution locally (in Backbone, though), but slightly different:
var isArrayA = _.isArray(a), isArrayB = _.isArray(b); if (isArrayA || isArrayB) {   if (isArrayA !== isArrayB) return false;   // Compare object lengths to determine if a deep comparison is necessary.   // ... } else {   // Deep compare objects.   // ... }
The change in 'if (isArrayA !== isArrayB)' makes it so the array-nesses match (either both arrays or both non-arrays). Otherwise, the non-arrays will never get checked. Of course, you could check a step further and make sure they are the same type (but that it even stricter and I believe @michaelficarra would prefer to keep array-like checks more flexible):
if (a.length === +a.length || b.length === +b.length) {   if !((a instanceof b.constructor) || (b instance of a.constructor)) return false;   // Compare object lengths to determine if a deep comparison is necessary.   // ... } else {   // Deep compare objects.   // ... }
Personally, I believe the most "correct" (meaning eliminating false positives) solution for array-like is to check the arrays as is correctly implemented and if passes, also check the properties. That said, if the intention is to be strict as @michaelficarra implies as was the intention, then library writers may be surprised by the additional strictness with the recent change...I was "surprised", meaning I spent a few hours trying to track down the bug across Underscore, Backbone and Backbone-relational ;-)

@michaelficarra: this has been going around in my mind and think that maybe the constructor comparison is the best implementation:
if !((a instanceof b.constructor) || (b instanceof a.constructor)) return false;
My thought is if two array-like containers are different types, should they really be "equal" even if they have identical items because you might not be able swap one for another? (as in the example I raised).
In order words, maybe _.isEqual should be defined as, "I can swap a for b and vice-versa with no side-effects"? That way, the new while loop check is only a comparison optimization, not an equality definition.
Whatchathink?

@kmalakoff: Unfortunately, the constructor property is writeable. I think you are trying to test that the objects are equivalent over the instanceof relation. Object.getPrototypeOf(a) === Object.getPrototypeOf(b) implies that a instanceof X === b instanceof X for any X (which is what you want). Unfortunately, Object.getPrototypeOf is ES5 only, and there's no reliable way to get the [[Prototype]] value in ES3.
I think your next suggestion is to just stop treating array-like objects differently than any other objects. And with that approach, I wouldn't have a problem. But I believe the current approach will be faster and match the expectations of most underscore users. Two arguments array-like objects should be equivalent over the _.isEqual relation, even if their callee property is not.
Speaking of non-enumerable properties, though: @kitcambridge: why do we only test the enumerable properties for object equality? Does a method even exist to enumerate the non-enumerable properties using only ES3 facilities? I can't think of one.

@michaelficarra: thank you for the excellent reply - I'm no Javascript expert so it is great to learn this!
I am unsure of what "the expectations of most underscore users" are with regards to equality (fast, I totally agree with!). But I am sure there is a significant base with a more strict interpretation of equality...I mean Backbone itself wasn't written with this new definition of _.isEqual in mind and I can only imagine how much other code written by mere mortals will break.
That's why I kind of like the "I can swap a for b and vice-versa with no side-effects" definition of equality..I think as part of the underscore code comments, the definition should be provided. Currently they read 'Perform a deep comparison to check if two objects are equal.'...deep sort of sounds as you imply, not just testing part of an object.
I look forward to seeing what you and @kitcambridge propose.

So, looking at this patch more closely -- it appears that we shipped some seriously funky equality comparisons with 1.2.0.
_.isEqual({length: 0, other: 'thing'}, []);

... should definitely be false. Deep object equivalence should be implemented in terms of for in semantics ... and objects with the same own properties but different prototypes are not the same. The above commit is my attempt to rectify the situation and fix @kmalakoff's problem. I'm of the inclination to quickly ship a 1.2.1 update with this change, but I'd appreciate it if @michaelficarra and @kitcambridge have an opportunity to look over the changes, particularly to the tests, and let us know what you think.

Yeah, I was definitely worried about shipping a new version so quickly after those isEqual changes landed. I'll take a look at that commit shortly.

@michaelficarra:

Speaking of non-enumerable properties, though: @kitcambridge: why do we only test the enumerable properties for object equality? Does a method even exist to enumerate the non-enumerable properties using only ES3 facilities? I can't think of one.

Not in ES 3, unfortunately. Object::propertyIsEnumerable can test if a property is enumerable, but the name of the property in question must be known.

Thanks for looking over these changes, Kit and Michael ... closing the ticket.


Make selection between C++ kernel/python ops  a function API instead of global variable

Currently, there is no docs for tfa.options.TF_ADDONS_PY_OPS because it's a global variable instead of a function. Ideally, we can implement something like instead of let users access global variable.
def enable_custom_kernel():
    """Docs go here."""
    # Use _TF_ADDONS_PY_OPS
    pass

def disable_custom_kernel():
     """Docs go here."""
    # Use _TF_ADDONS_PY_OPS
    pass

I would like to take a stab at this issue!

I would like to take a stab at this issue!

@jonpsy Please do!

Alright, made the PR let's discuss there :)

TensorFlow Addons is transitioning to a minimal maintenance and release mode. New features will not be added to this repository. For more information, please see our public messaging on this decision:
TensorFlow Addons Wind Down
Please consider sending feature requests / contributions to other repositories in the TF community with a similar charters to TFA:
Keras
Keras-CV
Keras-NLP


Upstream our MockCreator patch for mockstub

fabric/0001-mock-also-creator-identity-like-signedproposal-or-Ch.patch

See also issue #246

I think this patch is obsolete as the new MockShim has a creator already.

https://github.com/hyperledger/fabric-chaincode-go/blob/master/shimtest/mockstub.go#L73
https://github.com/hyperledger/fabric-chaincode-go/blob/master/shimtest/mockstub.go#L400

Closed thanks!


[SPARK-14392][ML]CountVectorizer Estimator should include binary toggle Param

What changes were proposed in this pull request?
CountVectorizerModel has a binary toggle param. This PR is to add binary toggle param for estimator CountVectorizer. As discussed in the JIRA, instead of adding a param into CountVerctorizer, I moved the binary param to CountVectorizerParams. Therefore, the estimator inherits the binary param.
How was this patch tested?
Add a new test case, which fits the model with binary flag set to true and then check the trained model's all non-zero counts is set to 1.0.
All tests in CounterVectorizerSuite.scala are passed.

Can one of the admins verify this patch?

@MLnick can you trigger the auto test? It seems that I am not in the white list. I had one JIRA merged to master. Thanks!
Miao

I'll do it once you update the tests as discussed (so we only test when necessary) :)

@wangmiao1981 the test looks ok to me now, although I'm not too sure why you added extra 'a's and 'b's, but that's fine.

ok to test

Test build #55132 has started for PR 12200 at commit 7c89370.

Test build #55132 has finished for PR 12200 at commit 7c89370.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55132/
Test FAILed.

Test build #55133 has started for PR 12200 at commit 5b35fb9.

Test build #55133 has finished for PR 12200 at commit 5b35fb9.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55133/
Test FAILed.

Merged build finished. Test FAILed.

Test build #55134 has started for PR 12200 at commit de81c35.

Test build #55134 has finished for PR 12200 at commit de81c35.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55134/
Test FAILed.

Test build #55135 has started for PR 12200 at commit 42fdfee.

Test build #55135 has finished for PR 12200 at commit 42fdfee.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55135/
Test PASSed.

@wangmiao1981 the tests are ok - but I do like @BrianCutler's idea of fitting the vectorizer first, and then building the model from that fitted vocab - it seems slightly cleaner to me (any prevents issues if the tests input should change in future for whatever reason).

@MLnick I will revise the test accordingly. I think after testing the estimator, I need to turn off the flag of the trained model first. Otherwise, the binary param of the model is not tested because the estimator already sets it to true.

Test build #55241 has started for PR 12200 at commit e1bffd7.

Test build #55241 has finished for PR 12200 at commit e1bffd7.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55241/
Test PASSed.

@wangmiao1981 I think you're right - we should move the setDefault call for binary back to the trait as the param is shared between the estimator and model. Thanks!

Test build #55359 has started for PR 12200 at commit e693c60.

Test build #55359 has finished for PR 12200 at commit e693c60.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55359/
Test PASSed.

This LGTM
For defaults, if the Param applies to training only (like minDF), then it makes sense to set the default in the Estimator.  But if the Param applies to transforming as well (like minTF), then it's good to set the default in the base trait so it applies to the Estimator and Model.  So the current status looks good to me.
@MLnick Please merge if this looks good to you now
Thanks all!

Yup, LGTM. Merged to master. Thanks all for review and @wangmiao1981 for the PR.


Implement loading OGG files from buffer and file path

Remake of https://github.com/godotengine/godot/pull/68540
Test Plan:
Tested that ordinary OGGs load.
Load from buffer needs testing.
Assistance Log
audio-coding.md
Production edit: Closes https://github.com/godotengine/godot/issues/61091

I'm thrilled

I will be slow modifying this.

from_filesystem is a weird naming convention. Shouldn't it be from_path?

@fire Any chance you could update this soon?

Will update soon.

Something is odd with c#.

Thanks!

@YuriSizov Should we expect this to be featured in 4.1.2?

@Overvault-64 You should expect this in 4.2. We normally don't include new features in maintenances releases (4.1.x).


Sleep

The script sleeps a ridiculously long time (literally hours) even after installing augments and starting over on the first set of businesses. I don't fully understand it but it appears to want to sleep for 12+ hours before it does anything.  My home server is 64 terabytes. Playing on steam.
mainHack.ns: [4:52:09 PM] Starting mainHack.ns

mainHack.ns: [4:52:09 PM] Selected rho-construction for a target. Planning to weaken the server. Will wake up around 6:28:09 AM

mainHack.ns: [4:52:09 PM] Stock values: baseSecurity: 42; minSecurity: 14; maxMoney: $13,184,119,700

mainHack.ns: [4:52:09 PM] Current values: security: 22.78; money: $13,184,119,700

mainHack.ns: [4:52:09 PM] Time to: hack: 09:23:59; grow: 10:52:47; weaken: 13:35:59

mainHack.ns: [4:52:09 PM] Delays: 04:11:29 for hacks, 02:42:56 for grows

mainHack.ns: [4:52:09 PM] Cycles ratio: 35885 grow cycles; 3297 weaken cycles; expected security reduction: 164.85

grow.ns log:
sleep: Sleeping for 96176964.8840369 milliseconds
Seems it doesn't account for scripts you already have running on home that it doesn't kill so I cant run my stock market manager and node manager scripts while it is running (Easy fix on your part just get free ram and not max ram when calculating grow/hack threads). But still it sleeps forever.

looks as though the the getgrowtime,gethacktime,and getweakentime changed not that long ago to return milliseconds, not seconds. you need to remove the * 1000 from:
const hackTime = ns.getHackTime(bestTarget) * 1000
 const growTime = ns.getGrowTime(bestTarget) * 1000
 const weakenTime = ns.getWeakenTime(bestTarget) * 1000

Doesn't it auto update when i run start.ns though?


Expose WebkitGTK Proxy Feature on Linux

Currently wry does not expose or support upstream proxies for the webview on Linux.
WebkitGTK supports this out of the box since version 2.16 but it is not exposed in a uniform interface in wry.
I would like to have an exposed wry proxy configuration, where it is possible to set the webview proxy independent
of the underlying WebkitGTK method. Possibly this interface could be used for Webview2 by adding custom parameters
to the window creation by default.
I would like to have a patch for older wry versions, so we could use this feature in Tauri 1.x instead of just in the 2.x releases.
The most recent supported interface is exposed in the WebsiteDataManager.set_network_proxy_settings
and the deprecated version is exposed via WebContext.set_network_proxy_settings.
There are no alternatives present and using this for auditing or compliance would require a custom built version of Tauri and Wry.
The functionality is needed in corporate environments where there are upstream proxies to be honored and when auditing Tauri applications it is helpful to use common security tooling in the process.
The proxy feature is exposed on windows via the custom webview arguments (--proxy-server <IP_ADDRESS>:8080) and on MacOs in a new beta version.
Discussed this shortly with @wusyong before opening the issue here.

https://developer.apple.com/videos/play/wwdc2023/10002/
This might help us to understand proxyConfigurations on macOS

Surveying WebView2 proxy feature:

How to use Microsoft Edge command-line options to configure proxy settings
https://github.com/MicrosoftEdge/WebView2Feedback/issues/132
https://github.com/MicrosoftEdge/WebView2Feedback/issues/193


More customizable.

Add class named JTSScrollIndicatorConfig to make JTSScrollIndicator more customizable.

The class, JTSScrollIndicatorConfig, has five property to set the style of JTSScrollIndicator.
width
minHeightWhenCompressed
minHeightWhenScrolling
rightMargin
inherentInsets
How to use
Just call the singleton JTSScrollIndicatorConfig object and set the properties.

    [JTSScrollIndicatorConfig sharedConfig].width = 5.0f;
    [JTSScrollIndicatorConfig sharedConfig].minHeightWhenScrolling = 5.0f;

Hide the default vertical scroll indicator in the UIScrollView.

Because, the default scroll indicator cover the JTSScrollIndicator.

#3


Devtools refresh on client recreation

First of all, love the Urql Devtools!  I've discovered a minor issue.  The devtools do not refresh when the client is completely recreated.  My use case for doing this is on user logout for security purposes.  I know the client is being recreated successfully as I can log back in (immediately after successful logout) and see my previously ran queries being sent to the server.
I'm using the method originally defined in this issue over in the urql repo:  https://github.com/FormidableLabs/urql/issues/297
More specifically, here is my exact custom provider with slight modifications:
import React from 'react';
import { Provider } from 'urql';
import makeClient from '/location/of/client';

export const ClientContext = React.createContext({});

export function GraphProvider({ children }) {
  const [client, setClient] = React.useState(makeClient());

  return (
    <ClientContext.Provider
      value={{
        resetClient: () => setClient(makeClient()),
      }}
    >
      <Provider value={client}>{children}</Provider>
    </ClientContext.Provider>
  );
}

export const useClient = () => React.useContext(ClientContext);

export default GraphProvider;

As a workaround, I initially tried right click -> "Reload frame" in the devtools to refresh it, but that seems to always completely reset devtools and all results on all tabs until additional queries/mutations are ran.  Thank you for your time!

Hey @Natas0007 thanks for the awesome feedback ❤
Just to get this right, this is the expected functionality?

Create a second urql client instance
Devtools should reload (similar to what happens on page refresh)

And this is the current functionality?

Create a second urql client instance
Devtools doesn't react to new client instance
Any requests on the new urql client are ignored by devtools
Previous requests made on the old urql client are still visible

If so, that makes a tonne of sense and this sounds like we should be doing something to handle new client instances.
It looks like the issue is the connection of your initial devtools instance is still alive, meaning devtools doesn't respond in a similar way to a page refresh.
My gut instinct here is that we start by terminating any existing chrome runtime connection for a tab whenever a new devtools instance is connected. Devtools isn't designed to support multiple clients anyhow so I can't see this being a problem.

Thanks @andyrichardson, you're close.  I never have 2 active client instances.  The initial instance is replaced by a new client instance, as per @kitten's recommendation for completely clearing the client cache.  Here are the expectations:
Expected functionality

Replace client instance to clear all cache
Devtools should update to reflect empty cache

Current functionality

Client is recreated
Devtools does not refresh and continues to show cache and history from previous client
Any new requests ARE picked up by Devtools, however, new request results are shown alongside the cache/results from the previous client instance

Hopefully this helps.  I'll be glad to provide additional detail if needed.  Thanks again for your time!

Thanks, that's super useful!

I never have 2 active client instances

While you won't have two instances being exposed via context, your initial client instance isn't explicitly torn down so any async actions could still be executing and triggering messages to devtools. We wouldn't(?) want a mix of the two being shown in devtools 🤔
My gut instinct would be to create a new connection upon a new instance of urql devtools and tear down the old one (see here). This would cause devtools to react similarly to a page refresh.
If we go with that option we'll need to:

[ ] Add state to devtools to identify if we're using the latest instance of the exchange
[ ] Add a guard when sending messages to ensure we're using the last instantiated devtools intstance
[ ] Add state clearing logic to extension when a connection-init message is received.

Open to other suggestions!

Understood.  I'll defer to @kitten for thoughts about the recommended solution.  Thanks again @andyrichardson!

Exchanges currently don't have any concept of being torn down as most of them are side-effect-less streams with ad-hoc state that is GC'able as these exchanges stop being used. When the client is swapped out we make the assumption that the framework bindings unsubscribe from all queries which tears down any explicit effect however. (All bindings also do this)
There are two exchanges that are the exception in registering. Those are:

refocusExchange (alpha stage) registering a listener to a window event, See: https://github.com/FormidableLabs/urql/blob/cf038f9930854ae6f3edfca296d2ee2f2d524b8b/exchanges/refocus/src/refocusExchange.ts#L9
offlineExchange which registers an onOnline event on a given storage engine, See: https://github.com/FormidableLabs/urql/blob/cf038f9930854ae6f3edfca296d2ee2f2d524b8b/exchanges/graphcache/src/offlineExchange.ts#L135

The latter becomes a noop after the client stops owning any active operations, so this will become inactive when the client is swapped out — however, for offline we wouldn't recommend this approach just yet and are looking for a patch to improve this.
For refocusExchange — which is in alpha, so slightly out of consideration anyway — it needs to unsubscribe/resubscribe as any operations become inactive/active, which fixes the potential leak.
So from our end, there's nothing stopping this and the plan remains that a client doesn't have to actively be destroyed or torn down, as no work should be ongoing once all operations become inactive (which happens when a client is swapped out in the framework bindings).
So from an urql-devtools standpoint swapping out the client is safe. From a Client (@urql/core) standpoint, it is also safe, although there are two known limitations on that safety that we'll address in the future.
A warning in the devtools could also help here, to signal that the Client has been swapped out, but I think resetting parts of the UI when a new client connects makes sense and could also help with unrelated page-swapping edge cases 🤔


Re-execute function for useTable

I noticed you left a TODO in your code here: https://github.com/ar1a/react-supabase-fp/blob/cad721476f7580ece8d08b5a377bb631ef3674ea/src/hooks/useTable.ts#L54
I've been playing around with Supabase and decided to try out your library and have been finding it pretty nice, but this functionality is currently missing sadly :(

Just refreshing a list of data post insert/update is where I'm hoping to use it?
Unfortunately looks like some of the types were broken in 1.1.0:
node_modules/react-supabase-fp/src/context/context.ts(8,14): semantic error TS2742: The inferred type of 'SupabaseContext' cannot be named without a reference to 'react-supabase-fp/node_modules/@types/react'. This is likely not portable. A type annotation is necessary.

https://github.com/Mause/financial-dash/pull/48/checks?check_run_id=3308278911

ah, I think I need to make supabase-js a peer dependency. I'll update it
soon and let you know!!
On Thu, 12 Aug 2021, 1:27 pm Elliana May, @.***> wrote:

Just refreshing a list of data post insert/update is where I'm hoping to
use it?
Unfortunately looks like some of the types were broken in 1.1.0:
node_modules/react-supabase-fp/src/context/context.ts(8,14): semantic error TS2742: The inferred type of 'SupabaseContext' cannot be named without a reference to @.***/react'. This is likely not portable. A type annotation is necessary.
https://github.com/Mause/financial-dash/pull/48/checks?check_run_id=3308278911
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ar1a/react-supabase-fp/issues/2#issuecomment-897359313,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACALSJ7QVLHBZFXE7RYA6HLT4NLUNANCNFSM5B5ZR3CA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

this should be fixed in https://github.com/ar1a/react-supabase-fp/commit/1bffbf627c9480eb08e2c1f0aaf2c92c74fa0e72
i've bumped to 1.1.1 and updated the @next tag on npm. try it out and let me know!

@ar1a No luck I'm afraid, same error :(
https://github.com/Mause/financial-dash/pull/48/checks?check_run_id=3309275281

Alright, another attempt to fix in 955d582099f8ba6c97ec41c2358b518091bb1742
same deal, 1.1.2 and tag has been updated.
sorry for the hassle :/

Hah, it's all good, this is just a hobby project 💜
node_modules/react-supabase-fp/src/hooks/useTable.ts(62,28): semantic error TS2571: Object is of type 'unknown'.

Here -> https://github.com/ar1a/react-supabase-fp/blob/23d64afef6c671aa26d20a87fa9154d746522ced/src/hooks/useTable.ts#L62
Different error this time! Progress!
https://github.com/Mause/financial-dash/pull/48/checks?check_run_id=3309439046

62 should actually be this line... https://github.com/ar1a/react-supabase-fp/blob/f31af9ead01c73c3f9b3fc3ef8e3a23f768656d9/src/hooks/useTable.ts#L62
there is no reason why supabase should be unknown, useSupabase returns an Option<SupabaseClient>
honestly, kinda stumped here. i think it might be something with your ci or my peer dependencies setup? ive not worked with them much before.
if you see it fails earlier here https://github.com/Mause/financial-dash/pull/48/checks?check_run_id=3309439046#step:4:34
which would explain why there are no types for supabase
i cloned your project, checked out the branch and ran yarn --frozen. works fine on my machine
i think if this goes where i think it will, my previous changes are also unnecessary

please check out the new version! i think i have solved your ci problem :)

Yep, all solved now
For the future -> https://github.com/npm/rfcs/blob/latest/implemented/0025-install-peer-deps.md


Code workflow

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: nikimilushev sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


feat: disable loadSystemFonts in resvg-js to improve first-time loading speed

Try to fix: https://github.com/svg-sprite/svg-sprite/pull/574#issuecomment-1053551158

@Kreeg, Please take a look, I can't continue to run CI.

@yisibl wow thank you! I'll check tonight

@yisibl thanks again!


calcDist uses getTransportCost but really needs distance

In /jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java:84 private double calcDist(Location location_i, Location location_j) calls costs.getTransportCosts(). Looks like what it wants is distance but calls cost function with vehicle = null which feels inconsistent since cost generally depends on vehicle. Shouldn't it actually be using a distance calculator? Most cost calculators i've seen also have distance calculators in them. Seems like cost calculators should also implement a distance function getDistance() and calcDistance should be calling it. Does it sound reasonable?

Having logic in there which depends on a try-catch is a bit dodgy, but if the distance is being used as a metric to group 'close' jobs into clusters for a ruin, then in my opinion the 'distance' really should be transport cost, not actual distance.

The thing is cost depends on vehicle. Which one should be used to compute "cost radius"? Also, in the paper they seem to use distance rather than cost for radial ruin.

Hmm. I see your point about cost being dependent on vehicle. It may be more appropriate to calculate a mean vehicle cost per unit distance and cost per unit time across all vehicles and use it to generate the cost here? That way at least we're creating a cost averaged over all vehicles?
Various academic papers optimise for minimising distance but in the real world its usually minimising travel time that is much more appropriate. Therefore just assuming an arbitrary cost - which can be a user-defined weighting of both distance and time, is safer in my opinion.

Average cost would make sense. However, in CrowFlyCost the cost function actually returns distance if no vehicle is provided. May be we just need to call the distance function explicitly when doing ruin.

Thanks for your thoughts. Average transport cost sounds reasonable. However, I think we do not need to be too sophisticated here. This is just a measure to define a neighborhood for radial ruin. The term distance here does not necessarily mean that we need to use 'm' or 'km'. It is just a general measure to define the neighborhood. It can also be 'time' or smth depending on the jobs' time windows etc..

I agree "pure distance" is a good measure. It's just that it is obtained after a call to getTransportCost with vehicle = null. I think it would be better to call getDistance() directly, without using the obscure convention that when vehicle is null cost function should return distance.


Scatter plot: context menu harmonization

[x] rename Drop Lines (add Show)
[x] rename Regression Line (add Show)
[x] Rectangle/Lasso select
[x] add "Label Color As Marker" to Context menu | Markers
[x] hide/disable marker type when marker axis is defined

Comes with version 1.14.0

For the Bar chart context-menu, you renamed "Visibility" to "Controls" (see here: https://github.com/datagrok-ai/public/issues/1376).  I noticed that Scatter plot context-menu also has a menu with the name "Visibility" with similar properties. Should they be named consistently?

DG 1.16.0


Part 2 of plural ports: make endpoints a struct

Includes conversions for v1b[12] and tests and fixups for call sites.
Builds on #4560

Seems reasonable.  Small stuff.
--brendan

I'm trying to pre-flight some of the work to get plural service ports, so this is sort of a useless PR on it's own, but maybe worth commiting (or I can just fold it all together into one big PR)

That's what I get for trying to pre-factor things to make big changes smaller :)

ok, fine, LGTM.


export 'Div' was not found in 'glamorous'

glamorous version: ^3.12.0
glamor version: ^2.20.24
react version: 15.4.1

Relevant code.
// importing documented built-in
import {Div} from 'glamorous'

// class method
render() {
  <Div />
}

What you did:
importing built-in HTML tag as defined in the documentation
What happened:
throws an error and prevents the app from building.
export 'Div was not found in 'glamorous'
Reproduction:

not able to reproduce on codesandbox.io
Problem description:
the code was using the built-in html tags as defined in the docs. when refactoring the same code in a new project, I cam across this error.
Suggested solution:
skimming through this thread:
https://github.com/paypal/glamorous/issues/42
... it became obvious a simple way to get around this was to define these tags as methods of glamorous.
// before
import {Div} from 'glamorous'

// after
import glamorous from 'glamorous'
const Div = glamorous.div()

Hi! Yes, importing the built in components is not supported and there are no plans to add support. Feel free to open a pull request if you feel like the docs could be improved in this regard. Thanks!

Oh and actually, this is what you should do:
import glamorous from 'glamorous'
const {Div} = glamorous


$request->get() returns null for posted array

I am posting an array of dates to a controller in a test:
$this->json('post', '/admin/location/1/closed_dates', ['dates' => ['2015-01-01', '2016-01-01']])
In the controller, I can see the date array using $request->all()['dates'], however, $request->get('dates') returns null.
This appears to be a bug.

That's because the method is called get. It won't give you posted variables.

It'll give you query params only.

Thank you @GrahamCampbell.  Is there a method for getting requested post data (other than $request->input())?

I tend to use the following but ->get() should return all _POST, _GET and _SERVER?
return $request->dates;


Adding --extractErrors to build throws errors

Current Behavior
I'm currently trying to add the --extractErrors flag to builds of Redux Toolkit (https://github.com/reduxjs/redux-toolkit) and without making ANY changes, just adding that flag, it gives some pretty unhelpful errors. I'm not sure what information to provide because I'm a bit lost myself on what is causing this other than "babel issue".
> tsdx build --format cjs,esm,umd --name redux-toolkit --extractErrors && api-extractor run --local

✓ Creating entry file 3.8 secs
Browserslist: caniuse-lite is outdated. Please run next command `npm update`
(at position 1 plugin) SyntaxError: Unexpected token, expected , (47:4)

at undefined:47:4
SyntaxError: Unexpected token, expected , (47:4)
    at Parser.pp$5.raise (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:4454:13)
    at Parser.pp.unexpected (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:1761:8)
    at Parser.pp.expect (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:1749:33)
    at Parser.pp$8.flowParseTypeParameterDeclaration (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:5322:12)
    at Parser.pp$8.flowParseInterfaceish (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:5191:32)
    at Parser.pp$8.flowParseInterface (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:5229:8)
    at Parser.parseExportDeclaration (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:6036:21)
    at Parser.pp$1.parseExport (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:2654:29)
    at Parser.parseExport (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:6000:20)
    at Parser.pp$1.parseStatement (E:\Source\redux-toolkit\node_modules\babylon\lib\index.js:1884:74)

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>build: `tsdx build --format cjs,esm,umd --name redux-toolkit --extractErrors && api-extractor run --local`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\Andrew\AppData\Roaming\npm-cache\_logs\2020-10-27T01_44_02_027Z-debug.log

Expected behavior
Shouldn't explode. :) Worth mentioning, ErrorDev, ErrorProd, and codes.json files are created before it craps out. Even if I have invarant being used in the codebase, codes.json is empty (just {}), however.
Suggested solution(s)
I have no idea. I've been trying to dig into this on my side but I've hit a dead end which is why I'm reaching out!
Additional context
Reproducing is really simple... clone Redux Toolkit, add the flag to the build script, and watch it error.
Your environment

System:
    OS: Windows 10 10.0.18363
    CPU: (12) x64 AMD Ryzen 5 2600 Six-Core Processor
    Memory: 8.15 GB / 15.95 GB
  Binaries:
    Node: 12.16.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.4 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 6.14.4 - ~\AppData\Roaming\npm\npm.CMD
  Browsers:
    Chrome: 86.0.4240.111
    Edge: Spartan (44.18362.449.0)
    Internet Explorer: 11.0.18362.1
  npmPackages:
    tsdx: ^0.11.0 => 0.11.0
    typescript: ^3.8.2 => 3.8.2

So I noticed the repo isn't using the latest version of tsdx. I upgraded to latest (0.14.1) and it seems to have introduced a completely different problem when I run npm run build.
> tsdx build --format cjs,esm,umd --name redux-toolkit && api-extractor run --local

✓ Creating entry file 1.3 secs
Error: 'import' and 'export' may only appear at the top level

at E:\Source\redux-toolkit\node_modules\symbol-observable\es\index.js:2:0

1: /* global window */
2: import ponyfill from './ponyfill.js';
   ^
3:
4: var root;

So there's a lot to unpack here:

As you later noticed, RTK is on a fairly old version of TSDX:

tsdx: ^0.11.0 => 0.11.0

The error says it's a failure to parse, meaning something was output syntactically incorrect or something.

--extractErrors seems to have very few users because it has a variety of issues and sparse documentation
It was implemented in #138 by others without any tests. I added some simple tests in #627 which failed in multiple different ways, as is written there. I did some further digging into that:

warning isn't replaced because this line and this line don't check for warning, only invariant. But even if it were added to those, ErrorProd / ErrorDev don't handle the case of warning; there would have to be quite a few more changes to be made.
tiny-invariant's import is never removed, it just becomes a side-effect. The transformErrorMessages Babel plugin doesn't remove it (nor take an identifier for what import to remove since any invariant function can be used)
ErrorProd / ErrorDev being in JS and not easily testable is suboptimal and seems problematic
My test fixture seems to be a bit buggy which is why ErrorProd / ErrorDev aren't imported/output properly; they do seem to work when I fix that.

Per #878 this pseudo-fork of React internal scripts is not really maintainable (actual forks tend not to be and this goes several steps further) and was quite difficult to update to Babel 7 (it was previously on a quite outdated version of Babel 6). There are still changes missing from upstream as well. Per there, would much, much, much prefer to depend on a React maintained plugin or something.

It looks like you added a similar, but slightly different plugin in https://github.com/reduxjs/redux/pull/3920, which adds another support for why this should be an entirely independent plugin. If the Redux folks can ask React to split out the plugin, I can chime in there.

I upgraded to latest (0.14.1) and it seems to have introduced a completely different problem when I run npm run build.

That's an unrelated error, please keep issues on topic.
I did a search for this error and the first result shows that this is an error upstream in @rollup/plugin-commonjs: https://github.com/rollup/plugins/issues/304. That seems to be fixed in v12.0.0, but that version has an undocumented requirement on Rollup 2, which is a very breaking change slated for v0.15.0.

@agilgur5 Apologies for the off topic issue, wasn't sure if it would be helpful or add any context, but yes, appears to be a different issue.
I think I'll wait on v0.15 and see if we can work forward from there on this issue since this is a bit of a rats nest at the moment with multiple issues.


Loader - Upgrade to Java 18 and newer versions of dependencies

Hi @amhudson @gchickma is there an update on how this is going? ideally it would be good if all the microservices were at Java 18 before we go live with v4 of Flow.

Still haven't found a solution to resolve the issues with migrating the loader to Java 18.

Hey @amhudson @gchickma is there an update to this task? Loader is the only microservice not on Java 18

No, haven't been able to get back to this. In a lot of directions on my end.

Updated to Java 17 and Spring Boot 3


Use the Retina assets for outlineItemToggler when in HiDPI mode

Follow-up to PR #6242.

/botio-windows preview

@Rob--W Both comments addressed.
/botio-linux preview

LGTM.
Tested as follows:

Open http://<IP_ADDRESS>:8877/6a15b5575272bb9/web/viewer.html
Open a PDF with an outline (e.g. PDF spec).
Open sidebar, open outline.
Inspect the triangle and verify that the non-@2x image is shown.
Use the device emulation feature of the Chrome devtools to set the device pixel ratio to 2.
Verify that the image is now using the @2x picture (and the appearance is identical to the triangle from step 3).

Thanks for this fix!


Algo Floyd Warshal Algorithm Java

Here is the description of the algorithm
https://www.geeksforgeeks.org/floyd-warshall-algorithm-dp-16/

Want to work on this issue
yes


GEODE-735: Create JUnit tests for OffHeapHelper

Added OffHeapHelperJUnitTest class
Pre-checkin run - 2 failures, both previously reported and not related to OffHeap

I reviewed the test and it looks good. I'll pull it in.


Follow Chocolatey Package icon guidelines

Avoid hotlinking icon and use a static CDN for icon URL, reference:
https://chocolatey.org/docs/create-packages#package-icon-guidelines

@micksmix currently the icon failed to show up on: https://chocolatey.org/packages/lazarus, hopefully after this patch, it'll show up properly on the next pack!

Thank you!


[Doc Improvement][Tools and SDK links fix][2716939]

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit a087cbb:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
95
12
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit 85a7d0a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
95
12
link
:white_check_mark:

msteams-platform/toolkit/debug-local.md
93
10
link
:white_check_mark:

msteams-platform/toolkit/debug-overview.md
95
9
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit 67329cc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-local.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-overview.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
95
12
link
:white_check_mark:

msteams-platform/toolkit/debug-local.md
93
10
link
:white_check_mark:

msteams-platform/toolkit/debug-overview.md
95
9
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit eee0eb9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-local.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-overview.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
95
12
link
:white_check_mark:

msteams-platform/toolkit/debug-local.md
93
10
link
:white_check_mark:

msteams-platform/toolkit/debug-overview.md
95
9
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit fe8de8a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-local.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-overview.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
95
12
link
:white_check_mark:

msteams-platform/includes/get-started/azure-provisioning-instructions-tab.md
98
4
link
:white_check_mark:

msteams-platform/toolkit/debug-local.md
93
10
link
:white_check_mark:

msteams-platform/toolkit/debug-overview.md
95
9
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit 7b12494:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
:white_check_mark:Succeeded
View

msteams-platform/includes/get-started/azure-provisioning-instructions-tab.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-local.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-overview.md
:white_check_mark:Succeeded
View

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/concepts/build-and-test/teams-developer-portal.md
98
1
link
:white_check_mark:

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
95
12
link
:white_check_mark:

msteams-platform/includes/get-started/azure-provisioning-instructions-tab.md
98
4
link
:white_check_mark:

msteams-platform/toolkit/debug-local.md
93
10
link
:white_check_mark:

msteams-platform/toolkit/debug-overview.md
95
9
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Learn Build status updates of commit 0ba80ee:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

msteams-platform/concepts/build-and-test/teams-developer-portal.md
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/prepare/include-saas-offer.md
:white_check_mark:Succeeded
View

msteams-platform/includes/get-started/azure-provisioning-instructions-tab.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-local.md
:white_check_mark:Succeeded
View

msteams-platform/toolkit/debug-overview.md
:white_check_mark:Succeeded
View

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


Vulnerability roundup 89: php-7.2.32: 1 advisory [7.5]

search, files

[ ] CVE-2018-19935 CVSSv3=7.5 (nixos-20.03)

Scanned versions: nixos-20.03: dabbc5a5603. May contain false positives.
Cc @etu
Cc @globin

20.03 is Frozen and EOL.
As such, issue is closed.


[Win] Need to control behavior if MessageBox button was not pressed for a long time

We need timeout for MessageBox - if button not pressed within , close it.

MessageBox with fail reason will wait 1 min and then will close with "OK".
InstallationFinished window will stay for 1 hour in case in user is absent, after that will close and rollback installation.


docs(quickstart): update to new docs design (TS and Dart)

Note: it is best to view TS .jade file changes while ignoring whitespace.
The quickstart chapter was updated to conform to the new docs design (using Jade blocks).

TS: Jade file updated to support new docs design. Also other kinds of edits; e.g., the prose is more compact, showing the handful of config files in via a makeTab. This new shorter version (once explanations are hidden) feels more like a QuickStart guide :).

Dart. Recreated prose as extension of TS prose. Code was updated to conform to the organization of the app given on the TS side. I.e., the app component was factored out into its own file. E2e tests pass :).

I love what you did with the prose.
What I am a bit wary about is that now we are mixing a lot of markdown with jade. Sometimes we have links in markdown, sometimes in jade, headers in markdown, sometimes in jade... We need to make our mind. I don't really want to me "writing markdown" but having also to use jade.

Glad you like it.
Yes, I have been looking for ways to avoid using too much Jade vs markdown. The limitations we currently face are:

While Jade string interpolation #{...} works in markdown, tag interpolation #[...] does not. This is a limitation because mixins can only be interpolated via #[...].

The smallest unit of markdown that can be used in conditionals is the paragraph. E.g.

:marked
  some initial text
- if (some condition)
  :marked
    conditionally included text
:marked
  more text

Renders as separate paragraphs like this:

some initial text
conditionally included text
more text

Which is fine when each fragment is meant to be a stand alone paragraph, but sometimes, the prose to be conditionally included is just a word/phrase/statement within a paragraph. Like this:

some initial text conditionally included text more text

To get intra-paragraph conditional inclusion of text requires that we fall back to using Jade elements. It used to be worse, but as I learn more Jade I have been finding better ways of avoiding mixing markdown and Jade elements. Hopefully that will get better over time.

All that being said, the more I work with it the more I find the Jade readable: e.g.
:marked
  # Title

  Text text text text
  Text text `text` text

in Jade becomes
h1 Title
p.
  Text text text text
  Text text #[code text] text

Which seems as readable, but with one less level of indentation :).

Thanks Patrice!
I was skeptical at first but I think this works out pretty well.
I fixed broken links and made a few other adjustments (including squashing) before merging.

@wardbell: it would be much easier for @kwalrath and me to follow the adjustments (beyond copyedits) you make if they are in a separate PR. Or, just make inline comments to the original PR source files and then I can make the edits.
That way it gives us a chance to discuss edits (beyond simple copyedits). Generally your edits are good (e.g. fixed links), but I do have some questions/remarks: e.g.,

Why did you choose to exclude the "DOWNLOAD THE SOURCE" call out for Dart? Is it because you want Dart users to work harder ;).
You renamed "Step 0" to "Prerequisite", but with the new title, this clashes with the fact that we instruct users to "install" s/w rather than just list it. Btw, the "Step 0" convention, is a convention adopted in most Dart tutorials.
You repositioned the "DOWNLOAD THE SOURCE" to be immediately after the "Install Node.js..." which could mislead some readers. I suggest either putting this callout before the "Step 0/Prerequisite" step or at the start of Step 1.
FYI, makeExcerpt will, by default, have no line numbers; so to appending (format=".") is unnecessary.
Speaking of line numbers, it has been my understanding that excerpts never show line numbers (to avoid confusing users), but that full examples do (so that users can more easily make reference to a specific line in the source if they wish to comment on it). Do you agree?

Sorry. I thought it was easy as a separate commit and you could diff.
Step 0 may work for Dart but not the much broader audience. Also, unlike other steps, it is a one time step AND a prerequisite for the QS repo. I'm afraid I must insist on this point.
Download exclusion was indeed to hinder Dart development. 😃.
Repositioning was because the prerequisite is for BOTH download and subsequent steps. Please keep.
Excerpts could have line numbers and should if they are long". I haven't defined long  but rule of thumb is >10 lines

Line numbers in excerpts make sense to me only if they reflect the actual line numbers in the file. Otherwise, I think it's very confusing.
To me, line numbers seem relevant if you're actually referencing them in the text. Otherwise, they just take up space.

That has been my take on line numbers too.
@wardbell : I'm ok with all of the changes you suggest I keep. As for the download exclusion, I mistakenly though that you had excluded it for some reason--- the Dart .jade file comment exclude this section from Dart threw me off. I understand now is that you were just focused on getting the TS prose done. I'll reintroduce the download for Dart.

Interesting. I never thought of them as referring to actual fille lines... because they almost never do. Too many docregion exclusions.
Rather they facilitate the dialog that begins on line #42 where you add the frames..._
Otherwise, I'd never use.
Let's keep until we see how Naomi feels.


Errors when including VueEditor in component

I updated to the latest version of @vue/cli-service
Now when i run the following code
import { VueEditor } from 'vue2-editor';

@Component({
  components: {
    Panel,
    VueEditor,
    ValidationObserver,
    ValidationProvider
  }
})

I get the following error:
No overload matches this call.
Overload 1 of 2, '(options: ComponentOptions<Vue, DefaultData, DefaultMethods, DefaultComputed, PropsDefinition<Record<string, any>>, Record<...>> & ThisType<...>): <VC extends VueClass<..
.>>(target: VC) => VC', gave the following error.
Type '{ Panel: typeof Panel; VueEditor: VueEditorConstructor; ValidationObserver: ExtendedVue<Vue & { $_veeObserver: VeeObserver; $vnode: VNodeWithVeeContext; }, { ...; }, { ...; }, unknown, { ...
; }>; ValidationProvider: ExtendedVue<...>; }' is not assignable to type '{ [key: string]: VueConstructor | FunctionalComponentOptions<any, PropsDefinition> | ComponentOptions<never, any, any, any, any, Record<...>> | AsyncComponentPromise<...> | AsyncComponentFactory<...>; }'.
Property 'VueEditor' is incompatible with index signature.
Type 'VueEditorConstructor' is not assignable to type 'VueConstructor | FunctionalComponentOptions<any, PropsDefinition> | ComponentOptions<never, any, any, any, any, Record<...>>
AsyncComponentPromise<...> | AsyncComponentFactory<...>'.
Type 'VueEditorConstructor' is missing the following properties from type 'VueConstructor': $axios, $authHelper
Overload 2 of 2, '(target: VueClass): VueClass', gave the following error.
Argument of type '{ components: { Panel: typeof Panel; VueEditor: VueEditorConstructor; ValidationObserver: ExtendedVue<Vue & { $_veeObserver: VeeObserver; $vnode: VNodeWithVeeContext; }, { ...; }
, { ...; }, unknown, { ...; }>; ValidationProvider: ExtendedVue<...>; }; }' is not assignable to parameter of type 'VueClass'.
Object literal may only specify known properties, but 'components' does not exist in type 'VueClass'. Did you mean to write 'component'?
    216 | });
    217 |
  > 218 | @Component({
        |  ^
    219 |   components: {
    220 |     Panel,
    221 |     VueEditor,

This issue has to do with that the typings are very old. Is there a chance that you could update the typings for this package? Thank you.

This issue is stale because it has been open for 60 days with no activity.

This issue was closed because it has been inactive for 7 days since being marked as stale.


[$1000] Chat - It's not here" displayed when click on back bin after all request money was deleted

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:
Precondition: user should be logged in

Open app
Tap on any 1:1 conversation with user
Make a two request money in a row
Tap on the requested money fiend in chat
Tap on the first requested money
Tap on 3 dots button > delete
Tap on back button
Tap on the remaining requested money
Tap on 3 dots button > delete
Tap on back button

Expected Result:
User should be navigated back to the DM
Actual Result:
Step 8: has navigated to the same page
Step 10: user has navigated to the "It's not here" page
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/ec15eef5-6f54-4518-8753-98533638d447
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01c14c4b05f0985c77
Upwork Job ID:<PHONE_NUMBER>589380096
Last Price Increase: 2023-08-29

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

Proposal
Please re-state the problem that we are trying to solve in this issue.
When deleting the requested money, the navigation is set incorrectly.
What is the root cause of that problem?
The first problem with the duplicate screen is caused by redundant navigation to the report route with reportID.
The second problem with the error screen is caused by the omission of the second call to the goBack function. This leaves an invalid ID in the navigation stack.
What changes do you think we should make in order to solve the problem?
Make additional call of Navigation.goBack if needed and avoid useless navigation to avoid redundancy in the navigation stack.
diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js
index 5660bc31a8..65357e22a8 100644
--- a/src/libs/actions/IOU.js
+++ b/src/libs/actions/IOU.js
@@ -965,14 +965,21 @@ function deleteMoneyRequest(transactionID, reportAction, isSingleTransactionView
     if (isSingleTransactionView && shouldDeleteTransactionThread && !shouldDeleteIOUReport) {
         // Pop the deleted report screen before navigating. This prevents navigating to the Concierge chat due to the missing report.
         Navigation.goBack();
-        Navigation.navigate(ROUTES.getReportRoute(iouReport.reportID));
+        if (!Navigation.isActiveRoute(ROUTES.getReportRoute(iouReport.reportID))) {
+            Navigation.navigate(ROUTES.getReportRoute(iouReport.reportID));
+        }
         return;
     }

     if (shouldDeleteIOUReport) {
         // Pop the deleted report screen before navigating. This prevents navigating to the Concierge chat due to the missing report.
         Navigation.goBack();
-        Navigation.navigate(ROUTES.getReportRoute(iouReport.chatReportID));
+        if (Navigation.isActiveRoute(ROUTES.getReportRoute(iouReport.reportID))) {
+            Navigation.goBack();
+        }
+        if (!Navigation.isActiveRoute(ROUTES.getReportRoute(iouReport.chatReportID))) {
+            Navigation.navigate(ROUTES.getReportRoute(iouReport.chatReportID));
+        }
     }
 }

What alternative solutions did you explore? (Optional)
No one.
Introduced by commit dc343ddda052893688174035392eb76dd1a0ac0a. As that commit is revert of the PR 22787 it would be safer to just fix this issue than do revert.
Reminder: Please use plain English, be brief and avoid jargon. Feel free to use images, charts or pseudo-code if necessary. Do not post large multi-line diffs or write walls of text. Do not create PRs unless you have been hired for this job.

This is not a blocker. It's been the case since we introduced the feature.

Proposal
Please re-state the problem that we are trying to solve in this issue.
The navigation is wrong when we delete iou transaction
What is the root cause of that problem?

When we delete a transaction in single transaction view we go back and navigate to the iou report instead of just going back

When we delete the last transaction we don't differentiate between context menu and single transaction view so the navigation is right for the context menu but not for the single transaction view

What changes do you think we should make in order to solve the problem?

When we delete a transaction from the transaction view we can just go back in the stack, I put the default route just in case.

if (isSingleTransactionView && shouldDeleteTransactionThread && !shouldDeleteIOUReport) {
    Navigation.goBack(ROUTES.getReportRoute(iouReport.reportID));
    return;
}

When we delete the last transaction we must go back twice if we are in the single transaction view and only one time if we come from the context menu

if (shouldDeleteIOUReport) {
    if(isSingleTransactionView)
        Navigation.goBack();
    Navigation.goBack(ROUTES.getReportRoute(iouReport.chatReportID));
}

What alternative solutions did you explore? (Optional)

Actually we can simplify it even more by not returning in the first if like this:
if (isSingleTransactionView && shouldDeleteTransactionThread) {
    Navigation.goBack(ROUTES.getReportRoute(iouReport.reportID));
}

if (shouldDeleteIOUReport) {
    Navigation.goBack(ROUTES.getReportRoute(iouReport.chatReportID));
}

@luacmartins is this a bug or something that is going to be cleaned up internally? Or can I make this external

You can make this external

Proposal
Please re-state the problem that we are trying to solve in this issue.
Chat - It's not here" displayed when click on back bin after all request money was deleted
What is the root cause of that problem?
When we delete the last transaction
https://github.com/Expensify/App/blob/79ea92345e48599d6663ef20213f8c64bb0568c1/src/libs/actions/IOU.js#L1264-L1268
We will go back to IOU Report and then navigate to the chat report. In this time, the previous screen is IOU Report. So when clicking back button in the chat report, the App will go back to IOU Report (IOU report is removed) and display not found page
What changes do you think we should make in order to solve the problem?
When deleting the last transaction, both transaction report and IOU report will be removed. So in here
https://github.com/Expensify/App/blob/79ea92345e48599d6663ef20213f8c64bb0568c1/src/libs/actions/IOU.js#L1264-L1268
I suggest we should use Navigation.goBack instead of Navigation.navigate(ROUTES.getReportRoute(iouReport.chatReportID));
like this
    if (shouldDeleteIOUReport) {

        Navigation.goBack();

        Navigation.goBack();
    }

What alternative solutions did you explore? (Optional)

@tymatein I tried your solution, but I still see the not found page in the background, is this a different issue? Even though the back button on step 10 is correctly navigated to LHN.
https://github.com/Expensify/App/assets/25520267/7159cc60-54b5-4078-b5e8-b27dfb7342a5
@DylanDylann Your solution basically the same with @tymatein and I still not convince calling Navigation.goBack() twice.

@mollfpr Hello, have you been able to review my solution too ? This is the same idea but better implemented and for me there was not page not found page https://github.com/Expensify/App/issues/24490#issuecomment-1676509023

@ShogunFire I tried your solution, and it seems clearer than the other. So far, I haven't found any problem. I'll give an update after, testing it on all platforms.

Sorry but I tried many times and was not able to reproduce on either branch

Thanks @tymatein for the confirmation. I'll try all the proposals thoroughly, and see which of the solution is a better approach.

@mollfpr IMHO we should create a new bug for the animated not found page problem. I can't find a nice solution for this. E.g. I don't know whether mobile app can temporarily disable the animation feature.

@tymatein You're right. @ShogunFire's proposal didn't cover the above case. Could you explain why we need to call Navigation.goBack() twice?
+        if (Navigation.isActiveRoute(ROUTES.getReportRoute(iouReport.reportID))) {
+            Navigation.goBack();
+        }
+        if (!Navigation.isActiveRoute(ROUTES.getReportRoute(iouReport.chatReportID))) {
+            Navigation.navigate(ROUTES.getReportRoute(iouReport.chatReportID));
+        }

Also, why do we need to check the currently active route on the second condition? Isn't Navigation.isActiveRoute will return false after the second Navigation.goBack()?

Yes, sure. Because 2 items in the navigation routes became invalid (records do not exist anymore).
So we need to do double goBack actions. See image

I've been debugging it for hours.
I like the simplicity of @ShogunFire's design.
There are 2 aspects involved:

In some situations the DM chat is not displayed after money request is deleted. If the user arrived by another way, e.g. by clicking on Money Request in LHN. The user will actually be navigated back to where she was originally. It's an edge case, but we could consider it a feature. I like it.

Unfortunately, the goBack function with fallback path doesn't work at all as I would expect. The fallback path is never used. This leads to the fact that after the money request is deleted:

LHN (main) navigation is displayed on the mobile,
NotFound page is displayed on desktop

Lets study desktop case:
Steps to reproduce:

Create money request in chat with PersonB
Go to money request
Refresh browser
Via context menu delete the money request
See that NotFound page is displayed
Why? The Desktop App recognizes that it can no longer navigate backwards, so it keeps the currently used path there. Which is the money request screen.
But if the Navigation.navigate function is called right after Navigation.goBack, then the Desktop App displays the requested screen, and at the same time the money request screen has been removed from the navigation stack. Therefore @tymatein proposal works well in all cases.

I think we need an expert on App Navigation, and investigate if the goBack function contains a bug.

If we want to ensure we are going to the chat report we can use navigate(fallbackRoute, CONST.NAVIGATION.TYPE.UP) instead of goBack(fallbackRoute)

IMHO we should create a new bug for the animated not found page problem. I can't find a nice solution for this. E.g. I don't know whether mobile app can temporarily disable the animation feature.

Let's put this aside; looks like out of the scope of this issue.
@tymatein Have you looked over the NAVIGATION.md?
The double call Navigation.goBack() seems to be a workaround; maybe we can replace it with Navigation.dismissModal(reportID) as suggested in the doc?

dismissModal is just used for the RHP I think

@ShogunFire is correct. dismissModal is not intended to be called for screens in NAVIGATORS.CENTRAL_PANE_NAVIGATOR.
BTW I re-read the NAVIGATION.md but still I don't see any other way then 2x goBack.

Here https://github.com/Expensify/App/issues/24490#issuecomment-1693095224 I meant navigate(route,UP), not the const.At least that's not two goBack but two navigate if we do this ahah, I think it´s working and very clean solution

Proposal
Updated
I think this is a mix of the best between @tymatein and my former solution so maybe we can share the bounty if this is chosen

It is not working at all. The browser freezes. Did you test that? Actually the navigate(route, "UP") is not working for me. I am not sure whether I am doing something wrong on my side.

For:
    if (isSingleTransactionView && shouldDeleteTransactionThread) {
        Navigation.navigate(ROUTES.getReportRoute(iouReport.reportID), 'UP');
    }

    if (shouldDeleteIOUReport) {
        Navigation.navigate(ROUTES.getReportRoute(iouReport.chatReportID), 'UP');
    }

https://github.com/Expensify/App/assets/134623449/167cdd36-7530-46ec-88df-6ab3e23eca49

Also not working.
    if (isSingleTransactionView && shouldDeleteTransactionThread && !shouldDeleteIOUReport) {
        // ...
        return;
    }

    if (shouldDeleteIOUReport) {
        Navigation.goBack();
        Navigation.navigate(ROUTES.getReportRoute(iouReport.chatReportID), 'UP');
    }

https://github.com/Expensify/App/assets/134623449/2d5d79c5-6720-4723-a331-874b969015aa

They have made so many changes in the linkTo method, it no longer does what it is supposed to,https://github.com/Expensify/App/blob/f3af8ce1ccecc013670798fe2e8118c7f0c1a525/src/libs/Navigation/linkTo.js#L65-L66

Actually there is also this condition.
https://github.com/Expensify/App/blob/f3af8ce1ccecc013670798fe2e8118c7f0c1a525/src/libs/Navigation/linkTo.js#L74C1-L75C64
But still it does not work properly. We should create another bug to verify and fix that. Can you please do that, @ShogunFire ? Thanks
Anyway back to our original issue. If I'm not mistaken, swapping screens using Navigation.navigate(...,UP) doesn't help us much, because it creates another problem. There will be two identical DM chat screens with Person B in a row in the navigation stack.

Yes then I don't see any alternative to two goBack

Can you try after pulling the main now?

@shubham1206agra Sorry, what exactly we should try again?
Without any change to the origin/main there is still displayed NotFound page or eventually there is 2 same screens in the row in the navigation stack.
https://github.com/Expensify/App/assets/134623449/afa57a6e-1d3b-4bd5-a083-ef4ab54fc8fd
https://github.com/Expensify/App/assets/134623449/8ea13a01-fc8b-4936-9c45-3bed2033df45

I don't see any change in behaviour of Navigation.navigate(<path>, 'UP'); in comparison to Navigation.navigate(<path>);

Proposal https://github.com/Expensify/App/issues/24490#issuecomment-1676159350 is still valid. All edge cases are OK.

chill melvin - we didn't actually make this external until 4 days ago

@tymatein I tried your solution again; it's working fine on Android, but it's not navigating me anywhere on the Web, so it's showing me the not found page.
https://github.com/Expensify/App/assets/25520267/3d9e18d6-3530-4427-99b1-1c4ed3cbb7e2

@mollfpr Are you sure that you changed your code correctly? It is working for me also in the web. Be careful especially with this condition:
if (isSingleTransactionView && shouldDeleteTransactionThread && !shouldDeleteIOUReport) {

@mollfpr Yes, I did it yesterday for commit c029dc509d03fd13ece058ba89ab25c4318a9050
Should I record video with fresh main?

Honestly I think my goBack(fallBackRoute) method should work and every other method is a workaround, I have asked on slack https://expensify.slack.com/archives/C01GTK53T8Q/p1693231187280079?thread_ts=1693168254.867579&cid=C01GTK53T8Q if someone can look at it. Maybe the issue with @tymatein method is that I am not sure if calling isActiveRoute just after goBack always work, maybe it takes some time to update the active route

@mollfpr The error you found on the web looks strange. There are two money requests in the IOU, so it should only navigate back one screen. In the code, the first function called is Navigation.goBack, so it should work. What browser/operating system are you using?

Need more time to review the proposals. I'll give an update tomorrow.

Can anyone test the repro of this issue after pulling the latest main?
It looks like this is a navigation-related issue.
Thanks

@mollfpr following the slack discussion I opened, they are improving the goBack method so that the fallback route works for report. They are doing that here: https://github.com/Expensify/App/pull/26283 Maybe we can wait for that PR to be merged and see if my proposal works after that.

It seems the proposal from @ShogunFire is used in the PR https://github.com/Expensify/App/pull/26498 for navigation 🥲
@adelekennedy We should hold this in favor of the above PR.

@mollfpr Yes I agree we should hold, it's almost my proposal but not exactly, I think there will still be a problem because with that PR we only do one goBack (we need 2 when we delete the last transaction)

on hold still

still holding

@mollfpr is this still on hold?

@adelekennedy Yes!

deprioritizing for the hold

I believe this is still on hold!

@mollfpr it looks like the connected PR was deployed a bit ago - are we still on hold here?

I can't reproduce the issue on 1.4.14-0 Develop.

hmm - I also can't reproduce @lanitochka17 will you see if you're still running into this?


[BUG] Return 404 status code when route isn't set

Description
Currently requesting a unknown route will result in getting an empty response with a 200 status code.
Expected Behavior
We should probably return a 404 status code automatically when this happens.

This should not happen. I am surprised that we don't have a test for this.


Unit Test

📝 Description
Every good project has a good testing. It will be better if we can implement this early on our development.
📋 Todo:

[x] Add test folder for each .test.ts files
[x] Unit test with Jest
[x] Add CI (Continuous Integration) preferably Circle CI

🔍 Additional Info
If the function relies on other library we need to make a mock for that library.

This issue is already done. Locking this conversation.

Close #49


Moved to version 1.8.2

PR Details
Description
Increase version number in pom.xml to consider the latest changes.
Types of changes

[ ] Docs change / refactoring / dependency upgrade
[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] I have read the CONTRIBUTING document
[x] My code follows the code style of this project
[x] My change requires a change to the documentation
[ ] I have updated the documentation accordingly (README.md for each UI component)
[ ] I have added tests to cover my changes (at least 1 spec for each UI component with the same coverage as the master branch)
[ ] All new and existing tests passed
[ ] A new branch needs to be created from master to evolve previous versions
[x] Increase version in pom.xml following Semantic Versioning
[ ] All UI components must be added into the showcase (at least 1 component with the default settings)
[ ] Add the issue into the right project with the proper status (In progress)

No need to do this version upgrade as it will be considered in next PR with content (#27)


Error when compiling with Webpack 5

Hello,
I am getting this error when compiling my webapp:
Failed to parse source map: 'webpack:///dist/react-responsive.js' URL is not supported

Webpack config can be found here: https://github.com/FreemapSlovakia/freemap-v3-react/blob/6fe487cd8de87ec47a089f7d813c18c66153eae8/webpack.config.js

@zdila Can you try with the latest 9.x beta?

I tested with 9.0.0-beta.4 (installed by npm i react-responsive). What version should I specify on npm i?

@zdila I think the issue is just that the file is missing - should be a quick fix.

@zdila I'm also using webpack 5 with react-responsive in a few projects and haven't had any issues with it loading the sourcemap - the sourcemap comment and files in the repo look fine. I think something is up with the way your sourcemap loading is happening in your webpack config - as far as I know you shouldn't need to manually use source-map-loader.

I don't recall why I added this, but removing it helped :-). Thank you for pointing out!

@yocontra, when does the beta becomes stable?

@ViktorSoroka07 Soon - just been slow playing it because it hasn't received enough installs for me to feel comfortable that it has been tested by enough people.


Theoretical concepts - Report

Theoretical concepts.

[x] Minería de datos
[x] Aprendizaje supervisado
[x] Aprendizaje no supervisado
[x] Aprendizaje semisupervisado

First approach has been written, more will come in the following sprints


Add badges to README

Just to be able to quickly get at the documentation ;)

Hey! Sorry, I missed the notification for this somehow.
Good idea!


Add $popup modifier validation

There can only be one domain in this modifier, maybe we should add  error highlighting
Screenshot:

Moved the request to the appropriate issue


why invoke() take so much time? use pos_training_quantized=True to convert pb into a tflite model.

MY QUESTION
Training a model with FLOAT-32 and converts into a saved model. Then I use 'pos_training_quantized=True ' to generate .tflite model (int8).
according to official website: https://www.tensorflow.org/lite/performance/post_training_quantization
At inference, weights are converted from 8-bits of precision to floating-point and computed using floating point kernels. This conversion is done once and cached to reduce latency.

However, at inference, tflite model costs more than pb, and almost costs in invoke() op. now ,the speed is much slow than saved model. Why this happens, the latency is not reduced like the official description.
Can anyone explain? or pointing out my coding faults and any procedure faults about using tflite to inference.
Appreciate much!!
System information

Linux Ubuntu 16.04
TensorFlow installed from: source
TensorFlow version: 1.12
GPU: Tesla P4 (server)
CPU: Intel® Core™ i5-5300U CPU @ 2.30GHz × 4 (local)

Provide the text output from tflite_convert
from __future__ import absolute_import
from __future__ import division

import tensorflow as tf
import numpy as np
import os
import cv2
import time
from scipy import misc

# convert saved model to tflite
saved_model_path = '/home/tom/PycharmProjects/transwarp/wxn/tmp/1'
tflite_model_path = '/home/tom/PycharmProjects/transwarp/wxn/post_quantized_model.tflite'
images_root_path = '/home/tom/PycharmProjects/transwarp/wxn/combine_train'
val_file = '/home/tom/PycharmProjects/transwarp/wxn/combine_train/val1.txt'
tfrecord_dir = '/home/tom/PycharmProjects/transwarp/wxn/combine_train/combine_train_tfrecord'

def post_training_convert(tag_set, signature_key, tflite_model_path):
    converter = tf.contrib.lite.TocoConverter.from_saved_model(saved_model_path, tag_set = tag_set, signature_key = signature_key)
    converter.post_training_quantize = True
    tflite_post_quantized_model = converter.convert()
    open(tflite_model_path, 'wb').write(tflite_post_quantized_model)
    print('tflite model transformation done!')
    print('format: ', converter.inference_type, 'post_training_quantize: ', str(converter.post_training_quantize))

post_training_convert(['SERVING'],'predict_signature',tflite_model_path)

def image_preprocess(image, resized_height, resized_width):
    image = tf.image.resize_images(image, (resized_height, resized_width))
    image = tf.image.per_image_standardization(image)
    image = tf.cast(image, tf.float32)
    image = tf.expand_dims(image, axis = 0)
    return image

def main():
    """
    use ./lite model to predict
    """
    with tf.Graph().as_default() as g:
        with tf.Session() as sess:
            interpreter = tf.contrib.lite.Interpreter(model_path = tflite_model_path)
            interpreter.allocate_tensors()

            input_details = interpreter.get_input_details()
            output_details = interpreter.get_output_details()
            print('intput_details: ', input_details)
            print('output_details: ', output_details)

            input_shape = input_details[0]['shape']
            print('input_shape: ', input_shape)
            val_file_list = open(val_file, 'r').readlines()

            count = 0
            time_count = []
            f = open('/home/tom/PycharmProjects/transwarp/wxn/result.txt', 'a')

            for file in val_file_list:
                file_name, file_label = file.strip('\n').split()
                image = cv2.imread(os.path.join(images_root_path, file_name))
                if image is None:
                    print('Warning, fail to read image: ', file_name)
                    continue

                image = image_preprocess(image, 224, 224)

                image_array = sess.run(image)
                start_time = time.time()
                start_time1 = time.time()
                interpreter.set_tensor(input_details[0]['index'], image_array)
                print('set time: ', time.time()-start_time1)
                start_time2 = time.time()
                interpreter.invoke()
                print('invoke time: ', time.time()-start_time2)
                start_time3 = time.time()
                output_data = interpreter.get_tensor(output_details[0]['index'])
                print('out time: ', time.time()-start_time3)
                print(output_data)
                end_time = time.time()
                duration = end_time - start_time
                count += 1
                time_count.append(duration)
                f.write(file_name + ' ' +
                        file_label +' ' +
                        str(output_data[0][0])+' ' +
                        str(round(duration, 4)) + '\n')
            print('total processing images: ', count)
            print('average processing time: ', np.mean(time_count))
    f.close()
main()

Also, please include a link to a GraphDef or the model if possible.
Any other info / logs
inference 25 images, just list some results.
set time: cost of 'interpreter.set_tensor() '
invoke time: cost of 'interpreter.invoke()'
out_time : cost of 'interpreter.get_tensor()'

#In GPU, the inference time
set time:  0.000224828720093
invoke time:  7.69320392609
out time:  2.00271606445e-05
[[4]]
set time:  0.000519990921021
invoke time:  7.68318390846
out time:  2.88486480713e-05
[[4]]
set time:  0.000233888626099
invoke time:  7.56485295296
out time:  1.90734863281e-05
[[4]]
set time:  0.000152111053467
invoke time:  7.75410199165
out time:  2.71797180176e-05
[[4]]
total processing images:  25
average processing time:  7.540134401321411

#In CPU, the inference time
set time:  7.772445678710938e-05
invoke time:  7.645012378692627
out time:  1.52587890625e-05
[[4]]
set time:  9.489059448242188e-05
invoke time:  7.672791957855225
out time:  1.9788742065429688e-05
[[4]]
set time:  0.00010085105895996094
invoke time:  7.442874908447266
out time:  1.52587890625e-05
[[4]]
set time:  7.891654968261719e-05
invoke time:  7.478809833526611
out time:  1.7881393432617188e-05
[[4]]
total processing images:  25
average processing time:  7.6469355392456055
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.

Hi @zhuohuiyuan have you resolved this issue?
@suharshs  I am facing the same issue and I understand your point. So I went ahead and tested the pb and keras models on the same cpu as well- turns out tflite model (optimized) still takes double the time taken by the h5 model without any optimization. The invoke function actually in itself takes up that much time. What am I doing wrong? I don't think I can call invoke once, can I? Is there any other way I can optimize inference time?

@tonmoyborah @suharshs  I have the same problem, invoke() takes up so much time that any time eventually gained by converting to tflite is eaten up (all comparisons done on CPU). Is there a solution to this?

Right now post training quantization is only optimized for ARM CPU, not x86. So you will see speed up on mobile but not desktop just yet. We are working on x86 support.

@suharshs Thanks for clarifying. I understand that we can see a significant speed up only in ARM CPUs. But my concern is that I am doing something wrong - since, as reported on tflite docs, here all these complex models take 10 or 100 ms for prediction. This is very strange since one call to invoke() function takes around 800ms for me on any desktop cpu or gpu thus making it a bottleneck for any subsequent task. I must be doing something really wrong. This is what I am doing for a siamese 2 input network:
tflite_model_path = '/path/to/model'
logger.debug('starting...')
interpreter = Interpreter(model_path=str(tflite_model_path))
logger.debug('interpreter initialised, allocating tensors...')
interpreter.allocate_tensors()
logger.debug('tensors allocated')
input_index1 = interpreter.get_input_details()[0]["index"]
input_index2 = interpreter.get_input_details()[1]["index"]
output_index = interpreter.get_output_details()[0]["index"
img2 = cv2.imread('/path/to/image')
img2 = cv2.resize(img2, (128, 128))
img2 = tf.cast(img2, tf.float32)   # /255.0
logger.debug('image2 ops done...')

img3 = cv2.imread('/path/to/image')
img3 = cv2.resize(img3, (128, 128))
img3 = tf.cast(img3, tf.float32)   # /255.0
logger.debug('3 ops done...')

start_time = time.time()
interpreter.set_tensor(input_index1, img2)
interpreter.set_tensor(input_index2, img3)
logger.debug('tensors set, starting invoke...')
interpreter.invoke()
logger.debug('time taken for invoke {}'.format(time.time() - start_time))
logger.debug('invoked')
predictions = interpreter.get_tensor(output_index)
logger.info(predictions)
logger.debug('time taken {}'.format(time.time() - start_time))

Right now post training quantization is only optimized for ARM CPU, not x86. So you will see speed up on mobile but not desktop just yet. We are working on x86 support.

So can you estimate when support for x86 comes out?
I'm currently working on a model on my desktop computer and I see longer inference time with quantized TfLite model rather than normal TfLite model.

Is there any update regarding this issue?

@suharshs Any update on this issue?

Hello! Asking also if there are any updates on this issue?

Facing the same issue. Any updates?


Update Converter.php

Questions
Answers

Description?
In the current version, if the attribute is set to a color, the texture will not be passed at all (this creates problems on the front-end). If we separate these conditions, both information will be available from template.

Type?
bug fix

BC breaks?
no

Deprecations?
no

Fixed ticket?

How to test?
facetes object will have both color and texture now

This change is

Hi and thanks for your contribution. Could you please create an issue on https://github.com/PrestaShop/PrestaShop?

Hi @Hirashi7 ,
Since we had no news from you for more than 30 days, I'll close this pull request. Feel free to reopen or open another one if you think it's still relevant.
Thanks!


check streamer is live

tiktokChatConnection.connect() shows isConnected: true although the streamer is not streaming anymore. If I go via the url https://www.tiktok.com/@user/live there is a black screen and a text with "LIVE has ended 2.5K viewers".
How to check if the streamer goes live?

thank you. will use that workaround :)

In the latest version, the connect() function raises an error if the room is in "LIVE has ended" state.
Furthermore, you can use the getRoomInfo() function to get the room info and check the status (as described above).


Issue Fixed #7091

Issue Reference

#7091
Description

Inline SKU, Name in bundle Products Item
How To Test This?

Go to Admin Panel -> Catalog -> Create a Bundle Product.
In Bundle Product -> Add options -> Add Product.
Documentation

[ ] My pull request requires an update on the documentation repository.

@JunaidJaved248
Thanks for your contribution.


== and != do not work with cayley_dickson and floating_point

For instance z == eve::one(eve::as(real(z))) does not compile where z is complex
z == to_complex(eve::one(eve::as(real(z)))) does compile however
also z == eve::one(eve::as(z)) does not compile where z is complex

This is gonna be fixed by feat/new-eve-callable

Fixed in #50


GTK theme not used when application is run from GNOME shell activites

System info:
Gnome3
nixos-version: 16.03.git.e57024fM (Emu)
Steps to reproduce:

Install a GTK theme not included with gnome by default. For example "theme-vertex"
Choose the theme in gnome-tweak-tool.
2a. I had to reboot for the theme change to be visible. I also think this is a bug.
Open gedit from activities->all applications. Observe that vertex theme is not used.
Open gedit from terminal. Observe that vertex theme is used

Try adding theme-vertex to services.xserver.desktopManager.gnome3.sessionPath. Does it resolve the third issue?

@simonvandel

Ahh, so that's why my nautilus uses adwaita. Maybe we can create a module to set themes that will then be picked up by the desktop environments? @lethalman

@jgillich it should suffice to just put the theme in systemPackages

I do have my theme in systemPackages, but I didn't yet try adding it to sessionPath.

Note that i am now using the arc-gtk-theme, but the issue reported originally still applies.
Adding arc-gtk-theme to services.xserver.desktopManager.gnome3.sessionPath does not solve the issue. Any other ideas?

If think the cause of the problem might be that Gnome Shell uses DBus activation if specified in the desktop files. So the processes get launched by the DBus daemon and inherit its environment, which unfortunately does not contain some required variables, since it is launched pretty early in the xsession script. I think the proper way to change the DBus environment is to use the UpdateActivationEnvironment method, like
gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "{'FOO': '1', 'BAR': '2'}"

I tried injecting some variables this way and managed to get Nautilus to use my theme. The question is, which variables are necessary to get the proper behaviour? The simplest solution would be to dump the whole env to DBus right before launching gnome-session. This way, even user-defined variables from .xprofile would be made available, but I'm not sure if other side effects might occur.

@cruegge Applying #14741 locally fixes this issue, thanks!

Since the commit is already merged to master, this issue can be closed, right?