How do I import a type definition module? (error TS2656: …not a module)

Hello! I'm sorry to both you with something that is surely my problem, but I would love to get this figured out. I have been coding for 17 years and this has got me really stuck!!!
FWIW, I have read documentation over and over, I have posted to StackOverflow, and I have not found a solution yet. I have to be humble and ask for support to try to overcome this.
TypeScript Version:
1.8.10
Code
I have a simple npm module, emitter20, that I am trying to add type definitions to. Here is all 20 lines of its source:
module.exports = function() {
  var subscribers = []
  return {
    on: function (eventName, cb) {
      subscribers.push({
        eventName: eventName,
        cb: cb
      })
    },
    trigger: function (eventName, data) {
      subscribers
        .filter(function (subscriber) {
          return subscriber.eventName === eventName
        })
        .forEach(function (subscriber) {
          subscriber.cb(data)
        })
    }
  }
}

Here is the index.d.ts file in the emitter20 project root:
declare module 'emitter20' {
  interface IEmitter {
    on: (eventName: string, cb: (data?: any) => void) => void;
    trigger: (eventName: string, data?: any) => void;
  }
  interface EmitterFactory {
    new(): IEmitter;
  }
  export = IEmitter;
}

I have also tried this:
declare module 'emitter20' {
  export interface IEmitter {
    on: (eventName: string, cb: (data?: any) => void) => void;
    trigger: (eventName: string, data?: any) => void;
  }
  export interface EmitterFactory {
    new(): IEmitter;
  }
}

And from others' suggestions, I have also tried this:
declare module 'emitter20' {

    function Emitter(): Emitter.IEmitter;
    namespace Emitter {
        interface IEmitter {
            on: (eventName: string, cb: (data?: any) => void) => void;
            trigger: (eventName: string, data?: any) => void;
        }
    }

    export = Emitter;
}

I try to import it into my project like this:
import IEmitter = require('emitter20')

export interface SwapManager extends IEmitter {
  manager: any;
}

Or this:
import * as emitter from 'emitter20'

but I get the following error:
error TS2656: Exported external package typings file './node_modules/emitter20/index.d.ts' is not a module. Please contact the package author to update the package definition.

With other attempts, I have gotten a "cannot find module" error as well. I have tried many things at this point to no avail.
How do I define and import the type definition for the emitter20 module?
Thank you so much.

There is a lot of confusion around this topic because there are many different ways to write these definitions depending on your target audience. If the module is meant for consumption purely from node.js, this should suffice
export = class Emitter {
    on: (eventName: string, cb: (data?: any) => void) => void;
    trigger: (eventName: string, data?: any) => void;
}

Actually, I was assuming relative paths. See my updated example.

As @aluanhaddad noted, we need to know how this module is consumed. I am assuming here it is a node-only module.
I would recommend using export= on an identifier. so your module would look like:
// emitter20/index.d.ts

declare class Emitter {
    on: (eventName: string, cb: (data?: any) => void) => void;
    trigger: (eventName: string, data?: any) => void;
}

export = Emitter; // this exports a function that returns objects of type Emitter, and a type called Emitter

you would import this as:
import emitter20 = require("emitter20");
var emitter = new emitter20();
emitter.trigger("event");

@raineorshine
My above declaration introduces a global, to avoid this you can write:
use declare module 'emitter' {
    interface Emitter {
        on: (eventName: string, cb: (data?: any) => void) => void;
        trigger: (eventName: string, data?: any) => void;
    }
    export = Emitter;
}

@mhegazy I can't get your example to work without using a relative import.
import Emitter = require('./emitter); // OK,
import Emitter = require('emitter'); // Error

From the example above, emitter20 is an existing npm package. my sample assumes that you will be importing this from node_modules\emitter20. The index.d.ts should live next to index.js in the package.
declare module "emitter20" adds a new name ("emitter20") to the global namespace. generally polluting the global namespace is not advisable, though would work.

@mhegazy Ah, I see. So the non relative resolution works because of the index.d.ts? I see what you mean about polluting the global namespace with the name of the module, I was just trying to guard against using without importing.

if you are copying this declaration file locally, then you have to use module declaration (i.e. declare module "emitter20"  { .. ), and there is not another way. if this is an npm package we can do both, and not using module declarations in this context is the recommended approach.

@mhegazy Thank you for clarifying.

Thanks for your response! Unfortunately I am getting a different error now:
src/swap-manager.ts(38,19): error TS2339: Property 'manager' does not exist on type 'Emitter'.
src/swap-manager.ts(75,10): error TS2322: Type 'Emitter' is not assignable to type 'SwapManager'.
  Property 'manager' is missing in type 'Emitter'.

I have index.d.ts next to the index.js in the emitter20 project, which is npm linked to the current project, so it sees it as any other npm module.
I wonder if this has something to do with trying to extend SwapManaper with Emitter? I have heard that there is both a variable space and a type space with typescript.

@raineorshine could you post your current .d.ts file as well as swap-manager.ts?
And yes, TypeScript has a value space and a type space.

Sorry for the confusion. I've tried so many different versions from different people's suggestions and none of them have worked yet. Not wanting to give up on typescript. You would think creating type definitions for a canonical module require would be straightforward? Okay... back to the issue...
Current d.ts file:
declare namespace Emitter {
    export interface Emitter {
        on: (eventName: string, cb: (data?: any) => void) => void;
        trigger: (eventName: string, data?: any) => void;
    }
}

declare module 'emitter' {
    import E = Emitter.Emitter;
    export = E;
}

swap-manager.ts:
import IEmitter = require('emitter20')

export interface SwapManager extends IEmitter {
  manager: any;
}

export default function(): SwapManager {
  return new Emitter()
}

Also trying to work through it here, where @ivanz has also been valiantly trying to provide a solution! https://gist.github.com/raineorshine/33390aec8abc0ee403ee12c2caff4d89
Thanks for your help!

For one thing you have declared Emitter as an interface. Interfaces cannot be instantiated only implemented. Unfortunately the error message is a bit confusing. It is informing you that it cannot find a IEmitter. This is because the target of the new operator must be a value. Classes occupy an interesting place in the language because they are represent both a type and a value. If you change the declaration of Emitter from an interface to a class, you will get a different error, specifically the one you mention in your second to last post.

You are receiving this error specifically because of the return type you have specified for default. The function states that it will return  a SwapManager but it is defined as returning an Emitter. Since SwapManager has an extra property not present on Emitter you rightly get an error.

Try
import Emitter = require('emitter');

export class SwapManager extends Emitter {
  manager: any;
}
export default function(): SwapManager {
  return new SwapManager();
}

@raineorshine  Here is a working sample with type declarations for that module: https://github.com/ivanz/emitter20-typescript-types-sample
You can npm install && npm start to build and test it.

Can someone comment why does the below also work as an alternative way to avoid declare namespace and if it is actually meant to work (and not a bug/side-effect)?
Essentially there is both a namespace and a variable with name Emitter and the  module is exporting with export = Emitter;
declare module 'emitter20' {
    namespace Emitter
    {
        export interface IEmitter {
            on: (eventName: string, cb: (data?: any) => void) => void;
            trigger: (eventName: string, data?: any) => void;
        }

        export interface IEmitterFactory {
            (): Emitter.IEmitter;
        }
    }

    var Emitter : Emitter.IEmitterFactory;

    export = Emitter;
}

import * as emitter from 'emitter20';

var emitterInstance : emitter.IEmitter = emitter(); // works fine

Can someone comment why does the below also work as an alternative way to avoid declare namespace and if it is actually designed to to work that way (or is a bug/side-effect)?

Backwards compatibly reasons namespace came after module because of the confusion around that keyword.  One of the great mistakes of TypeScript in that it was decided before there was clear direction from TC39 on the way modules would work in ES6 and one of the main reasons the TypeScript team doesn't like getting near syntactical features which maybe addressed by TC39 in the future.

@kitsonk Sure - that explains exporting the namespace bit, but how about the clash(?) between the variable name (type) and the exported namespace? The module is exporting both a variable named Emitter of type Emitter.IEmitterFactory and a namespace Emitter?

In typescript declarations can "merge". an example of this is multiple declarations of the same interface, each adding a set of properties. another is merging a namespace with only types and a value. when using export = <identifier> you are exporting all meanings of this name (i.e. both the namespace Emitter and the value Emitter).
you can read more about this in http://www.typescriptlang.org/docs/handbook/declaration-merging.html

@raineorshine, has the original issue been resolved? or are you still running into issues?

@mhegazy I will try out your suggestions! Sorry for the delay. I am not a full-time developer so sometimes a couple days go by when I am at my other job.

@aluanhaddad Thank you, that works! I guess I just got tripped up on the error messages and didn't go back and take a closer look at why I was using interface instead of class. I am glad to have this issue as a resource in case I run into a similar problem again.
@ivanz Thanks for your help and persistence!

Glad to be of service.

:(
Now there are runtime errors:
swapManager.on('request', function (data) {
            ^

TypeError: swapManager.on is not a function

Why does a SwapManager instance not have the same methods as Emitter when it extends it?
import Emitter = require('emitter20')

export class SwapManager extends Emitter {
  manager: any;
}

console.log(new Emitter()) // { on: [Function], trigger: [Function] }
console.log(new SwapManager()) // SwapManager {}

Why does a SwapManager instance not have the same methods as Emitter when it extends it?

your implementation of emitter20 puts the methods on the instance and not the prototype. so the swapManager instance does not inherit it.
consider writing your emitter as:
   module.exports = (function () {
        function Emitter() {
            this.subscribers = [];
        }
        Emitter.prototype.on = function (eventName, cb) {
            this.subscribers.push({
                eventName: eventName,
                cb: cb
            });
        };
        Emitter.prototype.trigger = function (eventName, data) {
            this.subscribers
                .filter(function (subscriber) {
                return subscriber.eventName === eventName;
            })
                .forEach(function (subscriber) {
                subscriber.cb(data);
            });
        };
        return Emitter;
    }());

Because the actual code for emitter, in index.js, is a factory which returns an object literal. The value returned by it can be modeled with a class declaration to describe its type, but if you want to use the new operator and subclassing, you need to make Emitter a function which is meant to be newed, such a function would not return an object literal but would instead assign properties to this and not explicitly return anything. In other words the type declarations don't accurately describe the library they are typing. Now classes are not your only option there are lots of other patterns and TypeScript supports them. The key thing is, when you're writing a declaration filed from scratch you need to make sure that it matches the underlying code.

And that exactly why I modelled the typings as an exported variable with a defined interface :) On a further note - I just realised that this is your own NPM package you are trying to create typings for ( https://github.com/raineorshine/emitter20 ). Having just looked at your code:

You need to do what @mhegazy and @aluanhaddad said and implement you Emitter as a JS "class"
You are using ambient declarations (declare) in https://github.com/raineorshine/emitter20/blob/master/index.d.ts - that's only necessary if e.g. you writing typings for a 3rd party package outside of the code of the package
You need to add typings: 'index.d.ts' in package.json` to make the TS typings discoverable

Have a look at my attempt to explain on my blog: http://ivanz.com/2016/06/07/how-does-typescript-discover-type-declarations-definitions-javascript/

@mhegazy Okay... I never intended it to be a class. I started going that direction because of the suggestion to make SwapManager a class, but I guess we will have to retrace our steps a bit.
emitter20 is a factory with the intention to be used as a mixin on other objects. I want SwapManager to be a factory that returns an object mixed in with Emitter.

That is exactly why I modelled the typings as an exported variable with a defined interface :)
On a further note - I just realised that this is your own NPM package you are trying to create typings for ( https://github.com/raineorshine/emitter20 ). Having just looked at your code I want to make you aware that:

You are using ambient declarations (declare) in https://github.com/raineorshine/emitter20/blob/master/index.d.ts - that's only necessary if e.g. you writing typings for a 3rd party package outside of the code of the package. That is maybe what you are doing now in a test project where the package is installed. Don't know.
You need to add typings: 'index.d.ts' in package.json` to make the TS typings discoverable

Have a look at my attempt to explain on my blog: http://ivanz.com/2016/06/07/how-does-typescript-discover-type-declarations-definitions-javascript/
Regarind mixins: http://www.typescriptlang.org/docs/handbook/mixins.html

@raineorshine try something like this (assuming emitter is restored to the factory + interface as @ivanz  suggests:
export default function swapManager(): Emitter & { manager } {
    const emitter = new Emitter();
    emitter.manager = ......
    return emitter;
}

Here is a working sample with type declarations for that module: https://github.com/ivanz/emitter20-typescript-types-sample

It looks like you got it to work for a full-fledged class, which is a bit different than what I am going for. Here is the implementation that I am trying to write the correct type definition for:
export default function(): SomeType {
  const e = new Emitter()
  e.value = 10
  return e
}

I would like to maintain my implementation decisions and come up with a type definition that matches that.

@aluanhaddad
error TS2322: Type 'Emitter' is not assignable to type 'Emitter & { manager: any; }'.
  Type 'Emitter' is not assignable to type '{ manager: any; }'.
    Property 'manager' is missing in type 'Emitter'.

Because I'm adding the manager property after assigning to the variable a type assertion is required

Is there a workaround?

The simplest solution in this case since you are augmenting of value return to buy another function or constructor use a type assertion for example
return e as Emitter & { manager };

This is not exactly ideal, but since we are changing the value and hence its type by mutating it to add an additional property, it is a reasonable approach.

In general, when a module exports a factory function it is good practice to also export an interface which corresponds to the type it returns. When a module exports a class, this is often unecessary because a class is simultaneously a value and a type declaration.

Thanks @aluanhaddad. Here's what I got working:
import Emitter = require('emitter20')

export type SwapManager = Emitter & { manager }

export default function(): SwapManager {
  const swapManager = new Emitter() as SwapManager
  swapManager.manager = ...
  return swapManager
}

Thanks so much for everyone's help. I'm glad to have something that compiles and I am looking forward to getting many of the benefits of typescript from this point onward! I will be very cautious when I am using factories and modules.

(In the most respectful way I can, I just want to communicate that this has been a less user-friendly aspect of typescript. Hopefully any core devs reading this will take note and perhaps consider ways to absolve confusion around modules/interfaces/factories/classes/etc in future versions, even if it's just at the level of improving the error messages. Thanks!)

So, I am trying to import the swap-manager.ts file from my above comment.
swap-manager.ts:
import Emitter = require('emitter20')

export type SwapManager = Emitter & { manager }

export default function(): SwapManager {
  const swapManager = new Emitter() as SwapManager
  swapManager.manager = ...
  return swapManager
}

api.ts:
import SwapManager from './swap-manager'
export default function(swapManager: SwapManager): express.Router {
  const router = express.Router()
  ...
  return router
}

I get this error:
src/api.ts(34,38): error TS2304: Cannot find name 'SwapManager'.

Any ideas? Thanks.

You're importing the default export which is a value not a type. It depends on how you want to structure your code and what your intent is.
The following will work
import { SwapManager } from './swap-manager'; // imports the member with that name
import sw from  './swap-manager'; // imports the default export.

It's important to note that we're dealing with a lot of different and interrelated concepts here some of them are TypeScript specific and some are not.
We are using ES6 module syntax.
We are in a commonjs environment.
We are mixing classes and factories for ad-hoc extensibility.
We are using type aliases along with type aliases and classes to describe these constructs.

I suggest you study the interaction between types within the context of a single module to understand the typescript specific aspects independently. Consider what a class in JavaScript actually represents and how it represents a value and a type simultaneously. Consider the runtime and the semantics of the require function. Then examine the interaction between these things and how TypeScript maps these worlds together in a conceptual space.

Thanks @aluanhaddad. There are many interrelated concepts. I made the poor assumption that they would "just work" as they seem to do when I am coding just JS. Typescript requires some extra work I see to properly import values and types. I will try to have greater acceptance for this and take a more gradual learning approach than expecting I can start using everything right away. Thanks for your help!

@raineorshine glad to help.

@raineorshine any further discussion regarding this specific case would probably be best done elsewhere.

could anybody explain this on my simple example:
//commonjs-export-function.js
module.exports = function() {
    return 'func';
};

//commonjs-export-function.d.ts
declare function func(): string;
export = func;

//main.ts
import func from './commonjs-function';

console.log(func());

When I run tsc I get this error:
tsc main.ts && node main.js
main.ts(1,8): error TS1192: Module '"/Users/aleksandar/projects/typescript-playground/commonjs-function"' has no default export.

in main.js you need to use import func = require('./commonjs-function');


Landroid M500 (WR141E)

I tried to start your adapter and get the follow error:
host.rock64 | 2019-08-25 08:05:01.510 | info | Restart adapter system.adapter.worx.0 because enabled
-- | -- | -- | --
host.rock64 | 2019-08-25 08:05:01.509 | error | instance system.adapter.worx.0 terminated with code 1 ()
Caught | 2019-08-25 08:05:01.508 | error | by controller[0]: at startup (bootstrap_node.js:160:9)
Caught | 2019-08-25 08:05:01.508 | error | by controller[0]: at run (bootstrap_node.js:394:7)
Caught | 2019-08-25 08:05:01.507 | error | by controller[0]: at Module.runMain (module.js:611:10)
Caught | 2019-08-25 08:05:01.507 | error | by controller[0]: at Function.Module._load (module.js:445:3)
Caught | 2019-08-25 08:05:01.506 | error | by controller[0]: at tryModuleLoad (module.js:453:12)
Caught | 2019-08-25 08:05:01.506 | error | by controller[0]: at Module.load (module.js:494:32)
Caught | 2019-08-25 08:05:01.505 | error | by controller[0]: at Object.Module._extensions..js (module.js:586:10)
Caught | 2019-08-25 08:05:01.505 | error | by controller[0]: at Module._compile (module.js:549:28)
Caught | 2019-08-25 08:05:01.504 | error | by controller[0]: at Object.runInThisContext (vm.js:97:10)
Caught | 2019-08-25 08:05:01.504 | error | by controller[0]: at createScript (vm.js:56:10)
Caught | 2019-08-25 08:05:01.504 | error | by controller[0]: SyntaxError: Unexpected token ...
Caught | 2019-08-25 08:05:01.503 | error | by controller[0]: ^^^
Caught | 2019-08-25 08:05:01.503 | error | by controller[0]: ...options,
Caught | 2019-08-25 08:05:01.501 | error | by controller[0]: /opt/iobroker/node_modules/iobroker.worx/main.js:65

Do you have any ideas what it could be?
Node.js: v6.17.1
NPM: 3.10.10

Yes I know. You have to update node to min 8.xx

@MeisterTR your hint was the right. update to 8.16.1 and it works.


:slot="xxx"  not worked in v-for loop

In my code, a component is registered with different slot names calculated in a v-for loop as below:
//template

//register component and init instance in js

and below code works fine  :
//in html
<slot-parent :items="items">
    //insert every slot manually works fine

1

2

3

4

5

</slot-parent>

but when I changed the code as below, slot can't be inserted into the component view,
//in html
<slot-parent :items="items">
   // insert slots with v-for loop, slot names are calculated by item

{{item}}

</slot-parent>

is the way I design this component wired ? or still there is any other way to solve the problem ?
I understand partial and component can be used in the slot-parent to do the same thing, but how about just do this with slot, since slot content can be written obviously in html file.
By the way, same problem found in Vue forum
http://forum.vuejs.org/topic/3448/dynamic-slot-names-not-working-anymore-in-new-version/5

This has been fixed in 1.0.18.

Thanks for the reply.
I tested below code in 1.0.18, not work yet.
I will send you a live demo link later since typing on mobile makes me crazy.
//in html

// insert slots with v-for loop, slot names are calculated by item
{{item}}

@yyx990803 Its certainly reproducing:
https://jsfiddle.net/fhfcz8rd/1/

@fullfs  Thanks for your reproducing! I dont't have to do it again.

So, after some more investigation, I don't think we will be implementing this. This means slot attributes must be static and we will be adding a warning for it. (but  names can be dynamic)
The reason is a bit complicated: consider <slot>s inside a conditional v-if block, or inside v-for, they may be destroyed and re-created again. This means they have to compile-on-demand to ensure correct lifecycle hooks being called on components inserted into slots - thus we cannot pre-compile the inserted content and simply distribute them later.
Another consideration is that a rendered v-for list needs to move the DOM nodes when the data changes - if they are moved into other places, v-for cannot ensure the correct behavior.
This does rule out the use case you demonstrated; however there will be other ways to achieve the same end result. You will probably have to rely on partials/components for now. But we will see if we can come up with something that allows you to have the markup right in the template.

@anxolin check out https://jsfiddle.net/simplesmiler/5p420nbe/

Damn, I would like to make a TableLayout component that takes the number of rows and columns as props, creates a grid, and then being able to slot in components that get placed in the right cells based on row and column value props.
Not sure how to do this now.

v2.5.18 可以了  slot可以在v-for 下直接使用了


Bug in PathItem

What happens?

Return type of /$path is sometimes PathItem instead of Array of PathItem
Regex of  PathItem does not allow SML content.

How should it be fixed?
Describe which change will fix the problem.
...

[x] I have signed the required Developer Certificate of Origin (DCO) already.

PR has been approved and merged.


obo graph json in berkeleydb?

Just throwing this out there ...
You could possibly convert the ontology to OBO graph (json) and load into berkeleydb.

made https://github.com/cmungall/semantic-sql/discussions for this kind of thing
see also https://www.sqlite.org/json1.html


added missing slash in URLs (setup summary output)

Signed-off-by: Zisis Lianas<EMAIL_ADDRESS>

Thanks :+1:


A question about navigation

When looking at the keyboard shortcuts help page in phetch, I can't help wondering: Is there a reason we can't lose the Ctrl- part of many of the commands?
If we use the left/right/up/down arrows to move the cursor, and use numbers (or Enter) to select a link, couldn't we just choose g for “go to”, b for “bookmarks”, and so on: i.e., losing the Ctrl- part entirely (except for ^C, perhaps), thus only having to press a single key in order to indicate an action?

Yes, I think that's probably the more obvious way to do things. But re-reading that help page, I think I left out the most important keyboard shortcut: you are in search mode by default. I tend to use this a lot, typing a link's name to jump to it and moving between matches with ctrl-n and ctrl-p instead of arrow keys.
But vim and lynx do it the way you suggest, with / to trigger the incremental search and single characters representing other commands. So right now I am thinking that I'll change it so you're in "command mode" by default, where you can just type g or s like you suggest to activate commands, and you'll have to type / to enter search mode.

search mode

Ah, so that is why characters tend to pile up in the lower left corner. I didn't realise it was search mode. I feel a little sheepish now... :wink:
But I like your idea of being in command mode by default and then using / to enter search mode. That would be easy to remember.

No no, the UI shouldn't be a puzzle. It's my fault for making it so non-obvious.
I've switched it so it's in "command mode" by default now, so g will go to a url and help is h. But ctrl- also works, so ctrl-g and ctrl-h do the same things.
For the search, / or f/ctrl-f will launch the incremental searcher now. I think it makes a lot more sense and is easier to explain this way, since now the keyboard shortcuts page tells more of the whole picture.
I just pushed out v0.1.3 with these changes, let me know if you run into any issues or have any more ideas! Thanks again!

Fantastic, thanks!


note

Suggestion - I see all projects has ".classpath",".project", ".settings" and ".springBeans" etc.., files are present, but when we're importing it to STS / Eclipse it some times gives compilation error. Because since we may've different class-path setting that yours. so to fixed this

You could remove this by doing: mvn clean and mvn eclipse:clean so that it wont appear in your commit.
You need to manually remove this files as these file should never get committed as a good practice.

Please let me know your suggestions on this. Thank you..

Thanks for the suggestion - I've been considering doing this. I wouldn't necessarily say it's good practice - it depends on some circumstances, but overall I agree - especially if it's causing problems. What is the actual compilation error you're seeing?
Cheers,
Eugen.


why there aren't webpack.config.dev.js and webpack.config.prod.js files in the config folder?

I want to use the CSS module for adding some CSS style to my component. I used "npm run eject" command, but in the config folder, I couldn't find webpack.config.dev.js and webpack.config.prod.js files. Of course, I'm using the latest version of reactjs.

I want to use the CSS module for adding some CSS style to my component. I used "npm run eject" command, but in the config folder, I couldn't find webpack.config.dev.js and webpack.config.prod.js files. Of course, I'm using the latest version of reactjs.

Solution: you don’t need to change anything in those files if you’re using a new version of react it automatically comes with that feature. All you need to do is rename the CSS file with [yourFileName].module.css and it should work!

Solution: you don’t need to change anything in those files if you’re using a new version of react it automatically comes with that feature. All you need to do is rename the CSS file with [yourFileName].module.css and it should work!

Thanks Friend! I have found it already but thanks a lot!

it work great


warmup epochs

please any one can clarify:

what is the warmup epochs ?
when should I use it ?

thanks

Hi,
As I understand for the projects I have done using this repository I use "warmup" initially to let a model adjust to a new dataset. It gets talked about in some other issues. Basic pipeline has 2 steps, first is to run training with warmup for 3-5 epochs initially to let it adjust (you can save those weights), then once it finishes you can use those weights to do standard training. Hope that helps a bit.


fix: input grow on location search

Tested on Chrome and Firefox

lgtm 👍

tailwind rounded-full does not work as expected when using rounded-t-full, it changes the corner radius which leads to weird looking changes in the input field.


pokeapi Android wrapper

Easy to use in Android apps, based on retrofit and rxAndroid. For this moment, Pokemon and PokemonDetail from version v1 GETs are available. Furthermore, SpriteGET was implemented as feature: you can use it to represent better your pokes. I can also create wiki page how to use it.

This don't belong to this project look at #11.
make a own repo for your project and put it in the documentation.
have you read about the v1 deprecation?
you should try to write functions for v2.
you could run a local version for testing.

Hey @Marchuck thanks for your contribution, but as @nimaje says, this should exist in a separate repository that we can link to, not in the main repository. :)

Hello folks, thank for your reply. For now, I've improved wrapper for V1 (available here: https://github.com/Marchuck/PokeAPI-AndroidSDK). Sooner or later, I will push new release of V2 wrapper. Peace!


TypeScript mixin extends other mixin: inconsistent “conflicting declarations” error

TypeScript Version<EMAIL_ADDRESS>Search Terms:
mixin extends mixin
mixin conflicting declarations
mixin base contraint
Summary
I want to write two mixin classes, Foo and Bar. Bar requires access to the protected interface of Foo. Therefore I use TS2.8 conditional types to extract the type of a Foo class and use this type as a generic constraint for the Bar mixin's Base class.
Unfortunately, this causes mysteriously inconsistent "conflicting declaration" errors.  The inconsistency suggests this is a bug instead of an intended type warning.
Code
class BaseClass {/* ... */}

/* Type error highlighted on "Composed" */
class Composed extends BarMixin(FooMixin(BaseClass)) {}

type Constructor<I = {}> = new (...args: any[]) => I;

interface EmptyInterface {}

/** Mixin */
function FooMixin<C extends Constructor>(Base: C) {
    return class extends Base {
        private _referenceToEmptyInterface: EmptyInterface = {}; // Causes the error.  Why?
        private _fooPrivate: number = 0; // Does not cause an error.  Why not, given the above?
        protected _fooProtected: number = 0;
    }
}

/** Type of class that creates instances of type Foo */
type FooConstructor = typeof FooMixin extends (a: Constructor) => infer Cls ? Cls : never;

/** Mixin that can only extend subclasses of Foo */
function BarMixin<C extends FooConstructor>(Base: C) {
    return class extends Base {
        barMethod() {
            // We require `Base` to implement `Foo` because we need access to protected `Foo` properties.
            this._fooProtected++;
        }
    }
}

Expected behavior:
No errors.
Actual behavior:
index.ts(4,7): error TS2415: Class 'Composed' incorrectly extends base class 'BarMixin<{ new (...args: any[]): FooMixin<typeof BaseClass>.(Anonymous class); prototype: FooMixi...'.
  Type 'Composed' is not assignable to type 'BarMixin<{ new (...args: any[]): FooMixin<typeof BaseClass>.(Anonymous class); prototype: FooMixi...'.
    Property '_referenceToEmptyInterface' has conflicting declarations and is inaccessible in type 'Composed'.

Playground Link   (will not work until the playground is updated to TS2.8)
Related Issues:
I asked on StackOverflow: https://stackoverflow.com/questions/49458031/

Simplified repro:
type Constructor = new (...args: any[]) => {};

const Mixin1 = <C extends Constructor>(Base: C) => class extends Base { private _fooPrivate: {}; }

type FooConstructor = typeof Mixin1 extends (a: Constructor) => infer Cls ? Cls : never;
const Mixin2 = <C extends FooConstructor>(Base: C) => class extends Base {};

/* Type error highlighted on "Composed" */
class Composed extends Mixin2(Mixin1(Object)) {}


ProxyBroker 'freeze' (don't exit) if no limit specified

I'm developing some application that constantly fetching API of specified sites.
This sites have throttling on this API, but I need to fetch it really frequent.
I found your ProxyBroker and this stuff is really great, but it's lacking some functionality in my particular case.
I need mass of proxies to make, in ideal, every API call from different address.
I made some some experiments with ProxyBroker and here is what I found:

'serve' mode - can't use it cuz it's rotating proxies really slowly, I cannot find any settings to make rotation faster and I'm newb in Python to edit code by myself;
I found a walkaround - I can stream ProxyBroker output to redis sorted set and use it by my puller workers, BUT ProxyBroker 'freezing' without setting limit (in my case ~450 proxies). I can walkaround this too by adding a timestamp to each found proxy and checking 'how fresh is last proxy', if it's for example 10 secs old - restart ProxyBroker.

Looks like ProxyBroker have internal list of sites where it grabbing proxies, and printing every found and tested proxy to stdout, when it's exhausted all this sites - it simply stops and not exits.
Can you add functionality to 'start again after all sites parsed'? Or simply exit.

Making more tests right now and looks like it don't appear if 'short type list' specified (like HTTP only).

Nope ...
I can confirm it happens all the time for me.
Need some 'versions' report?
I'm using ProxyBroker from pip3.

I can confirm the same issue. If I use the grabber feature and just try and pull a list of proxies without setting a limit, proxybroker makes a list but never exists or closes itself out. i.e., "proxybroker grab --outfile ./proxies.txt"  Since proxybroker usually grabs around 9,000 proxies total, my work around has been to set of limit of 8500 results. i.e., "proxybroker grab --limit 8500 --outfile ./proxies.txt"


SPI Communication with axiom

Dear TouchNetix Team,
I am able to read the data in polling mode from axiom using SPI communication, but overflow bit is set. So I want to read data in interrupt mode.
For interrupt mode, I configured the interrupt pin as input with internal pull up but I am not getting the active low interrupt signal from axiom. Kindly help to get the data through interrupt.

What are the hardware dependency for IRQ pin?
What will be the communication packets required to send using SPI for getting the reports through interrupt from axiom?

Thanks in advance.
Jogender Kumar

Assigned to @Jimmy-Cameron as he is the expert when it comes to the bridge firmware.
From the aXiom's perspective, all that is required from the IRQ pin is an external pullup. Our documentation suggests a value of 1kOhm to 10kOhm is required. What is the value of the internal pull up resistor?
Could you also use a logic analyser or oscilloscope on the IRQ signal to confirm the level please? Could you also confirm the SPI clock speed you are using?
When the IRQ pin is asserted, you need to issue a u34 read as this is where all the reports are generated. It sounds like you are already doing this if you are seeing that the overflow bit is being set. To get the bridge to automatically read reports, the bridge is put into proxy mode, when in proxy mode, I believe this code is run to create the u34 read to get the report contents from the aXiom device.
Best Regards, Mark

@marksat

IRQ pin external pullup with 3.3K register.
SPI speed is 3.5 MHz.
IRQ signal level 3.3V.
low level trigging used for sense interrupt.

Please  suggest how to  read touch report on interrupt. if possible share the sample code for the same.

@jogender2974 your setup sounds like it is OK. The part that sounds like it is not working is that the IRQ is not generating interrupts in your system.
Can you confirm the value on the nIRQ signal? If it is low and your system is not performing a u34 read, then that would indicate that the interrupt is not configured correctly. Not all systems support level triggered interrupts on all pins, could you consult with your datasheet to confirm?
You could try to configure the system to use edge triggered interrupts. However, there is the possibility that when your system starts up and configures the interrupt, that it would have already missed the edge. What you would do in this case is is perform a dummy u34 read after configuring the edge triggered interrupt:
void init(void)
{
    status = init_axiom_falling_edge_triggered_interrupt();
    if (status == SUCCESS)
    {
        // Perform dummy u34 read to clear the fifo. This will cause
        // the IRQ signal to deassert (rising edge) and when the next
        // report is ready, IRQ will be asserted (falling edge)
        (void) axiom_read_u34();
    }
}

On our axutils GitHub repo, you can see how we configure interrupts and how the reports are read in the axrpt.py script. The script will only work with interrupts on a RPi. See the main_loop_interrupts function on interrupt configuration. We also perform a dummy read as per my suggestion above.

Hi @jogender2974 I'll jump in here,
The method you have gone with is the one we would have suggested to use so I see no problems there. In fact that is the exact method that the AXPB009 uses; each time the main loop is executed it will check the state of the IRQ signal and read a report if it is asserted.
The AXPB009 has relatively few tasks to complete for every iteration of the main loop. If your application regularly performs some time intensive processing, it is very likely that for any given usage a new report will be created before the previous one has been read. This will lead to the report becoming stale and the overflow flag being set. This scenario is much more likely to happen in a single threaded application, if your device is using an RTOS I would expect the frequency of this issue to be reduced.
I think the approach you have chosen is acceptable. If you are unable to read the reports from aXiom at a sufficient rate, you could disable some reports that you do not require. This would save you wasting time reading a report just to disregard it straight away.

@Jimmy-Cameron
Thanks for your valuable response.
I have one more query if we sense the interrupt in low level triggering( "as suggested in document ") the nIRQ signal continuously  asserted low for longer durations.
We captured in logic analyzer and found that pin was continuously low for more than 1s or even sometimes 35s also observed and was getting only u01 reports while u41 also enable.
Best Regards
Jogender Kumar

@jogender2974 feel free to share your logic captures with us as we will have a look. If the nIRQ signal is constantly low, it would indicate that there are more reports to be read.
What interval period do you have configured for your u01 reports? We typically configure u01 reports for 1 per second, but this can be configured to go slower or as fast as once per 100ms.


[Question/Doubt] Handling Server Error using custom IMobileServiceSyncHandler - Xamarin Forms

I have implemented the Azure - Offline Sync based on the documentation / Sample provided by Microsoft https://github.com/Azure/azure-mobile-apps-quickstarts/blob/master/client/xamarin.forms/ZUMOAPPNAME/TodoItemManager.cs in my Xamarin Forms Application.
In the sample / documentation provided, they are using the default Service Handler.
// Simple error/conflict handling. A real application would handle the various errors like network conditions,server conflicts and others via the IMobileServiceSyncHandler.
Since I need to implement a retry logic for 3 times if the Pull / Push fails. As per the documentation I have created a custom Service Handler(IMobileServiceSyncHandler).
Please find my code logic here.
public class CustomSyncHandler : IMobileServiceSyncHandler
{
    public async Task<JObject> ExecuteTableOperationAsync(IMobileServiceTableOperation operation)
    {
        MobileServiceInvalidOperationException error = null;
        Func<Task<JObject>> tryExecuteAsync = operation.ExecuteAsync;

        int retryCount = 3;
        for (int i = 0; i < retryCount; i++)
        {
            try
            {
                error = null;
                var result = await tryExecuteAsync();
                return result;
            }
            catch (MobileServiceConflictException e)
            {
                error = e;
            }
            catch (MobileServicePreconditionFailedException e)
            {
                error = e;
            }
            catch (MobileServiceInvalidOperationException e)
            {
                error = e;
            }
            catch (Exception e)
            {
                throw e;
            }

            if (error != null)
            {
                if(retryCount <=3) continue;
                else
                {
                     //Need to implement
                     //Update failed, reverting to server's copy.
                }
            }
        }
        return null;
    }

    public Task OnPushCompleteAsync(MobileServicePushCompletionResult result)
    {
        return Task.FromResult(0);
    }
}

But I am not sure how to handle / revert server copy in case all the 3 retry failed.
In the TODO sample they where reverting it based on the MobileServicePushFailedException. But which is available when we implement IMobileServiceSyncHandler. More over if we include custom IMobileServiceSyncHandler it wont execute the code after PushAsync / PullAsync. Even the try catch wont fire in case any exception.
try
        {
            await this.client.SyncContext.PushAsync();

            await this.todoTable.PullAsync(
                //The first parameter is a query name that is used internally by the client SDK to implement incremental sync.
                //Use a different query name for each unique query in your program
                "allTodoItems",
                this.todoTable.CreateQuery());
        }
        catch (MobileServicePushFailedException exc)
        {
            if (exc.PushResult != null)
            {
                syncErrors = exc.PushResult.Errors;
            }
        }

        // Simple error/conflict handling. A real application would handle the various errors like network conditions,
        // server conflicts and others via the IMobileServiceSyncHandler.
        if (syncErrors != null)
        {
            foreach (var error in syncErrors)
            {
                if (error.OperationKind == MobileServiceTableOperationKind.Update && error.Result != null)
                {
                    //Update failed, reverting to server's copy.
                    await error.CancelAndUpdateItemAsync(error.Result);
                }
                else
                {
                    // Discard local change.
                    await error.CancelAndDiscardItemAsync();
                }

                Debug.WriteLine(@"Error executing sync operation. Item: {0} ({1}). Operation discarded.", error.TableName, error.Item["id"]);
            }
        }
    }

Note
In my application I am only trying to achieve retry for 3 time in case any server error. I am not looking for to resolve conflicts. Thant is the reason I haven't added the code for the same.
If someone came across similar issues and resolved it please help.
Stez.

Hi @stezma !
If I understand you right, you can access push context results, including errors in OnPushCompleteAsync callback. MobileServicePushCompletionResult has Errors property, so you can revert to server's copy. If you want to wait for 3 retries you can just sync through your CustomSyncHandler instance variables.
Best,
Murat

Sorry .. I didn't get the second point, you mentioned about the retry. What does it mean "If you want to wait for 3 retries you can just sync through your CustomSyncHandler instance variables." could you please elaborate the point?
What change I need to make in my CustomSyncHandler  to make it work.?

@stezma
After reading this article, I think that is not a good solution, cause potentially ExecuteTableOperationAsync can be called concurrently for each row. But you can find how to revert to server copy in that article. Hope this helps!

Hi @stezma
Did you manage to implement the retry logic?

Closing this issue, if you'll have any questions please feel free to reopen it.


Py3 getxattr throws TypeError

I think it's the same as #24
fuse.py  line 558
def getxattr(self, path, name, value, size, *args):
        ret = self.operations('getxattr', path.decode(self.encoding),
                                          name.decode(self.encoding), *args).encode(self.encoding)

seems to solve it.

Sorry for the super long delay. I had made a commit awhile ago referencing this issue, but I didn't update this issue.
Right now both getxattr and setxattr expect you to provide it bytes so the encoding process is up to you. The names are automatically encoded using the provided encoding which is why #24 was breaking.
@eestrada we should discuss/research what should be encoded and what should be bytes. Part of my changes how the library functioned was due to the stricter nature of Python3. However this brought about the issue as discussed in #2

It seems that this specific case has been addressed and I will now close this. We will continue to address the larger issue of Unicode v. Bytes in issue #2.


Redundant Docker files? Or intentional?

It seems that some of the repositories have redundant but different Dockerfile files.  Is this intentional?  For instance, carts has https://github.com/microservices-demo/carts/blob/master/Dockerfile and https://github.com/microservices-demo/carts/blob/master/docker/carts/Dockerfile which are quite different.
Is the top-level one meant for developers making modifications to the code while the nested one is meant for publishing to Docker Hub?  If so, why don't all repositories have a top-level Dockerfile? For instance, orders does not have one.
Thanks,
Roger Berlind

@rberlind Hello again,
This particular file on orders appears to be left over from the initial build, almost a year ago.

Thanks.  I think there are several cases of top-level Docker files that possibly should be removed to avoid confusion.

@rberlind if there are particular repos you want to target, please open issues on those repos and then we can close them as PRs are submitted.


Problems with checkDependecies

Hi @mvankessel-EMC, I get some strange output when I create the repo object. I also get a message saying that PaRe can't access the internet but I am able to download files as shown in the reprex below.
Subjectively speaking I liked the old output from checkDependencies much better as it provided a really nice table that I could copy and paste into github with both the package names as well as data about the packages that were not whitelisted. Is that output still available in PaRe? I'm using PaRe_0.1.7
Here is my reprex.
repo <- PaRe::Repository$new(path = "/Users/adamblack/darwin/CDMConnector")
#> Warning in readLines(file.path(repoPath, filePath)): line 3 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 4 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 5 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 6 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 7 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 8 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 9 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 10 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 11 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 12 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 13 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 14 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 15 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 16 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 17 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 18 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 19 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 20 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 21 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 22 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 23 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 24 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 25 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 26 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 27 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 28 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 29 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 30 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 31 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 32 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 33 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 34 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 35 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 36 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 37 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 38 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 39 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 40 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 41 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 42 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 43 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 44 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 45 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 46 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 47 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 48 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 49 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 50 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 51 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 52 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 53 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 54 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 55 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 56 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 57 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 58 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 59 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 60 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 61 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 62 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 63 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 64 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 65 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 66 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 67 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 68 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 69 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 70 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 71 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 72 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 73 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 74 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 75 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 76 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 77 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 78 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 79 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 80 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 81 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 82 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 83 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 84 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 85 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 86 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 87 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 88 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 89 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 90 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 91 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 92 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 93 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 94 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 95 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 96 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 97 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 98 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 99 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 100 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 101 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 102 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 103 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 104 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 105 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 106 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 107 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 108 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 109 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 110 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 111 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 112 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 113 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 114 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 115 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 116 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 117 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 118 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 119 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 120 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 121 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 122 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 123 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 124 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 125 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 126 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 127 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 128 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 129 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 130 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 131 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 132 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 133 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 134 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 135 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 136 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 137 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 138 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 139 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 140 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 141 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 142 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 143 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 144 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 145 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 146 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 147 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 148 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 149 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 150 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 151 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 152 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 153 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 154 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 155 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 156 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 157 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 158 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 159 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 160 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 161 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 162 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 163 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 164 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 165 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 166 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 167 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 168 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 169 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 170 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 171 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 172 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 173 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 174 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 175 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 176 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 177 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 178 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 179 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 180 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 181 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 182 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 183 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 184 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 185 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 186 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 187 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 188 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 189 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 190 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 191 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 192 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 193 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 194 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 195 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 196 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 197 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 198 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 199 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 200 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 201 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 202 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 203 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 204 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 205 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 206 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 207 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 208 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 209 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 210 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 211 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 212 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 213 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 214 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 215 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 216 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 217 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 218 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 219 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 220 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 221 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 222 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 223 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 224 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 225 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 226 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 227 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 228 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 229 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 230 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 231 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 232 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 233 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 234 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 235 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 236 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 237 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 238 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 239 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 240 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 241 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 242 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 243 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 244 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 245 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 246 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 247 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 248 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 249 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 250 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 251 appears to
#> contain an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): incomplete final line
#> found on '/Users/adamblack/darwin/CDMConnector/R/sysdata.rda'
PaRe::checkDependencies(repo)
#> Could not connect to the internet, online hosted whitelists will be ignored.
#> The following are not permitted: dplyr, DBI, checkmate, magrittr, dbplyr, pillar, cli, purrr, rlang, tidyselect, readr, glue, waldo, methods, withr, lifecycle, jsonlite, stringr, fs, generics, tidyr
#> Please open an issue here: https://github.com/mvankessel-EMC/DependencyReviewerWhitelists/issues
#>       package version
#> 1       dplyr       *
#> 2         DBI   0.3.0
#> 3   checkmate       *
#> 4    magrittr       *
#> 5      dbplyr       *
#> 6      pillar       *
#> 7         cli       *
#> 8       purrr       *
#> 9       rlang       *
#> 10 tidyselect       *
#> 11      readr       *
#> 12       glue       *
#> 13      waldo       *
#> 14    methods       *
#> 15      withr       *
#> 16  lifecycle       *
#> 17   jsonlite       *
#> 18    stringr       *
#> 19         fs       *
#> 20   generics       *
#> 21      tidyr       *

# confirm that internet access is working
readr::read_csv("https://people.sc.fsu.edu/~jburkardt/data/csv/faithful.csv")
#> Rows: 272 Columns: 3
#> ── Column specification ────────────────────────────────────────────────────────
#> Delimiter: ","
#> dbl (3): Index, Eruption length (mins), Eruption wait (mins)
#>
#> ℹ Use `spec()` to retrieve the full column specification for this data.
#> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> # A tibble: 272 × 3
#>    Index `Eruption length (mins)` `Eruption wait (mins)`
#>    <dbl>                    <dbl>                  <dbl>
#>  1     1                     3.6                      79
#>  2     2                     1.8                      54
#>  3     3                     3.33                     74
#>  4     4                     2.28                     62
#>  5     5                     4.53                     85
#>  6     6                     2.88                     55
#>  7     7                     4.7                      88
#>  8     8                     3.6                      85
#>  9     9                     1.95                     51
#> 10    10                     4.35                     85
#> # ℹ 262 more rows

Created on 2023-06-08 with reprex v2.0.2

So the warnings are from readLines.

warn logical. Warn if a text file is missing a final EOL or if there are embedded nuls in the file.

From here.
It seems to be a file encoding issue. You can set it using options.

encoding to be assumed for input strings. It is used to mark character strings as known to be in Latin-1 or UTF-8: it is not used to re-encode the input. To do the latter, specify the encoding as part of the connection con or via options(encoding=): see the examples. See also ‘Details’.

I'm a little confused as to why it throws this message:

Could not connect to the internet, online hosted whitelists will be ignored.

I'll have a look.

Yep I'm using the main branch in the darwin-dev org. I'll try with 1.8.
Should I be worried about the encoding/embedded nulls error?

Here is my reprex using 1.8
library(PaRe)
sessionInfo()
#> R version 4.2.2 (2022-10-31)
#> Platform: x86_64-apple-darwin17.0 (64-bit)
#> Running under: macOS Big Sur ... 10.16
#>
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
#>
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#>
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base
#>
#> other attached packages:
#> [1] PaRe_0.1.8
#>
#> loaded via a namespace (and not attached):
#>  [1] styler_1.9.1       tidyselect_1.2.0   xfun_0.39          remotes_2.4.2
#>  [5] purrr_1.0.1        pak_0.5.1          V8_4.2.2           vctrs_0.6.1
#>  [9] generics_0.1.3     htmltools_0.5.4    yaml_2.3.7         utf8_1.2.3
#> [13] rlang_1.1.0        R.oo_1.25.0        pillar_1.9.0       glue_1.6.2
#> [17] withr_2.5.0        R.utils_2.12.2     DiagrammeRsvg_0.1  RColorBrewer_1.1-3
#> [21] R.cache_0.16.0     lifecycle_1.0.3    stringr_1.5.0      lintr_3.0.2
#> [25] R.methodsS3_1.8.2  visNetwork_2.1.2   htmlwidgets_1.6.2  evaluate_0.20
#> [29] rsvg_2.4.0         knitr_1.42         callr_3.7.3        fastmap_1.1.1
#> [33] ps_1.7.2           rex_1.2.1          DiagrammeR_1.0.9   curl_5.0.0
#> [37] fansi_1.0.4        Rcpp_1.0.10        backports_1.4.1    checkmate_2.1.0
#> [41] desc_1.4.2         jsonlite_1.8.4     fs_1.6.1           digest_0.6.31
#> [45] stringi_1.7.12     processx_3.8.0     dplyr_1.1.1        rprojroot_2.0.3
#> [49] cli_3.6.1          tools_4.2.2        magrittr_2.0.3     lazyeval_0.2.2
#> [53] tibble_3.2.1       crayon_1.5.2       pkgconfig_2.0.3    xml2_1.3.3
#> [57] cyclocomp_1.1.0    reprex_2.0.2       rmarkdown_2.20     rstudioapi_0.14
#> [61] R6_2.5.1           igraph_1.3.5       git2r_0.32.0       compiler_4.2.2
repo <- Repository$new(path = "/Users/adamblack/darwin/CDMConnector")
#> Warning in readLines(file.path(repoPath, filePath)): line 3 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 4 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 5 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 6 appears to contain
#> an embedded nul
#> Warning in readLines(file.path(repoPath, filePath)): line 7 appears to contain

#### .... lots more of these warnings....
#> Warning in readLines(file.path(repoPath, filePath)): incomplete final line
#> found on '/Users/adamblack/darwin/CDMConnector/R/sysdata.rda'
checkDependencies(repo)
#> Could not connect to the internet, online hosted whitelists will be ignored.
#> The following are not permitted: dplyr, DBI, checkmate, magrittr, dbplyr, pillar, cli, purrr, rlang, tidyselect, readr, glue, waldo, methods, withr, lifecycle, jsonlite, stringr, fs, generics, tidyr
#> Please open an issue here: https://github.com/mvankessel-EMC/DependencyReviewerWhitelists/issues
#>       package version
#> 1       dplyr       *
#> 2         DBI   0.3.0
#> 3   checkmate       *
#> 4    magrittr       *
#> 5      dbplyr       *
#> 6      pillar       *
#> 7         cli       *
#> 8       purrr       *
#> 9       rlang       *
#> 10 tidyselect       *
#> 11      readr       *
#> 12       glue       *
#> 13      waldo       *
#> 14    methods       *
#> 15      withr       *
#> 16  lifecycle       *
#> 17   jsonlite       *
#> 18    stringr       *
#> 19         fs       *
#> 20   generics       *
#> 21      tidyr       *

Created on 2023-06-09 with reprex v2.0.2

I think I found the issue, internally it references to a whiteList data frame, but not as that. It should reference the PaRe specific one like: PaRe::whiteList.
Could you install the following version:
remotes::install_github("darwin-eu-dev/PaRe@is37")

I've changed the behavour of checkDependencies to just throw the error or warning encountered as a message, could you try again, and report what it says?


Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 7 (0.0%)  changed or added relevant lines in 1 file are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.02%) to 20.583%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

fabrictestbed_extensions/fablib/interface.py
0
7
0.0%

Files with Coverage Reduction
New Missed Lines
%

fabrictestbed_extensions/fablib/interface.py
2
17.42%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
827

Relevant Lines:
3630

💛  - Coveralls


Implemented the TO Client for the /servers endpoint

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/1310/
Test PASSed.


Add syndaemon configuration options

The command syndaemon temporarily disables keyboard when you're typing, which prevents messing up with the text by relocating cursor and accidentally clicking things. E.g.:
syndaemon -i 4 -d -t -K

I propose a configuration option under services.xserver.synaptics, or maybe a separate one to configure syndaemon for NixOS.

@sindikat would you be interested in making this change? if you want we can guide you into NixOS.

@nbp, I'd love to be a NixOS contributor :). But I'm not sure I have time right now. As this is not a pressing improvement, I'll message you once I have some time and desire to do that. Is that alright?

@sindikat I think this would be fine, I will flag this bug as good-first-bug.
The idea of this bug would be to create a new module, as described in the manual [1] and to register a systemd job [2] which starts the syndaemon program which is already packaged as part of xorg.xf86inputsynaptics.
This module can be tested manually by rebuilding the configuration of NixOS, and checking it it appears in the list of systemd services [3].
[1] http://nixos.org/nixos/manual/index.html#sec-writing-modules
[2] http://nixos.org/nixos/options.html (search for systemd.services)
[3] http://nixos.org/nixos/manual/index.html#sec-systemctl

triage: has this been fixed?

@RostakaGmfun I can’t find such a module either (at least nothing that references the syndaemon command). Feel free!
If you need help, you can ping me on freenode, where I have the same user name. Or ask in #nixos.

@Profpatsch just wondering if this is still required as syndaemon is deprecated and replaced by libinput in 18.03. libinput seems to have its own "disable-while-typing" option.

Hm, if libinput is the standard for NixOS and it supports that, then we shouldn’t add extra functionality to synaptic, yeah.


Error: "ApplicationID does not exist"

I can't seem to get the sample to work and need some help. I followed the instructions to setup ngrok and configured a new application in the Developer Center to get OneDrive personal working.
Clicking OneDrive Personal to login threw an error saying that a redirect url doesn't match settings. So I after reading through the API docs a bit I tried entering: http://localhost:52026/Account/Redirect as a RedirectURL on the API settings tab in Developer Center. This let's me authenticate successfully and I am taken to WebHooks view.
Clicking "Create Subscription" throws an exception.
I added some try/catch blocks to SubscriptionController and was able to determine that the first API call that is made on line 39 throws a OneDriveException with an Error.code of itemNotFound and an Error.Message of "The Application ID does not exist".
I've triple-checked that the ida:MsaAppId appSettings value matches the one from the Microsoft account Developer Center. I've even tried deleting the application, recreating it. Same error no matter what I try.
It would really help if the documentation included examples of what to enter for "Target Domain", "JWT Reissuing", and Redirect URL values in application settings.

Worked on this a bit more and it seems like there's some kind of permissions issue with the Subscriptions API on the service side that I can't resolve. Unless I'm missing something it appears that the webhook API is in an "unhealthy state" at the moment and just plain doesn't work. I guess this means we're going to have to drop OneNote support for our project and just go with the other file sync services for now. I'll check back in a while to see if this sample has been updated and will give it another try then.

I am in the same place.


Feature/add api to retrieve decoder capabilities

New feature to fix following issue: https://github.com/react-native-video/react-native-video/issues/2510
The goal of this PR is to allow application to query device capabilities.
Following api was added:
getWidevineLevel => integer between 0 and 3 (not sure 2 make sense :/)
isCodecSupported(codec, width, height) => boolean
isHEVCSupported() => boolean

Api.md has been updated
basic sample has been updated to test this feature

Tested on my project and worked, I was able to get all decoder properties, great work!!


translation of advice_for_writers

https://github.com/hyperledger/fabric-docs-i18n/blob/release-2.2/docs/locale/ja_JP/source/advice_for_writers.md

Can I start working for this one?

Yes, thank you!


Update .travis.yml

uncommented codecov

Codecov Report

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

@@           Coverage Diff            @@
##             master      #2   +/-   ##
========================================
  Coverage          ?   94.8%
========================================
  Files             ?       2
  Lines             ?     250
  Branches          ?       0
========================================
  Hits              ?     237
  Misses            ?      13
  Partials          ?       0

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 ae5686d...4d16bbd. Read the comment docs.


Jenkins Error 500 when trying to claim a build

When I try to claim a build from jenkins tray, it fails with a error 500 message from jenkins and jenkins tray shuts down. Is it possible that the call to the claim plugin has changed?
When I claim a build from the jenkins web gui, this works and jenkins tray reports the build as claimed.
The last lines in the jenkins error log are:
Caused by: net.sf.json.JSONException: JSONObject["assignee"] not found.
	at net.sf.json.JSONObject.getString(JSONObject.java:2040)
	at hudson.plugins.claim.AbstractClaimBuildAction.doClaim(AbstractClaimBuildAction.java:64)
	... 81 more

Thanks for the issue. I'll look into it and come back to you.

I manage to reproduce the problem. But i have actually never used this feature. Have you ever succeeded in the past? If so, which version of Jenkins Tray / Hudson Tray Tracker did you use, and with which version of Jenkins-CI?

No, I have never succeeded. It was my first try with Jenkins tray + claim plugin and I immediately ran into the error 500 issue.

I'll ask the originator of Hudson Tray Tracker, @aseigneurin, to find out if this feature is complete. It still says experimental in the settings.
I don't think it has anything to do with authentication nor API token. I tried with / without authentication and it still fails the same way.

From what I remember, I was able to get the assignee from the API but not to claim a build correctly. Claiming was done through the UI and there was no -clean- API available for that.
See where I had left the implementation: https://code.google.com/archive/p/hudson-tray-tracker/issues/53

Thanks @aseigneurin. In that case, i'll disable claim feature by default on new installation while working on a proper fix for it when possible.

Found out that the json data parsed to claim the build has a missing required field, assginee. I will start working on this fix very soon and not to disable this cool feature.


[Bug]: Incorrect operation of "Melon Loader" after updating "The Long Dark"

All of the following criteria must be met

[X] All Requirements must be installed.
[ ] Full Latest.log file included. If no file exists then leave this unchecked and state so.

All of the following are optional to answer

[X] Tried reinstalling the Game.
[X] Tried reinstalling MelonLoader.
[X] Tried restarting PC.
[X] Was able to see the Start Screen.

Describe the issue.
Hello dear "Lava Gang".
After updating the game "The Long Dark" and the release of DLC, your "MelonLoader" began to work incorrectly. I was able to install it and was able to see its boot screen (command prompt). But after 20 seconds of waiting, the window closes and the game does not start. Alas, I did not find the logs. I would like to know the approximate timing of the update of "MelonLoader" for correct operation under the new update of the game "The Long Dark".
Did you attach your log file?

[ ] Yes, I attached my log file to the text box above.
[X] No, I could not find a log file at {Game_Directory}\MelonLoader\Latest.log

I also see the same game crash behavior since TLD updated.  Removed all mods, tested again--same behavior.
MelonLoader_22-12-24_18-05-42.866.log

This should be fixed with 0.6.0 - though mods will need to be updated to work.


mirror for provider plugins does not work for staging

https://github.com/ned1313/terraform-tuesdays/blob/main/2021-01-19-Mirroring/commands.sh
It does not work if you switch from one version to another as the
registry.terraform.io/hashicorp/azurerm/index.json
only has one(latest) version and so the cache only will use this ..even if more other versions would be available in the cache  which is populated by history.
e.g
{
"versions": {
"2.78.0": {}
}
}
that network storage upload would need to merge the index

You are correct, if you were maintaining this on a networking mirror, you would probably need to do the following:

Update the version used in code
Run the terraform providers mirror command again with the same output directory
Upload the resulting files (index.json will automatically be updated

I'm sure this solution could be scripted out and run as the version you use for providers is updated. You could also keep a set of terraform configs that only define the providers you use in your environment and run terraform providers mirror against each config with the same target output directory as mention in the official docs:

If you wish to create a mirror with providers for a number of different Terraform configurations, run terraform providers mirror in each configuration in turn while providing the same output directory each time. Terraform will then merge together all of the requirements into a single set of JSON indices.

https://www.terraform.io/docs/internals/provider-network-mirror-protocol.html#provider-mirror-as-a-static-website


[4.6.x] Jquery-UI and Tomcat version update

This PR contains commits related to 2 dependancy updates

JQuery-UI update (Update Jquery-ui version to 1.13.2)

Apache Tomcat update (Update tomcat version to 9.0.68)

no longer maintaining this branch for apim next releases.  dependency is already upgraded in 4.8.x branch.


Elite Dangerous - Odyssey

The odyssey expansion for Elite Dangerous changes the format for the Startpreset.start file.
The non expansion version is a single line (still works fine  with Aurora), while Odyssey is now 4 lines so tries to open a file with an  invalid name
e.g.
file\n\rfile\n\rfile\n\rfile.binds
Looking through the code found this
Aurora/Project-Aurora/Project-Aurora/Profiles/EliteDangerous/GameEvent_EliteDangerous.cs
line 204
string currentBindPrefix = File.ReadAllText(EliteConfig.BINDINGS_PRESET_FILE).Trim();
if it's changed to only read the first line rather than the whole file it should stop the error.

Still not totaly fixed. Aurora Crashes frequently with a JSON Additional Text Detected Error while parsing the Journal.


Why does function subscribe returns true?

Upon unsubscribe, you need the subscriptionArn which is returned by AmazonSNS upon subscribe. If you return true, the subscriptionArn cannot be saved and thus the Endpoint cannot be unsubscribed afterwards

Thanks, this has been fixed by #12 😄


PowerToys Run displays both Edge's: UWP and Win32

Environment
Windows build number: 10.0.18363.836
PowerToys version: 0.18.1
PowerToy module for which you are reporting the bug (if applicable): PowerToys Run

Steps to reproduce
Launch PowerToys Run and type "edge"
Expected behavior
Due to replacing UWP Edge with Chromium-based Edge it is expected that PowerToys Run will display only Chromium-based Edge
Actual behavior
PowerToys Run displays both Edge's
Screenshots

I do not think this is a bug. I strongly believe that the packaged Edge only gets hidden, so it won't be used or be standard. The files are still out there.
I could (or should) look for a source on this though. Gimme a second for that...

@Jay-o-Way but this is still a flaw. The situation with legacy Edge is still half-baked. Why doesn't Microsoft hide UWP Edge from every app on Windows? Why keep it? It is not even used nowadays throughout the system.

I'm just explaining. If you want to know the reason, go ask Microsoft.
It's probably to make it easy to revert to the legacy Edge, if people don't like the new Chromium version.

@Jay-o-Way

By the way, what do you mean when you say "UWP Edge" ???
Technically UWP Edge == legacy Edge because legacy Edge is UWP application

this isn't a bug,  This is pulled up by the package manager API


Validation happens after second typed letter if input is wrapped with another component

Versions

vee-validate: 2.2.0
vue: 2.5.22

Describe the bug
If the input is rendered through a slot of a component then validation happens after the second typed letter instead of the first one.
To reproduce
Steps to reproduce the behavior:

Go to https://codesandbox.io/embed/jpy8r58oqw
Type one letter
See that validation does not happen

Expected behavior
Validation should happen after the first typed letter as if when a plain tag (for example div) is used instead of wrapping component.
Demo link
https://codesandbox.io/embed/jpy8r58oqw
Desktop (please complete the following information):
macOS, Google Chrome 73

This works fine on chrome 73 on Windows OS, this is probably a macOS issue like this one. I will get my hands on  Macbook soon to debug these issues.

I can reproduce this issue on Firefox 61 and Chrome 73 in Ubuntu 18.04.1

I have not said that this bug appears once after initial rendering of the input component. If you removed input's content and typed it again it works fine. In my example, page should be reloaded to see this bug again.

This bug appears on Windows OS for me (Chrome 73).
This issue is only about the first input (validator does not validate first key).

@CedrikNikita You are right, I must have not noticed it the first time I checked this.
There is a weird interaction between the v-model and the validation process which prevents this for some reason. I tried to upgrade to Vue 2.6.10 and it seems to work fine here https://jl6r4z0p5y.codesandbox.io/
Can you guys confirm which Vue version are you using and if upgrading it solves the issue?

Adding v-model="test" to your example breaks it. Removing of v-model fixes my example as well, but it is not a suitable solution.

I found the issue and fixed it in 7a2100d However if using ValidationProvider is working for your app, I suggest you go forward with it as components are much more reliable than directives due to their limitations.