Task fetcher implementation

What changed?

Add common task fetcher implementation
Fixed several issues in existing replication task fetcher impl

Why?

For supporting cross-cluster operations

How did you test it?

Unit test

Potential risks

N/A, new components not used anywhere

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 199665d7-ec85-4be9-9745-44e972220f5d

118 of 152 (77.63%)  changed or added relevant lines in 2 files are covered.
749 unchanged lines in 22 files lost coverage.
Overall coverage decreased (-0.09%) to 60.197%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

service/history/replication/task_fetcher.go
1
3
33.33%

service/history/task/fetcher.go
117
149
78.52%

Files with Coverage Reduction
New Missed Lines
%

client/history/client.go
2
44.35%

client/history/metricClient.go
2
49.43%

common/persistence/statsComputer.go
2
96.43%

service/history/execution/mutable_state_builder.go
2
69.87%

service/history/handler.go
2
46.67%

service/matching/taskListManager.go
2
74.72%

service/history/task/transfer_active_task_executor.go
4
68.95%

common/archiver/historyIterator.go
5
87.31%

common/task/fifoTaskScheduler.go
5
84.54%

service/history/historyEngine.go
9
71.16%

Totals

Change from base Build d82f887b-6c77-4d06-8ceb-39463806c811:
-0.09%

Covered Lines:
89061

Relevant Lines:
147949

💛  - Coveralls


inputDate does not change datepicker's date value when format is not default.

Description
app-datepicker does not get update when paper input's value field changes.
Expected outcome
date in app-datepicker gets updated normally
Actual outcome
Nothing happens
<paper-input id="input" no-label-float value="{{inputDate::input}}" on-click="_toggleCalendar"></paper-input>
<app-datepicker id="datepicker" on-click="_getDate" theme="dark-theme" format="m/d/yyyy" max-date="[[maxDate]]" disable-days="{{disableDays}}" input-date="[[inputDate]]" date="{{date}}" view="vertical" auto-update-date></app-datepicker>

format="mm/dd/yyyy" does not work either
Browsers Affected

[x] Chrome/ Opera
[ ] Firefox
[ ] Safari 10+
[ ] Safari 9
[ ] Safari 8
[ ] Safari 7
[ ] Edge 12+
[ ] IE 11

It looks like this was originally by design? Is this something that you are interested improving?

@madiganz Can you provide me your inputs and expected output for your case?

My input would be a date = "02/25/2018" and I expect it to show this date on the map (February 25th, 2018). My format is "mm/dd/yyyy".
Did you need anything else? Not sure exactly what you are asking for.

@madiganz Thanks. That is helpful. Will look into that shortly.

@madiganz Had looked into this issue you encountered. Due to the limitation of the platform when comes to dealing with Date as you have already stated in the previous comments, app-datepicker only accepts dates in the format of either yyyy/MM/dd or yyyy-MM-dd from the property inputDate and the property format is only meant for formatting the selected date output by the property date, e.g.
<app-datepicker
  format="m/d/yyyy"
  input-date="[[inputDate]]"
  date="{{selectedDate}}"></app-datepicker>

...
const datepicker = document.querySelector('app-datepicker');

datepicker.inputDate = '2018-03-03';
datepicker.enforceDateChange(); // Imperatively update date.

console.log(datepicker.date); // 3/03/2018
...

Hope this clarifies the problem you're facing.

Is there any reason why it can't use the format property to help with inputDate? Otherwise it is very limiting.

@madiganz As I mentioned, due to limitation of how each browser interpret the date string, it can be unpredictable to cater for each type of date string in various format.
However, supporting multiple formats can be done but that a lot of efforts are needed in order to pull that off. Developers have to convert the date string in their supported locales to the standard format of yyyy-MM-dd so that app-datepicker will be able to understand.

Closing this in favor of v4. Highly recommend using v4 even if you are using polymer.
Thank you for the support.


Declaration Files For Typescript

Could you please provide a declaration file for typescript?

I don't use typescript myself, but happy to accept a PR from somebody who does, especially if it includes some sort of verification in case of future changes.

ya please include typescript def file

+1

For anybody who finds this package looking for TypeScript support, as I did, you might like this package which is implemented in TypeScript: https://github.com/tomekkleszcz/redux-saga-promise-actions
It's quite similar, although there are one or two differences. The dispatch() effect in this package is a nice addition which is missing from the other package.

I know this is more or less advertising, but there is another package I created, that tries to provide a TypeScript-first solution of this project. For more informations, please take a look at https://github.com/teroneko/redux-saga-promise.


I would like to compare to constants, not strings

		switch keypress := msg.String(); keypress {
		case "ctrl+c":

This just feels a little dirty. I see there's constants in key.go, can we export them?

The key example at the bottom shows how you can set and check keybindings.
You can use key.Matches(msg, keybind) for your cases.
Check the bottom of the README

Hi! There actually are constants for keys.
Here's an example illustrating how you could work with them.
func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.KeyMsg:
        switch msg.Type {
        case tea.KeyCtrlC:
            return m, tea.Quit
        case tea KeyRunes:
            if string(msg.Runes) == "q" {
                return m, tea.Quit
            }
        }
    }
}


Provisioning hash logging feature

Add a feature to the OpenWeave Device Layer to compute and log a hash of a device's credentials at boot time.  The hash computation should follow the scheme for provisioning hashes outlined in the Weave Factory Provisioning Specification.
The log output format should be designed to be easily parsed by code on a manufacturing line station.  The feature should be implemented as a compile time option can be enable by device partners on an as-needed basis.

Code to support this has been committed to openweave-core:master.


Consider aead::Aead as an alternative to (or building block for) Cipher

The aead crate provides abstractions for AEAD algorithms (including no_std-friendly ones) with several implementations including adapters for the AEAD algorithms in ring.
Aside from the rekey method, it seems like it's close to a drop-in replacement for the existing Cipher trait.

These types should hardly be touched except for the rare cases where people need to implement their own providers of crypto algorithms not provided by snow itself, so I'm not sure if I can currently justify the extra dependency in my head, especially if only Cipher gets this treatment, and we don't also start relying on RngCore to replace Random, etc.

Currently, snow already depends on crates which depend on aead, so this wouldn't really change the amount of crates pulled in.

There is one problem with using the aead crate's traits for Snow's purposes right now: they aren't object safe, but easily could be with some small changes.

that specific issue with aead is fixed now.


implement f32 data type

Implementation of f32 for issue #623

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

689 of 727 (94.77%)  changed or added relevant lines in 13 files are covered.
60 unchanged lines in 6 files lost coverage.
Overall coverage decreased (-0.2%) to 98.75%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

core/src/data/key.rs
4
5
80.0%

core/src/data/value/mod.rs
146
147
99.32%

core/src/data/value/literal.rs
42
45
93.33%

core/src/data/interval/primitive.rs
7
18
38.89%

core/src/data/value/binary_op/decimal.rs
35
46
76.09%

core/src/data/value/binary_op/f32.rs
384
395
97.22%

Files with Coverage Reduction
New Missed Lines
%

core/src/ast/mod.rs
1
99.8%

core/src/data/value/mod.rs
1
99.17%

core/src/executor/evaluate/function.rs
6
97.63%

core/src/executor/evaluate/mod.rs
7
97.99%

core/src/executor/execute.rs
19
92.02%

core/src/executor/aggregate/mod.rs
26
86.53%

Totals

Change from base Build<PHONE_NUMBER>:
-0.2%

Covered Lines:
42654

Relevant Lines:
43194

💛  - Coveralls

I can't wait to see another data type being added to our project :)
Thanks in advance

@panarch , can i add tests not related to the f32 type but to other types?

Sure! but it would be good to make a separate PR, then I can do quick review and merge.

Ok, I think so


Timestamps need timezones

What were field instruments set to? I assume EDT?
@kaylamathes
@atkinsjeff
@lisahaber
Thanks.

EDT!

So if this is the Gough lab standard, OK, but be aware that networks like FLUXNET, Ameriflux, etc., strongly recommend always using standard time. For off-season lab measurements, or November sampling trips, are instruments still EDT, or EST? Anyway we'll just want to be careful about this.

Good question I'd rather use EST. I will double check.
Jeff Atkins, Ph.D
Department of Biology
Virginia Commonwealth University
On Thu, Jul 9, 2020, 19:58 Ben Bond-Lamberty<EMAIL_ADDRESS>wrote:

So if this is the Gough lab standard, OK, but be aware that networks like
FLUXNET, Ameriflux, etc., strongly recommend always using standard time.
For off-season lab measurements, or November sampling trips, are
instruments still EDT, or EST? Anyway we'll just want to be careful about
this.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/FoRTExperiment/fortedata/issues/24#issuecomment-656406868,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB7XVVIJSKCBLOBPPOG7VKTR2ZKQVANCNFSM4LQ4HEBA
.

adjusted all calls to ....., tz = "America/Detroit")


Adjoint of Matrix

Enter calculator name -
Adjoint of Matrix
Describe calculator functionality -
Take size of matrix as input from user then take matrix of the specified size as input and display the adjoint of the matrix.
Note - Max. size of matrix = 6x6
Under which category you wish to place it -
[] Computer Science
[x] Mathematics
[] Physics
[] Chemistry
[] Biology
[] Finance
[] Scientific
[] Health
[] Sports
[] Let project owner decide
[] Suggest a new category - (Answer here)

Hey @SarthakKeshari kindly assign this issue to me.

Hey @uttkarsh1m,
Assigned.
You may contribute your code under the folder path -
calc_for_everything\calculators\src\mathematical\matrix_adjoint
Issue completion deadline - 4th Oct 8:00:00 am IST
NOTE - In case the issue completion deadline is not met, the issue will be assigned to a new participant

can you please assign this to me

I regret to inform, issue can't be assigned as each assigned issue is marked with a deadline. In case the previous participant fails to raise a PR before the deadline, only then the issue can be assigned to a new participant.
For now, kindly look into any open issues or you may even create one. 🤩
Happy Contributing 🎉


Sync tls mqttv5 support.

please redo this PR according to https://github.com/nanomq/NanoNNG/pull/74/files


Initial REST connector for IGC

This is the library and related POJOs for a general connector to IGC via its REST API -- focused initially on read operations (ie. retrieve, search, paging, etc).

Re-opening now that all files (except .iml) have Apache v2.0 license header.

Would also really appreciate if someone can also review the pom.xml to ensure that this is standalone-able as an artifact?


Android - Chat - In offline mode, protected PDF file shows "Failed to load PDF file" messages.

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:

Launch the App
Login with any account
Navigate to any conversation
Send 2 password protected PDF
Tap on it
Tap "Enter the password" > enter password
Close protected PDF file
Dissable the internet connection
Tap on the protected PDF submitted file

Expected Result:
In offline mode, protected PDF file should NOT show the"Failed to load PDF file" message.
Actual Result:
In offline mode, protected PDF file shows Failed to load PDF file" messages.
Workaround:
Unknown
Platforms:

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

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

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
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://user-images.githubusercontent.com/93399543/228636603-89c2c555-9723-47fc-b698-10908a0f2854.mp4

Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

Triggered auto assignment to @trjExpensify (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

@trjExpensify Whoops! This issue is 2 days overdue. Let's get this updated quick!

@trjExpensify Eep! 4 days overdue now. Issues have feelings too...

@trjExpensify Still overdue 6 days?! Let's take care of this!

Hey Melv, I'm back!
Didn't get an answer on this. @thomas-coldwell @Beamanator @marcaaron @aimane-chnaif what do you guys think? I believe this is held on us figuring out image caching first and then expanding that solution to other file types.

and since this is a protected PDF, mayyyybe we don't even want to cache such previews?

It would show some kind of "locked" preview though wouldn't it? Instead of an error message or a grey screen etc?

@trjExpensify this issue was created 2 weeks ago. Are we close to a solution? Let's make sure we're treating this as a top priority. Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

That being said, I do think we still need to wait on the full image caching solution b/c I think it will help with a lot of related caching discussions

Ah yeah and on this, I agree. Adding a hold for caching.

Held on image caching to come first, which is held on the server migration project.

^^ same as above melv.

Same. Held on image caching to come first, which is held on the server migration project.

Same. Held on image caching to come first, which is held on the server migration project.

Same. Held on image caching to come first, which is held on the server migration project.

Making some progress on image caching. We've cleared the CORS dependency.

Super close. PR merged, so after the deploy cycle we should be able to come back here!

Image caching PR was deployed and reverted. Awaiting this now before re-implementing: https://github.com/Expensify/App/issues/32703

Headers PR merged this morning. 🤞 all goes well and we can move on with the steps in the plan to implement better caching. 👍

Going to add this to #vip-vsb to follow the improved image caching.

Mmm good question, I think it shouldn't be too hard to get this working with the recent caching changes, and I want to note that we have some kinda similar issues like these:

https://github.com/Expensify/App/issues/35502
https://github.com/Expensify/App/issues/13826

What's to note about them specifically. Is a PR for one of them fixing this problem or something?

oh ya that's what i meant, it seemed like they're related to "offline PDF / attachment viewing" so it's possible they're overlapping & this could git fixed elsewhere

Alright cool, there's a PR for it. Let's ask there: https://github.com/Expensify/App/pull/39290#issuecomment-2092750149

Bumped for a response on that in the PR, looks like it was missed.

@trjExpensify Check on this issue in https://github.com/Expensify/App/pull/39290 and it's still reproduced. I think it has a different root cause than the issue we are tackling.

What do you mean, sorry? https://github.com/Expensify/App/pull/39290 is still reproducible?

@trjExpensify This issue is not fixed by the PR https://github.com/Expensify/App/pull/39290.

Okay, so we need someone to work on a solution for this then.

Posted on slack to attract proposals. This quite an old issue so it's not easy to be found by contributors.
cc @trjExpensify

I'm not able to repro this, any specific steps need to follow?

Waiting on proposals

Launch the App
Login with any account
Navigate to any conversation
Send 2 password protected PDF
Tap on it
Tap "Enter the password" > enter password
Close protected PDF file
Dissable the internet connection
Tap on the protected PDF submitted file

Interesting! @eh2077 are you still able to reproduce on Android, and if so, can you share the steps with @b4s36t4?

I'll check this tmr

@trjExpensify I can't reproduce it on the emulator.
@mollfpr Are you still able to reproduce it?

Issue not reproducible during KI retests. (First week)

Sounds promising. @mollfpr can retry and then we can close if he can't either. I don't have an Android device.

Issue not reproducible during KI retests. (Second week)

Not overdue, issue is not reproducible

@trjExpensify I managed to test on an Android device and it's not reproducible
https://github.com/Expensify/App/assets/117511920/5dd6781f-b92f-444f-a392-1f71b74c759f

So, I think we can close this. Do you agree?

Yep, let's close. Sounds good!


Typeahead 0.10.2 Breaks FastClick

I'm using typeahead.bundle.js via Bower. I had been using 0.10.1 happily for a few weeks along-side FastClick. However, upon upgrading to 0.10.2, FastClick no longer allows suggestions to be tapped on iOS.
I compared diffs between 0.10.1 and 0.10.2, but could not find the cuprit. Adding class="needsclick" in the template for the suggestion allows the non-bold region of the suggestion to be tapped. For now, I'm locking my version at 0.10.1 until there is workaround / resolution.

fastclick compatibility should be fixed in v0.11.

Having problems with 0.11.1 and FastClick 1.0.6.

Also having problems with Typeahead version 0.11.1 and FastClick 1.0.6. (Even with adding the necessary 'needsclick' class.)

Same, having issues w/ 0.11.1 and FastClick 1.0.6

Is anything done for the latest version 0.11.1. This non-support for touch devices still persists.


Deadline: checking existing frames fails when there is number in file name

Changelog Description
Previous implementation of validator failed on files with any other number in rendered file names.
Used regular expression pattern now handles numbers in the file names  (eg "Main_beauty.v001.1001.exr", "Main_beauty_v001.1001.exr", "Main_beauty.1001.1001.exr") but not numbers behind frames (eg. "Main_beauty.1001.v001.exr")
Additional Info
Currently it doesn't handle names like "Main_beauty.1001.v001.exr" should it?
Pattern is internal to validator, should it be exposed to Settings or is it too dangerous?
Testing notes:

create render instance with some number in it name (you could use Variant for that)
publish this through Deadline (or Unreal)

Previous implementation of validator failed on files with any other number in rendered file names.

Just tested latest develop with renders from Maya 2023 with this naming convention Main001.0001.exr, which published successfully.
Anyway of replicating the bug from Maya?

Just tested latest develop with renders from Maya 2023 with this naming convention Main001.0001.exr, which published successfully.
Anyway of replicating the bug from Maya?

Did you render a single frame or multiple, clique will sometimes identify the right sequence due to finding multiple frames for it. So try it out with a single frame to be sure.

Changed logic of validator, it doesn't make sense to check (missing) sequence frames for single frame. (this should handle thumbnails and reviews)
Updated tests accordingly.

Did you render a single frame or multiple, clique will sometimes identify the right sequence due to finding multiple frames for it. So try it out with a single frame to be sure.

I still get a successful publish in develop.
@kalisp any further testing notes on how to do step 1?

Did you render a single frame or multiple, clique will sometimes identify the right sequence due to finding multiple frames for it. So try it out with a single frame to be sure.

I still get a successful publish in develop.
@kalisp any further testing notes on how to do step 1?

With develop Publish job on Deadline should fail for subsets like these:

With develop Publish job on Deadline should fail for subsets like these:

Actually it will only for imagesequence family which I am not really sure how to create. I enhanced new plugin to check also "render" family, which is more sane, imho.

Basically if you succefully render out any shot from maya on Deadline and it got published to DB you will see Image Sequence asset in Loader aka OP>Load
So any render output in DB will do for testing...speaking now of maya host

Sorry, I'm not sure how to create such a subset through the UI. Either Maya or Nuke.

Oh, I just put .1001 into Variant field in Nuke's New Publisher.

Oh, I just put .1001 into Variant field in Nuke's New Publisher. (But if you mean how to create imagesequence family, IDK, I manipulated plugin (on develop) to trigger even on render, that I know how to do ;).)

When trying to publish through Nuke, I get this error:
Traceback (most recent call last):
  File "C:\Users\tokejepsen\OpenPype\.venv\lib\site-packages\pyblish\plugin.py", line 522, in __explicit_process
    runner(*args)
  File "C:\Users\tokejepsen\OpenPype\openpype\plugins\publish\collect_scene_loaded_versions.py", line 38, in process
  File "C:\Users\tokejepsen\OpenPype\openpype\hosts\nuke\api\pipeline.py", line 508, in ls
    container = parse_container(n)
  File "C:\Users\tokejepsen\OpenPype\openpype\hosts\nuke\api\pipeline.py", line 451, in parse_container
    data = read_avalon_data(node)
  File "C:\Users\tokejepsen\OpenPype\openpype\hosts\nuke\api\lib.py", line 636, in read_avalon_data
    knob_type = nuke.knob(knob.fullyQualifiedName(), type=True)
RuntimeError: Nothing is named "%s"

When trying to publish through Nuke, I get this error:

I don't see how that error could have been caused by this PR.

Testing in maya 2023 it seems I cant even create Render Instance containg number and dot.
when trying to create variant RenderMain.1001 I got errors straight away...

Which is probably ok as its more limitation than error/bug.
I can create render variant RenderMain1001 so will be testing on Deadline with this one.

I think that dot (.) is not allowed character in subset name? I'm surprised that it actually allowed to hit Create.


Use a hand-written ErrorCode Debug impl, not derived

The derive(Debug) impl will generate a huge amount of code for all of the unused variants. This bit us today :)
Ideally we only use ufmt, but this will let us use .unwrap without inexplicably exploding binary size.

Musings outside the scope of this PR:
Personally, I think ufmt should do something to make it easy to avoid core's unwrap implementations, for exactly this reason. I'm not sure what that something is, perhaps an extension trait for Result and Option?

Musings outside the scope of this PR:
Personally, I think ufmt should do something to make it easy to avoid core's unwrap implementations, for exactly this reason. I'm not sure what that something is, perhaps an extension trait for Result and Option?

I think extension traits could work, though IMO we should have a feature flag disable the Debug impls so they can't be referenced accidentally.
Now the real question is what you name the methods. I don't think my favorite option of μunwrap and μexpect would be popular 😁

Musings outside the scope of this PR:
Personally, I think ufmt should do something to make it easy to avoid core's unwrap implementations, for exactly this reason. I'm not sure what that something is, perhaps an extension trait for Result and Option?

I think extension traits could work, though IMO we should have a feature flag disable the Debug impls so they can't be referenced accidentally.

That seems reasonable, but I'm not sure it's worth the effort, given that the entire core library is a minefield in this respect.

Now the real question is what you name the methods. I don't think my favorite option of μunwrap and μexpect would be popular 😁

I want no part of that discussion.
(Why isn't compose key support more common?)

bors r+


Sequencediagram text with  not working but works with note

I have seen multiple posts here with  but I have come to realize in
sequenceDiagram
a->>b: test is done.   => Doesn't work
sequenceDiagram
a->>b: test is done.
Note right of b: This line will  break.  ===> Works
Please let me know if there is any work around for now?

A first version of this feature was completed on https://github.com/knsv/mermaid/pull/764

The issue #764 dealt with br in actor names. This one deals with br tags ion the signal descriptions. @edumicse is working with this in an active branch. Based on description I see how this can be confusing. Will reopen and update description.


does not recognize the device in the dashboard when install the signed apk in device.

Description:
When i generate signed apk and install on device , it does not recognize the device in the dashboard. But in debugger environment, recognizes the device and show in dashboard and it's not a problem.
Environment
"react-native-onesignal": "^3.2.4"
"react-native-navigation": "^1.1.469"
compileSdkVersion : 26
buildToolsVersion :  "26.0.2"
compile 'com.android.support:appcompat-v7:26.0.1'```
using yarn

**Steps to Reproduce Issue:**

  1. Install the OneSignal SDK using yarn in my project
  2. Initialize the SDK in the  app/build.gradle az example project
  3. Attempt to receive a push notification

app/build.gradle :
buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' } // Gradle Plugin Portal
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.10.0, 0.99.99]'
    }
}

apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: "com.android.application"

import com.android.build.OutputFile

/**
 * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
 * and bundleReleaseJsAndAssets).
 * These basically call `react-native bundle` with the correct arguments during the Android build
 * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
 * bundle directly from the development server. Below you can see all the possible configurations
 * and their defaults. If you decide to add a configuration block, make sure to add it before the
 * `apply from: "../../node_modules/react-native/react.gradle"` line.
 *
 * project.ext.react = [
 *   // the name of the generated asset file containing your JS bundle
 *   bundleAssetName: "index.android.bundle",
 *
 *   // the entry file for bundle generation
 *   entryFile: "index.android.js",
 *
 *   // whether to bundle JS and assets in debug mode
 *   bundleInDebug: false,
 *
 *   // whether to bundle JS and assets in release mode
 *   bundleInRelease: true,
 *
 *   // whether to bundle JS and assets in another build variant (if configured).
 *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
 *   // The configuration property can be in the following formats
 *   //         'bundleIn${productFlavor}${buildType}'
 *   //         'bundleIn${buildType}'
 *   // bundleInFreeDebug: true,
 *   // bundleInPaidRelease: true,
 *   // bundleInBeta: true,
 *
 *   // whether to disable dev mode in custom build variants (by default only disabled in release)
 *   // for example: to disable dev mode in the staging build type (if configured)
 *   devDisabledInStaging: true,
 *   // The configuration property can be in the following formats
 *   //         'devDisabledIn${productFlavor}${buildType}'
 *   //         'devDisabledIn${buildType}'
 *
 *   // the root of your project, i.e. where "package.json" lives
 *   root: "../../",
 *
 *   // where to put the JS bundle asset in debug mode
 *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
 *
 *   // where to put the JS bundle asset in release mode
 *   jsBundleDirRelease: "$buildDir/intermediates/assets/release",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in debug mode
 *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in release mode
 *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
 *
 *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
 *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
 *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
 *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
 *   // for example, you might want to remove it from here.
 *   inputExcludes: ["android/**", "ios/**"],
 *
 *   // override which node gets called and with what additional arguments
 *   nodeExecutableAndArgs: ["node"],
 *
 *   // supply additional arguments to the packager
 *   extraPackagerArgs: []
 * ]
 */

project.ext.react = [
    entryFile: "index.js"
]

apply from: "../../node_modules/react-native/react.gradle"

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"

    defaultConfig {
        applicationId "**********"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }

    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:26.0.1'
    compile 'com.facebook.react:react-native:+'
    compile project(':react-native-navigation')
    compile project(':react-native-onesignal')
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

and android/build.gradle :
buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'

    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {

            url "$rootDir/../node_modules/react-native/android"
        }
        maven {
            url 'https://maven.google.com/'
            name 'Google'
    }
}

@Amir-M7 For issues where the device doesn't register with OneSignal, that will generally display an error in logcat.
Can you please copy + paste your logcat for at least 10 seconds after opening your app?

adb server is out of date.  killing...
adb I  3913 415648 usb_osx.cpp:259] Found vid=04e8 pid=6860 serial=ce031713fb1cb8970c
adb I  3913 415648 usb_osx.cpp:259]

daemon started successfully *
--------- beginning of crash
--------- beginning of main
--------- beginning of system
06-08 16:26:47.859 28778 28778 D ReactNative: ReactInstanceManager.ctor()
06-08 16:26:48.034 28778 28778 W ReactNative: ======================================
06-08 16:26:48.034 28778 28778 W ReactNative:
06-08 16:26:48.034 28778 28778 W ReactNative: Overlay permissions needs to be granted in order for react native apps to run in dev mode
06-08 16:26:48.034 28778 28778 W ReactNative:
06-08 16:26:48.034 28778 28778 W ReactNative:
06-08 16:26:48.034 28778 28778 W ReactNative: ======================================
06-08 16:26:59.206 28778 28778 D ReactNative: ReactInstanceManager.createReactContextInBackground()
06-08 16:26:59.207 28778 28778 D ReactNative: ReactInstanceManager.recreateReactContextInBackgroundInner()
06-08 16:26:59.438 28778 28778 D ReactNative: ReactInstanceManager.onJSBundleLoadedFromServer()
06-08 16:26:59.439 28778 28778 D ReactNative: ReactInstanceManager.recreateReactContextInBackground()
06-08 16:26:59.439 28778 28778 D ReactNative: ReactInstanceManager.runCreateReactContextOnNewThread()
06-08 16:26:59.455 28778 29801 D ReactNative: ReactInstanceManager.createReactContext()
06-08 16:26:59.640 28778 29801 D ReactNative: Initializing React XplatBridge.
06-08 16:26:59.643 28778 29801 D ReactNative: Initializing React XplatBridge before initializeBridge
06-08 16:26:59.651 28778 29801 D ReactNative: Initializing React XplatBridge after initializeBridge
06-08 16:26:59.651 28778 29801 D ReactNative: CatalystInstanceImpl.runJSBundle()
06-08 16:26:59.652 28778 29829 D ReactNative: ReactInstanceManager.setupReactContext()
06-08 16:26:59.652 28778 29829 D ReactNative: CatalystInstanceImpl.initialize()
06-08 16:27:00.319 28778 28778 D ReactNative: ReactInstanceManager.attachRootViewToInstance()
06-08 16:27:00.329 28778 29827 I ReactNativeJS: Running application "A" with appParams: {"initialProps":{"screenInstanceID":"screenInstanceID2","navigatorID":"navigatorID1_nav","navigatorEventID":"screenInstanceID2_events"},"rootTag":1}. DEV === true, development-level warning are ON, performance optimizations are OFF
06-08 16:27:37.284 28778 28778 D ReactNative: ReactInstanceManager.onReloadWithJSDebugger()
06-08 16:27:37.286 28778 28778 D ReactNative: ReactInstanceManager.recreateReactContextInBackground()
06-08 16:27:37.286 28778 28778 D ReactNative: ReactInstanceManager.runCreateReactContextOnNewThread()
06-08 16:27:37.286 28778 28778 D ReactNative: ReactInstanceManager.tearDownReactContext()
06-08 16:27:37.293 28778 28778 D ReactNative: CatalystInstanceImpl.destroy() start
06-08 16:27:37.338 28778 30420 D ReactNative: CatalystInstanceImpl.destroy() end

@Amir-M7 unfortunately that doesn’t really help. Can you set the OneSignal log level to verbose?

@Nightsd01
componentWillMount() {
OneSignal.setLogLevel(OneSignal.LOG_LEVEL.DEBUG);
OneSignal.init("*************");
OneSignal.addEventListener("received", this.onReceived);
OneSignal.addEventListener("opened", this.onOpened);
OneSignal.addEventListener("ids", this.onIds);
} like this?

@Nightsd01
I dont know how to do this.

@Nightsd01
I don't know how to do this.
can i send my sample project for you?

@Amir-M7 apologies that setLogLevel was not documented earlier but jkasten added it.
Once you call OneSignal.setLogLevel(6, 0) we will likely be able to see what the issue is in your logcat. Please run the app for ~30 seconds and post your output

@Nightsd01
onesignal_crash_logcat.txt

@Nightsd01
onesignal_crash_logcat.txt

@Amir-M7 This is a bit confusing. Are you saying your app is crashing?
Unfortunately, your test app includes OneSignal in the name so it is impossible to dig through all 500+ log statements to look for any errors specific to our SDK. Can you try renaming your app to something else and post a new logcat?
If you're getting a crash, it's related to this:
06-09 11:27:02.714 28641-28736/? E/AndroidRuntime: FATAL EXCEPTION: mqt_js
    Process: com.notification, PID: 28641
    java.lang.RuntimeException: com.facebook.react.bridge.JavaJSExecutor$ProxyExecutorException: java.lang.IllegalStateException: WebSocket connection no longer valid
        at com.facebook.react.bridge.DefaultNativeModuleCallExceptionHandler.handleException(DefaultNativeModuleCallExceptionHandler.java:22)
        at com.facebook.react.devsupport.DevSupportManagerImpl.handleException(DevSupportManagerImpl.java:289)
        at com.facebook.react.bridge.CatalystInstanceImpl.onNativeException(CatalystInstanceImpl.java:511)
        at com.facebook.react.bridge.CatalystInstanceImpl.access$900(CatalystInstanceImpl.java:39)
        at com.facebook.react.bridge.CatalystInstanceImpl$NativeExceptionHandler.handleException(CatalystInstanceImpl.java:527)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
        at android.os.Looper.loop(Looper.java:211)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
        at java.lang.Thread.run(Thread.java:818)
     Caused by: com.facebook.react.bridge.JavaJSExecutor$ProxyExecutorException: java.lang.IllegalStateException: WebSocket connection no longer valid
        at com.facebook.react.devsupport.WebsocketJavaScriptExecutor.executeJSCall(WebsocketJavaScriptExecutor.java:182)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
        at android.os.Looper.loop(Looper.java:211)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
        at java.lang.Thread.run(Thread.java:818)
     Caused by: java.lang.IllegalStateException: WebSocket connection no longer valid
        at com.facebook.react.devsupport.JSDebuggerWebSocketClient.sendMessage(JSDebuggerWebSocketClient.java:148)
        at com.facebook.react.devsupport.JSDebuggerWebSocketClient.executeJSCall(JSDebuggerWebSocketClient.java:129)
        at com.facebook.react.devsupport.WebsocketJavaScriptExecutor.executeJSCall(WebsocketJavaScriptExecutor.java:175)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
        at android.os.Looper.loop(Looper.java:211)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
        at java.lang.Thread.run(Thread.java:818)

@Nightsd01 my app name is notification.my app is not crashing.in debugging recognize my device in dashboard.when generate the signed apk and install it does not recognize in dashboard.

When you say the device is "not recognized", what do you mean? You mean that the device is not getting registered at all and doesn't show up in the dashboard?
When I look in your logs, I do see this:
06-09 11:35:55.945 31170-31582/com.notification V/OneSignal: OneSignalRestClient: After con.getResponseCode  to: https://onesignal.com/api/v1/players/b17a6e78-9086-4626-b808-2b414c5b1c65/on_session
06-09 11:35:55.945 31170-31582/com.notification D/OneSignal: OneSignalRestClient: Successfully finished request to: https://onesignal.com/api/v1/players/b17a6e78-9086-4626-b808-2b414c5b1c65/on_session
06-09 11:35:55.947 31170-31582/com.notification D/OneSignal: POST RECEIVED JSON: {"success":true}
06-09 11:35:55.949 31170-31595/com.notification I/OneSignal: session sent, UserId = b17a6e78-9086-4626-b808-2b414c5b1c65

That means the device is getting registered with OneSignal, and the device does get a user ID. That means it should definitely show up in the dashboard.

@Nightsd01
when i connect the device to mac os with cable and write react-native run-android in terminal and open app in device automatically, my device registered in dashboard.but when i disconnect the device and generate the signed apk with cd android && ./gradlew assemblerelease ,and install app on device does not registered in dashboard.i send apk to another android device, they are not registered in dashboard too

Hi, I'm facing this issue too, both on ios and android, where sometimes the device gets listed in the dashboard and sometimes not, plus when teh device gets registered the tags are not send most of the time, i call sendTags but again I can't see the tags being send in the dashboard.
I called OneSignal.setLogLevel(6, 0) and let the app run on android emulator for 30 seconds. Then I run
adb logcat -b all -d -v threadtime > onesignal_crash_logcat.txt
to get the logs. Found this in the logs
onesignal: Unable to initialize the OneSignal SDK because activity is null true or oneSignalInitDonefalse
Couldn't get more info out of that.
Full logs:
onesignal_crash_logcat.txt

@Amir-M7 @phantom1299
This does seem to be an incompatibility issue with the react-native-navigation dependency. Please do try using native initialization and let me know how it goes.

@Nightsd01
i create new sample project without react-native-navigation, generate signed apk and install it on device, my device register in dashboard.It looks like it's having trouble using react-native-navigation.

I can't seem to get it working, native initialization didn't help and I can't find any logs about it

@Amir-M7 @phantom1299 Can you please copy + paste your MainApplication.java?
In the getPackages() method, are you sure you're returning new ReactNativeOneSignalPackage()?

I'm returning the package:
package com.APP_NAME;

import com.facebook.react.ReactPackage;
import com.reactnativenavigation.NavigationApplication;
import com.oblador.vectoricons.VectorIconsPackage;
import com.reactnative.ivpusic.imagepicker.PickerPackage;
import com.geektime.rnonesignalandroid.ReactNativeOneSignalPackage;
import com.reactnative.photoview.PhotoViewPackage;
import cl.json.RNSharePackage;
import com.oblador.keychain.KeychainPackage;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends NavigationApplication {

  protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        new VectorIconsPackage(),
        new ReactNativeOneSignalPackage(),
        new PickerPackage(),
        new PhotoViewPackage(),
        new RNSharePackage(),
        new KeychainPackage()
      );
  }

  @Override
  public String getJSMainModuleName() {
    return "index";
  }

  @Override
  public boolean isDebug() {
    return BuildConfig.DEBUG;
  }

  @Override
  public List<ReactPackage> createAdditionalReactPackages() {
    return getPackages();
  }

  public String getFileProviderAuthority() {
    return "com.example.com.APP_NAME.provider";
  }
}

package com.notification;
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.geektime.rnonesignalandroid.ReactNativeOneSignalPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import java.util.Arrays;
import java.util.List;
import com.reactnativenavigation.NavigationApplication;
public class MainApplication extends NavigationApplication {
@Override
public boolean isDebug() {
// Make sure you are using BuildConfig from your own application
return BuildConfig.DEBUG;
}
protected List getPackages() {
// Add additional packages you require here
// No need to add RnnPackage and MainReactPackage
return Arrays.asList(
new ReactNativeOneSignalPackage()
);
}
@Override
public List createAdditionalReactPackages() {
return getPackages();
}
@Override
public String getJSMainModuleName() {
return "index";
}
}

@Amir-M7 Yeah, I have created a project using react-native-navigation with react-native-onesignal and it works fine, I cannot reproduce your issue.
Would it be possible for you to upload a sample project that reproduces this issue? If you want to send us your full project that works as well, but don't post it publicly, contact OneSignal support (on our dashboard website click the ? button) and link them to this git issue.

@Nightsd01
can you send sample project for me without App Id ?

@Amir-M7 I am not sure what you mean....?
I was asking you to send us an example project where you are able to reproduce this issue

@Nightsd01
How to send my project to you?
I sent the message support on dashboard and sent this issue 2 days ago, but they have not yet responded to me.

@Amir-M7 I found an issue that is likely causing this issue, fixed it in #547 It will be available in a new release either today or tomorrow


Install texlive with apt-get instead of LinuxBrew on Linux machines.

[ ] Instructions - http://tipsonubuntu.com/2016/09/16/install-tex-live-2016-ubuntu-16-04-14-04/
[ ] Update app/texlive/texlive.yaml
[ ] test

Git-commit 898bb5 completed this task.


Question: what does RESET do with a Plextor drive?

Heya,
small question: what does RESET do with a Plextor drive? Is it something like a SpinDown, clear drive caches and reload the disc?
reset <DriveLetter>
                Reset the drive (Only PLEXTOR)

Is it useful to utilize in between reads of various discs?

Thank you for the explanation!


undefined method `merge' for nil:NilClass

I am using s3 to upload images and I am getting nil class and undefined method errors at numerous actions.
When I try to reload the media I get undefined method merge for nil:NilClass and when I try to upload an image I get nil can't be coerced into Float. I was not getting this nil class error before. It just started to appear.
Can you please help me with the errors? This is happening on the live website.

I fixed this issue #872. But unfortunely this PR was reverted.

@superchell I had to revert because there were other errors cause of it. Could you please solve the problem and make the new PR?

@awais4123 Fixed!


Use --Trans TPS --Pad and set ImgW = 640

in my train set, most of samples' width are smaller than 640 , when Use --Trans TPS --Pad and set ImgW = 640, that means most samples would pad 0 in the right.
In this config, acc would be worse than '--Trans TPS pad = False imgW=100'. do you have any experience on this config.

Hello,
I have not tested --imgW 640.
For wide image, I have tested --imgW 256 or 384 and it works fine.
I guess that 640 is too wide to recognize images with short labeled such as 'a' or 'an'.
Best

in config of '--pad and imgW=640', it keep the ratio of text, so it does not affect short labeled text. The acc is normal now. But in these experiments, i found the character in  wide text gets smaller from left to right after TPS. Is it caused by fc2 bias' initialization in Location Net?  It didnt improve when trying different  bias initializations.
Thanks in advance.


Open modaal from element inside iframe

Hi there,
thanxs for the great library.
Is there a way to open modaal from an element e.g. a button inside an  element?
I load an svg inside an object and this svg should be opened by modaal but the triggering button should be within the svg?
Haven't found a way to solve this...
Thanks for your help.
Best, hirschferkel

hi @hirschferkel, there is nothing built into Modaal to handle this, you will need to write your own JS to handle that kind of action.
I don't see this being a feature we'll build into the plugin either as it's so unique, so i'm going to close this ticket. Thanks

hi @danhumaan,
thanks for your answer. I did not expect to implement this kiind of action to your code. But as I do not have any idea of jQuery but JS I do not know how to call the modal function from Javascript.
Do you have any hint how I can call the modaal from JS?
I know how to call the rigth element, but not how to pass the arguments to the jQuery...
Thanks for any help, hirschferkel

The reason why it did not work was that the iframe was not completely loaded, while jQuery tried to attach the function. As $(document).ready(function(){} did not work, the workaround was to initialize it with
#$( window ).on( "load",function() {
$("#mainContent").contents().find("IDofDIVelement").modaal({});
});

Unfortunately after the modaal overlay gets closed, the functionallity vasnishes. Trying to find a way, now, to keep it on the element...

The problem is that modaal injects the code which was wrapped and as it is an iframe-html it takes time to get loaded again. So modaal fires the after-close function bt the iframe is not ready.
The callback delay doesn't handle this problem as the iframe-content will load after it was inserted back from modaal...
Any idea, how I can re-attach the click-event to the iframe-element?

O.K. i got it work:
$( window ).on( "load",function() {
$("#iframeID").contents().find("#IDofDIVelement").modaal({
content_source: '#modalwrapper',
overlay_close: true,
after_close: function reattach(){
reload();
}
});
});

function reload(){
      var length = $("#iframeID").contents().find("#IDofDIVelement").length;
      // The following will log 1 to the console, as the paragraph exists.
      if (length == 0) {
      	setTimeout(function(){ reload()}, 500);
      }
      else{
$("#iframeID").contents().find("#IDofDIVelement").modaal({
content_source: '#modalwrapper',
overlay_close: true,
after_close: function reattach(){
reload();
}
});
}
}

O.k. it doesn not work as soon as someone changes something dynamically within the content_source e.g. visibility of the trigger button.
Even the binding of the click function gets lost this way... and if there are more than on iframe available it's not possible to work on.


Is there any way to use RunspacePools such that Runspace state is reset between uses?

I'm experimenting with parallelizing unit tests.  I'd like to be able to run each test in a clean runspace so that variables set during one test don't affect other tests.
Steps to reproduce
$runspacePool = [runspacefactory]::CreateRunspacePool()
$runspacePool.Open()

$scriptblock = { $a; $a = 1 }

'first'
$powershell1 = [powershell]::Create().AddScript($scriptblock)
$powershell1.RunspacePool = $runspacePool
$powershell1.Invoke()

'second'
$powershell2 = [powershell]::Create().AddScript($scriptblock)
$powershell2.RunspacePool = $runspacePool
$powershell2.Invoke()

Expected behavior
I expected the PowerShell/RunspacePool objects to ensure that the Runspace used on each call to .Invoke() was reset prior to use.
first
second

Actual behavior
The variable set by the first PowerShell object is available to the second PowerShell object.
first
second
1

Environment data

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.1.0-preview.688
PSEdition                      Core
GitCommitId                    v6.1.0-preview.688
OS                             Microsoft Windows 6.3.9600
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

There is a method ResetRunspaceState() on individual runspaces but not on a runspace pool. Note that this method only resets the variables in the runspace. It doesn't reset the command/function tables because doing so was very slow. Looking at the code, it should be fairly easy to add the property to RunspacePool and reset the runspace state when it's allocated. Would that be sufficient for your purposes?

...ResetRunspaceState() ...Note that this method only resets the variables in the runspace. It doesn't reset the command/function tables because doing so was very slow.

Thanks for pointing this out.  I wasn't aware of that.  I'll happily take that limited reset behavior anyway.  The only alternative seems to be priming a new runspace with script modules for each test.  But I've found that to be much too expensive.

...it should be fairly easy to add the property to RunspacePool and reset the runspace state when it's allocated. Would that be sufficient for your purposes?

I think that would be a nice option wherever RunspacePools are used.  But I'm not quite sure yet whether I can use RunspacePools; I'm still seeing a performance disadvantage during module loading when compared with Runspace.OpenAsync() (see also #7035).


Log exceptions at command level with LogService

If exceptions happen when running commands, at the command level, log them with logService.trace() so that users don't normally see them, but that they can be used for debugging if needed.

This means exception traces, user should still be informed about IOExceptions etc.


Mocking stores in component unit tests

Hi there! I had the need to mock an imported useStore function in my unit tests, and was having some trouble with setting up the mocks in the test properly. I came up with the following solution:
component.vue
<template>
    <button @click="addOne">Add 1</button>
</template>

<script lang="ts">
import { defineComponent } from '@vue/composition-api';
import { useCounterStore } from '../stores/counter';

export default defineComponent({
    setup() {
        const counterStore = useCounterStore();

        return { addOne };

        function addOne() {
            counterStore.add(1);
        }
    }
});
</script>

component.test.js
import { shallowMount } from '@vue/test-utils';
import CounterComponent from './component.vue';
import { useCounterStore } from '../stores/counter';

describe('Component', () => {
    it('Calls the add method on the counter store', () => {
        const counterStore = useCounterStore({});
        jest.spyOn(counterStore, 'add');

        const component = shallowMount(CounterComponent);
        component.find('button').trigger('click');

        expect(counterStore.add).toHaveBeenCalledWith(1);
    });
});

Do you have any other recommendations @posva? This works well for checking action calls, but gets a little tricky once you have a component that relies on a getter

I also just realized another mistake I made: when testing / mocking two stores at the same time, make sure to pass them the same instance of req to make sure they're aware of each other's changes:
it('Does not work', () => {
    const firstStore = useFirstStore({});
    const secondStore = useSecondStore({});

    firstStore.state.value = 'test';

    // secondStore won't be able to read this value from first store
});

it('Works', () => {
    const req = {};
    const firstStore = useFirstStore(req);
    const secondStore = useSecondStore(req);

    firstStore.state.value = 'test';

    // secondStore now correctly reads the `'test'` value from firstStore
});

Your examples looks good. Getters are difficult to mock without overriding the actual store.
I think testing needs a bit more thinking for nested stores. Probably a helper function that allows to mock the original require of the store object similar to https://github.com/posva/vuex-mock-store

Maybe it would possible to use the provide & inject pattern to have your own wrappers functions for useFirstStore() and useSecondStore?
Some top level component (App) would do provideFirstStore(firstStore) provideSecondStore(secondStore). Everywhere else you would use your own version of useFirstStore(), useSecondStore().
In component tests you would be able to provide the actual stores or mocks in the parentComponent.

I've used this pattern for my useStore() for VueX.
export const storeKey = '__store';

export function provideStore(store): void {
  provide(storeKey, store);
}

export function useStore(): Store<any> {
  const store: Store<any> | void = inject(storeKey);
  if (!store) {
    throw new Error(`Store has not been provided!`);
  }

  return store;
}

export function createProviderComponent({
  $store,
  $auth,
}: ProvideOptions) {
  return createComponentStub('provider', (props, context) => {
    if ($store) {
      provideStore($store as Store<any>);
    }

    if ($auth) {
      provideAuth($auth as Auth);
    }
  });
}

wrapper = mount(SomeComponent, {
      parentComponent: createProviderComponent({ $store }),
    });

This workaround doesn't seem to work as of v0.5.1. First off, you cannot use an empty object as an argument for useCounterStore as it just throws Cannot read property 'value' of undefined.
Instead I've been trying to use createPinia and passing that, or simply passing nothing, but no matter what I do it seems that spying on the action never actually gets triggered if called from the component, so I guess it must be unique per instance? The state DOES get updated though, so if you check expect(counterStore.count).toBe(1) the test passes.
The only way I've been able to accomplish something similar is mocking the entire import like so:
jest.mock('../counter', () => {
  const mockAdd = jest.fn()
  const { useCounterStore } = jest.requireActual('../counter')
  return {
    useCounterStore () {
      const store = useCounterStore()
      store.add = mockAdd
      return store
    }
  }
})

and then changing the test to the following passes:
 it('Calls the add method on the counter store', () => {
    const pinia = createPinia()
    const counterStore = useCounterStore(pinia)
    jest.spyOn(counterStore, 'add')

    const component = shallowMount(CounterComponent, {
      pinia
    })

    component.find('button').trigger('click')

    expect(counterStore.count).toBe(0) // <--- Note the state is not updated at all though
    expect(counterStore.add).toHaveBeenCalledWith(1)
  })

but this is far from ideal.
Any ideas on a better way to spy on an action or mock it's implementation?

Mocking stores is still in my roadmap but I haven't been able to get there yet. Ideally, there would be a global plugin, package, or setting that makes it easy and automatically spies on actions similar to https://github.com/posva/vuex-mock-store

Looking more into the source code it seems that the actions are wrapped which makes sense because of the ability to register callbacks in an action's lifecycle. So spying on the action itself is spying on this wrapper, not the original action.
So to access the unwrapped actions, we can use a plugin which just adds another property to each store called originalActions with an extra declaration, then create a reusable function which can be used in any spec file to create a store with actions we can spy on:
// pinia.d.ts (or another declaration file in scope)
import 'pinia'

declare module 'pinia' {
  export interface PiniaCustomProperties<Id, S, G, A> {
    originalActions: A
  }
}

// unit-test-helpers.ts (or similar)
const originalActionsPlugin: PiniaStorePlugin = ({ store, options }) => {
  store.originalActions = options.actions!
}
export function createTestPinia (): Pinia {
  const pinia = createPinia()
  pinia.use(originalActionsPlugin)
  return pinia
}

// Test.spec.ts
it('Calls the add method on the counter store', () => {
    const pinia = createTestPinia()
    const component = shallowMount(CounterComponent, {
      pinia // must be provided as a component option (I think?)
    })
    const counterStore = useCounterStore(pinia) // I didn't need to provide pinia here, but it might be needed in some cases (?)

    // spy but still allow original action to run
    jest.spyOn(counterStore.originalActions, 'add')

    component.find('button').trigger('click')

    expect(counterStore.count).toBe(1) // state was updated as the original action still runs ✅
    expect(counterStore.originalActions.add).toHaveBeenCalledWith(1)

    counterStore.$reset()

    jest.spyOn(counterStore.originalActions, 'add')
      .mockClear()
      .mockReturnValue() // stop original action implementation from running

    component.find('button').trigger('click')

    expect(counterStore.count).toBe(0) // state was not updated, the original action did not run ✅
    expect(counterStore.originalActions.add).toHaveBeenCalledWith(1)
  })

This seems like the simplest and most type safe way to do this currently, though I'd be interested in any other ideas 😄

Has anybody tried the createTestingPinia()? I will move the functions to a new package in the future once I move pinia to a mono repo and was looking for some feedback/issues people have encountered (apart from the still non-existent docs 😄 )

Has anybody tried the createTestingPinia()? I will move the functions to a new package in the future once I move pinia to a mono repo and was looking for some feedback/issues people have encountered (apart from the still non-existent docs 😄 )

I haven't yet as we've instead wrote our own helper which has made testing a dream so just wanted to share what we found to be helpful that could improve createTestingPinia.
The syntax we use is providing an optional callback function, the arguments to that function are extra helper methods which allow creating spies (which I see already exists) and seeding a default state to stores which is really helpful. It looks a bit like this:
let actionSpy: jest.SpyInstance
const wrapper = shallowMount(Component, {
  pinia: createTestPinia(({ setState, spyAction }) => {
    setState(createSomeStore,  { key: 'value' })
    actionSpy = spyAction(createAnotherStore, 'actionName').mockResolvedValue(null)
  })
  // ...
}

I would definitely request having some way to set initial state, the function itself just uses store.$patch and of course is type safe. You can create a test Pinia instance before mounting, set the state, and then mount, but this kind of shorthand is really nice to work with.
Apart from that the current implementation of createTestingPinia shares pretty much the same features we've found helpful, thanks for making Pinia so simple to customise and extend ❤

Thanks for the feedback! Setting an initial state for testing could be useful. Maybe I can find a way to have autocompletion when passing the initial state:
createTestingPinia({
  state: {
    auth: {
      // autocomplete
    }
  }
})

It would all be about making the function aware of existing stores like createTestingPinia(options, useAuthStore, useOtherStore, etc) (which I haven't tested)

I tried that sort of syntax initially and it was a nightmare to get TS to infer the types without being verbose (such as declaring every store up front which I wanted to avoid) hence the callback function syntax which was much easier to implement and type correctly. But I do agree that syntax is more user friendly in general so if it's possible it'd be preferable.
To be honest our implementation of setState is just a wrapper around $patch so even just providing a hook of some sort would provide equivalent behaviour:
createTestingPinia({
  afterCreate: () => {
    const someStore = useSomeStore()
    someStore.$patch({ key: 'value' })
  }
})

Then the user can do whatever they want with the stores but still be able to have everything initialised as they want before the pinia instance is used by the component.

Right, but that afterCreate would then be the same as just running some code after creating the testing pinia (since there is no async code running).
I want to explore an option like you proposed. I think an initial version without autocompletion is fine too.

Closing this as the package @pinia/testing has been released. It still needs to be documented better.


Add more logging info to Kotlin arc startup and StorageProxy messages

Will update to make suffixing debug only. That leads to a question, though: is the intent that only debug and verbose calls be suffixed, or should higher-level log methods have the suffix when the log level itself is debug or verbose?
aka:
Log.level = Log.Level.Debug
val log = TaggedLog { ... }.withDebugSuffix { ... }
log.debug { "this should definitely log with the suffix" }
log.warning { "but should this? " }

Will update to make suffixing debug only. That leads to a question, though: is the intent that only debug and verbose calls be suffixed, or should higher-level log methods have the suffix when the log level itself is debug or verbose?
aka:
Log.level = Log.Level.Debug
val log = TaggedLog { ... }.withDebugSuffix { ... }
log.debug { "this should definitely log with the suffix" }
log.warning { "but should this? " }

The higher levels should never be suffixed (unless you want to add withDebugSuffix() vs withSuffix()), because the intent is that information put into withDebugSuffix() should only ever pass into log.debug/log.verbose. You can see a wonky pattern in some places where we do the following:
log.info("Foo started")
log.debug("Foo $pii started")

If there's a better way, I'm open to it.

Will update to make suffixing debug only. That leads to a question, though: is the intent that only debug and verbose calls be suffixed, or should higher-level log methods have the suffix when the log level itself is debug or verbose?
aka:
Log.level = Log.Level.Debug
val log = TaggedLog { ... }.withDebugSuffix { ... }
log.debug { "this should definitely log with the suffix" }
log.warning { "but should this? " }

The higher levels should never be suffixed (unless you want to add withDebugSuffix() vs withSuffix()), because the intent is that information put into withDebugSuffix() should only ever pass into log.debug/log.verbose. You can see a wonky pattern in some places where we do the following:
log.info("Foo started")
log.debug("Foo $pii started")

If there's a better way, I'm open to it.

http://b/160251910 tracks cleaning up the wonky pattern.

The higher levels should never be suffixed (unless you want to add withDebugSuffix() vs withSuffix()), because the intent is that information put into withDebugSuffix() should only ever pass into log.debug/log.verbose.

My point here is to pin down the desired behaviour when the log level itself is set to debug, for calls above the debug level. So when Log.level == Log.Level.Debug, is it ok for log.error() to output the potentially sensitive suffix data? Presumably Log.level is only ever set to debug in scenarios like now, when we're investigating a bug on internal devices. I don't imagine the debug level would ever be set on a real user's device.

The higher levels should never be suffixed (unless you want to add withDebugSuffix() vs withSuffix()), because the intent is that information put into withDebugSuffix() should only ever pass into log.debug/log.verbose.

My point here is to pin down the desired behaviour when the log level itself is set to debug, for calls above the debug level. So when Log.level == Log.Level.Debug, is it ok for log.error() to output the potentially sensitive suffix data? Presumably Log.level is only ever set to debug in scenarios like now, when we're investigating a bug on internal devices. I don't imagine the debug level would ever be set on a real user's device.
btw I'm not necessarily arguing for this approach, but it may be a potential (if partial) solution to b/160251910

For the binary on user devices, there is a Proguard step that strips out the actual bytecode that produces debug and verbose logging by method name: http://cl/317360086
We could enhance the Proguard-ing. We do need/want to ensure anything debug/verbose log level wise is not present in the production binaries.

@ianull to comment further on above, I do like the idea of progress vs. the bug I linked, having both debug and info-or-otherwise sprinkled throughout the code is super unsightly. Thanks for spending time looking at this. I know it can be frustrating walking the PII line, but it would be awesome if we had things generalized and easy to use in a safe way.
For internal purposes logging the debug/verbose bits at error level is in theory fine I think, presuming we Proguard-updated, but could lead to other folks becoming unnecessarily alarmed since it won't be clear it's stripped and it will show in not-debug/verbose log messages.
To be clear, the specific dangerous thing is actually that the suffix includes dynamically constructed values w/ PII like storageKey. withSuffix logging (which I understand is mainly intended as a convenience sort of thing) is ok if it's just logging ints or opaque ids that can't be tied to specific recipes, particles, user info/actions, etc. We used to have, instead of withSuffix, the TaggedLog built dynamically with storage key values embedded, but that was stripped out, you can see some removals here: https://github.com/PolymerLabs/arcs/pull/5552/files#diff-d587bd637b589198509ae237790abd74L58 and more in that PR. That was kind of like a not-generalized "withPrefix", if you will. Personally I'd prefer the suffix approach, having dynamic info embedded in the log prefix made it hard to read and I feel like tail of messages is where dynamic bits should live.

Thanks for the info Walter. I think adding this sort of info is more than just a convenience. Since we need to rely on logs for on-device debugging, simple checkpoint dumps like "proxy sent onReady" become much less useful once more than one proxy is involved - hence my aim to provide an identifier in the output.
Of course, ensuring PII is not present in prod logs trumps that concern. The Proguard step is interesting; presumably the bytecode associated with generating a string like "key ${storageKey}" would be safe to leave in, assuming the interpolation is not actually executed in prod contexts? Although the safest course of action would not be to rely on that assumption, and just remove the possibility altogether..
I'm a bit confused by this: For internal purposes logging the debug/verbose bits at error level is in theory fine. My understanding is that log.error() should produce output at all log levels up to Log.Level.Error, and my suggestion is that the debug suffix is only ever included in that output when the log level is set to debug or verbose. I'm not proposing that debug info would be present when the log level is at error.
I have an idea for handling this more safely. I'll post that on the tracking bug for discussion.

"(key=$storageKey)" should not exist in prod build in any form like const string.
withDebugSuffix sounds fine to constrain the suffix showing only in verbose and debug levels.
For safety, a proguard rule is required to strip out the withDebugSuffix which would also remove the "(key=$storageKey)" due to no effect.

Thanks Ian.
How specific can the Proguard rule be? I have a WIP CL that adds the following method to TaggedLog:
    override fun withDebugSuffix(suffixBuilder: () -> String): Logger {
        return if (Log.level > Log.Level.Debug) {
            this
        } else {
            TaggedLogWithDebug(suffixBuilder)
        }
    }

At the moment I have TaggedLogWithDebug converting all logging calls to use Log.debug and appending the sensitive data, on the understanding that this would be stripped by Proguard. However, that would still leave the interpolation strings in the calls to withDebugSuffix. Can Proguard be configured to change withDebugSuffix to be just return this?

Thanks Ian.
How specific can the Proguard rule be? I have a WIP CL that adds the following method to TaggedLog:
    override fun withDebugSuffix(suffixBuilder: () -> String): Logger {
        return if (Log.level > Log.Level.Debug) {
            this
        } else {
            TaggedLogWithDebug(suffixBuilder)
        }
    }

At the moment I have TaggedLogWithDebug converting all logging calls to use Log.debug and appending the sensitive data, on the understanding that this would be stripped by Proguard. However, that would still leave the interpolation strings in the calls to withDebugSuffix. Can Proguard be configured to change withDebugSuffix to be just return this?

Afaik Proguard rule can only change return values for primitive types thus the return this should not work at all.
It'd be difficult/impossible to strip the withDebugSuffix out if you're deciding to use a builder pattern.

Afaik Proguard rule can only change return values for primitive types thus the return this should not work at all.
It'd be difficult/impossible to strip the withDebugSuffix out if you're deciding to use a builder pattern.

Ok, that makes it harder. I'll have to think some more about this.

I'm going to abandon this PR. I have yet to work out a way to have a single log statement (with or without chained methods) that can use a PII-inclusive string which is completely excised by Proguard.


#1421 Fix SFInput label on addition of placeholder value

Related issue

Closes #
Scope of work

Screenshots of visual changes

Checklist

[x] No commented blocks of code left
[x] Run tests and docs
[x] Self code-reviewed
[x] Changes documented

If applicable:

[ ] I followed composition rules for my component
[ ] I tested the component in most common device sizes (can be tested in Storybook from viewport addon in top menu)

 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.You have signed the CLA already but the status is still pending? Let us recheck it.

@AdamPawlinski @mayashavin Review Required

Hey,
If its fine with the maintainers, if my code is accepted. Then can I raise another PR for merge so that my PR can be counted for Hacktoberfest challenge.
Only if its fine with maintainers:)
@mayashavin @AdamPawlinski @justyna-13

Looks great! Just one small improvement (removing additional whitespaces) and will be done :)

@mayashavin is this issue done according to you?

@mayashavin Is there anything else needs to be done with this issue?

@rungta08 sorry didn't see the comments till now. Yes it's fine for me 😁

@rungta08 do you want to close this PR and open a new one for Hacktoberfest?

@mayashavin I guess we can merge the PR if its fine with you


Missing unit tests for to_json() on early stopping algos

Compare for instance
https://github.com/zalando/expan/blob/dev/tests/tests_core/test_results.py#L126
https://github.com/zalando/expan/blob/dev/tests/tests_core/test_results.py#L180

closed by https://github.com/zalando/expan/pull/129


http://packagist.drupal-composer.org is dead

Just so everyone that tries to use http://packagist.drupal-composer.org is aware that it has been replaced by packages.drupal.org and you need to update your composer.json file as described on drupal.org.
drupal-packagist project on GitHub should be updated so that people no longer will try to use http://packagist.drupal-composer.org

Done, i published the deprecation notice for the repo.


[feature request] Git support?

You can already pull files from git repositories and commit them

You can already pull files from git repositories and commit them

wait how? I have a local git repo and it doesn't show up anywhere

What i do now it cd into the direcotry in termux and do git add/commit

Acode doesn't have local Git support and there are no plans for it right now.  But as @InsanePhin said, you can connect with your remote repositories on GitHub by adding a PAT in Menu > GitHub.

We are planning to add support for remote repositories that are hosted on platforms other than GitHub.


broken image icon

Within the tree definition in my settings.json I have:
    "tree": {
        "projects": {
            "project1": "/path/to/project1",
            "project2": "/path/to/project2",
            ...
        },
    },

For the projects 'subfolder', of type category, the generated HTML is:

category.png is NOT included in the git repo that I get on fetch; so my top level TiddlyServer page ends up with a broken image icon that looks like:

and the log ends up with a 404:
1940:[2017-07-05T22:18:49.717-0400] GET 404 <IP_ADDRESS> /icons/category.png
I suspect that icon should be referencing folder.png, not category.png, and that the problem is in https://github.com/Arlen22/TiddlyServer/blob/master/generateDirectoryListing.js#L13-L16
As a separate, too minor to open, issue, you might consider adding a version string or some other identifying information (tag, git hash) in the TiddlyServer generated page so it is apparent what version people have.

As a separate, too minor to open, issue, you might consider adding a version string or some other identifying information (tag, git hash) in the TiddlyServer generated page so it is apparent what version people have.

Thank you. I will try update package.json from 2.0.5 forward. My apologies for this oversight.

I suspect that icon should be referencing folder.png, not category.png,

It is intended to be category.png, but somehow I forgot to find an icon for it. If you want, you can copy folder.png and name it category.png.
If you have better icon ideas, let me know.

https://github.com/Arlen22/TiddlyServer/commit/834b0054d85f78d67f4195c74e2c737a1bd1d939


Just a few things.

I got this running now, but considering OpenStreetmap is slow and MapBox expensive, is it posible to make a local cache on the phones with loaded tiles?
Eg:
cache: true,
cachetime: 24*31, // 1 month cache
and a function like flushCache(older then); // force flush cache, or cache older then.
Lets all agree, maps dont change hourly, saving mobile data would be nice.

I dont know if this is easy to implement, but i guess when a part loads, check for the xxxxxxxxxxxx.png files in cache, if not there, download, if there and older then cachetime, download the tile anew.


Icons aren't clear / understandable

Specifically:

Power icon is used to restart game?
Connection in corner has no meaningful affordances to tell you what it's for
Nice to know that the corner button can be "demo" or "autoplay" (bot)

Possible solutions:

Tooltips on hover or click
Better iconography

Need to think about this one hard.

Did my best.


Basic Javascript lesson order

Based on this conversation,
January 4, 2016 11:36 AM
Shouldn't #48 Waypoint: Write Reusable JavaScript with Functions
to #54 Waypoint: Assignment with a Returned Value
Come before
#22 Checkpoint: Convert Celsius to Fahrenheit
#37 Checkpoint: Word Blanks
I haven't gone through all the new material yet so I'm not 100% sure what knowledge campers should have up to certain points. However, it seems that moving these checkpoints elsewhere may help them comprehend the existing code that is presented if they are aware of how functions work first.

You have perfectly described by torment.  There is always a bit of a chicken and egg problem when doing this sort of curriculm - how can we teach X when they don't know Y.  I went back and forth over this during the building of the curriculum, but I ultimately decided that users could "handle" the idea of using a pre-laid-out function without too much explanation for these two challenges.  Ultimately, I don't think that that is where campers are having problems.
I'm open to suggestions, of course.  It just seemed better to introduce more complex concepts later, after establishing a foundation with other concepts.

Yea I would agree that they're definitely still doable without having gone through those waypoints first.
I went back and looked at the checkpoints in more detail. The instructions do push them in the right direction even though they may not understand where the values came from or how they got there and work.
I wonder if new campers would prefer to see the function they're working on,
function convert(celsius) {
  // Only change code below this line

  // Only change code above this line
  if ( typeof fahrenheit !== 'undefined' ) {
  return fahrenheit;
  } else {
    return 'fahrenheit not defined';
  }
}

// Change the inputs below to test your code
convert(30);

Or alternatively, seeing and modifying snippets,
var fahrenheit = celsius; //modify this line

In the case that all the code around
  // Only change code below this line

  // Only change code above this line

adds to their confusion or makes the problem seem more complex than it actually is.
Some things I've noticed are that some users miss the fact that the parameters are there to be used (despite variable names being mentioned in the instructions) and sometimes try using hard coded values too.
However, it seems fine for now I just thought it was something worth considering and discussing.

Keep in mind that, as a "checkpoint", this is intended to be more of a "blank page" challenge.  If we added the sample code, even as simple as it is, they would lose the experience of "starting from nothing" . . . even if they're really not.
Our purpose is not to eliminate all possible confusion.  I would consider some confusion to be "good" confusion.   That said, if you're getting the same question over and over, then maybe we do need to revisit this.  I don't spend as much time as I once did in the help rooms, so your feedback is appreciated.


Support SSV (Space Separated Values) as tally input

Claire 0 0 2 3 2 0
Victor 0 0 1 2 4 0
Adrien 0 0 0 4 3 0
PéHach 0 1 3 3 0 0

Rationale
Not all text editors use tabs, some use spaces by default.

This is mostly done already, but the implementation is not … optimal.


Rename to DataPanel

Codecov Report

Merging #11 (f814a05) into main (a503720) will decrease coverage by 1.16%.
The diff coverage is 61.53%.

@@            Coverage Diff             @@
##             main      #11      +/-   ##
==========================================
- Coverage   48.33%   47.16%   -1.17%
==========================================
  Files          36       36
  Lines        2036     1972      -64
  Branches      358      358
==========================================
- Hits          984      930      -54
+ Misses        974      964      -10
  Partials       78       78

Flag
Coverage Δ

unittests
47.16% <61.53%> (-1.17%)
:arrow_down:

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

Impacted Files
Coverage Δ

mosaic/contrib/wilds/__init__.py
0.00% <0.00%> (ø)

mosaic/mixins/inspect_fn.py
67.34% <ø> (ø)

mosaic/mixins/visibility.py
65.62% <ø> (-1.05%)
:arrow_down:

mosaic/datapanel.py
64.82% <61.90%> (ø)

mosaic/__init__.py
100.00% <100.00%> (ø)

mosaic/mixins/mapping.py
73.77% <100.00%> (ø)

mosaic/tools/identifier.py
38.46% <0.00%> (-5.07%)
:arrow_down:

mosaic/cells/imagepath.py
47.82% <0.00%> (-4.18%)
:arrow_down:

mosaic/mixins/identifier.py
77.77% <0.00%> (-4.05%)
:arrow_down:

mosaic/cells/abstract.py
60.71% <0.00%> (-3.81%)
:arrow_down:

... and 18 more

Continue to review full report at Codecov.

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


fix(core): check if content is defined

check if content is defined before accessing its properties
What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Bug fix
What is the current behavior? (You can also link to an open issue here)
It breaks trying to access nativeElement property of content, but content is not defined.
What is the new behavior (if this is a feature change)?
N/A
Please check if the PR fulfills these requirements

[x] The commit messages follow our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format
[ ] A unit test has been written for this change.
[x] Running npm run build produced a successful build. (Unit testing can be done by running npm test;)
[x] My code has been linted. (npm run lint to do this. npm run build will fail if there are files not linted.)

Please provide a screenshot of this feature before and after your code changes, if applicable.
N/A
Other information:
Angular upgrade from v7.x.x to v8.0.0 in our project caused this bug. I believe this happens because angular introduced static: true / false concept for @ViewChild.
AngularJS: 1.6.5
Angular: 8.0.0
@ngx-formly/core: 5.5.4

Thank you @milasevicius!

v5.5.5 is released which includes this fix!