TypeScript support

Hey, the library looks really interesting and I would definitely give it a go, if not a lack of TypeScript support.

I'm gathering requirements for TypeScript support. Means different things to different people. Can you list what your looking for.

Thanks -- I'm thinking of the user schema.
To use the example:
const MySchema = {

    models: {
        Account: {
            pk:          { value: 'account:${name}' },
            sk:          { value: 'account:' },
            id:          { type: String, uuid: true, validate: /^[0-9A-F]{32}$/i, },
            name:        { type: String, required: true, }
            status:      { type: String, default: 'active' },
            zip:         { type: String },
        },

I would have thought that you want a type generated for the fields: id, name, status, zip that is infered from the "type" schema property. My question is how is this best achieved. I know the OneTable API types, but not the user schema Model attribute types.
Sorry, I'm not deep on Typescript, but we're really committed to implementing this capability.

I've played around using the OneTable CLI to generate type definitions for the schema entities from the schema source.
Generates a models.d.ts that can then be included. Looks like:
export type Account = {
    email: string;
    id?: string;
    name: string;
}

export type User = {
...
}

Consume via
import {Account, User, Product} from './models'

then would construct like:
import {Model, Table} from 'dynamodb-onetable'
import DynamoDB from 'aws-sdk/clients/dynamodb'
import MySchema from './schema'

const table = new Table<MySchema>({
    client: new DynamoDB.DocumentClient(),
    schema: MySchema,
}))

let user = new Model<User>(table, ...)
let account = new Model<Account>(table, ...)

await user.create({
    // These attributes will be validated against the User in the generated models.d.ts
    name: 'user',
    email<EMAIL_ADDRESS>})

Plenty to DRY up, but the prototyping looks promising. The generated JS looks okay so far.
This approach should be able to hit the 2 goals:

Have type definitions for the schema and OneTable APIs parameters and return values
Generate type definitions from the Schema for entities and attributes

Driving it all from the schema works really well.

You can do quite a magic things with TypeScript, and having the types generated in runtime would be much better than executing a separate command to generate them. Someone will forget to run a script and you have build passing, but with inconsistent models.
Some PoC on how to infer the model type in runtime:
const model = {
    Account: {
        name: {type: String},
        age: {type: Number},
    },
};

interface Field {
    type: StringConstructor | NumberConstructor;
}

type FieldType<T extends Field> =
    T['type'] extends StringConstructor ? string
        : T['type'] extends NumberConstructor ? number
        : never;

type Model<T extends Record<string, Field>> = {
    [P in keyof T]: FieldType<T[P]>;
}

const account: Model<typeof model.Account> = {
    name: 'aa',
    age: 3,
};

The same approach can be used to make fields optional or not, etc. And of course, the end goal would be not to use typeof model.Account by the user, but require proper types in your methods like find().

I also think TypeScript would be a killer feature for dynamodb-onetable. 🔥
And I agree with @m-radzikowski that it's much much better to have the "runtime" types. 👍

Great, thanks I now get it.
Was your POC a working POC or just a hint of a direction to go?
Also, would you like to work on this yourself?  Always keen to have collaborators.

It's some point of start to create full support for types.
Sorry, I can't commit to work on this, I am not able to spend time on it right now.

Thanks @m-radzikowski for your guidance. Really appreciated. Your design looks to be effective.
After some prototyping I get the following. Note this is incomplete on many fronts. Any ideas to DRY it up are appreciated.
I've renamed some of your types and applied to the Model class and find() API.
User code
import {Model} from 'dynamodb-onetable'

const schema = {
    models: {
        Account: {
            id: {type: String},
            name: {type: String, required: true},
            age: {type: Number, default: 23},
        },
    }
}
type Account = OneEntity<typeof schema.models.Account>

let account: Account = {
    id: '1234',
    name: 'Peter Smith',
    age: 33,
}

let AccountModel = new Model<Account>(table, 'Account');

account = AccountModel.find({id: '1234'})

The declarations to achieve this would be in the imported library via Model.d.ts:
interface OneTypes {
    type: StringConstructor | NumberConstructor | BooleanConstructor | ObjectConstructor | ArrayConstructor | DateConstructor;
}

type OneField<T extends OneTypes> =
      T['type'] extends StringConstructor ? string
    : T['type'] extends NumberConstructor ? number
    : T['type'] extends BooleanConstructor ? boolean
    : T['type'] extends ObjectConstructor ? object
    : T['type'] extends DateConstructor ? Date
    : T['type'] extends ArrayConstructor ? []
    : never;

type OneModel = Record<string, OneTypes>;

type OneEntity<T extends OneModel> = {
    [P in keyof T]: OneField<T[P]>;
}

type OneParams = {
    add?: object,
    batch?: object,
    capacity?: string,
    consistent?: boolean,
    context?: object,
    delete?: object,
    execute?: boolean,
    exists?: boolean,
    hidden?: boolean,
    index?: string,
    limit?: number,
    log?: boolean,
    many?: boolean,
    metrics?: boolean,
    parse?: boolean,
    postFormat?: () => {},
    preFormat?: () => {},
    remove?: string[],
    return?: string,
    reverse?: boolean,
    start?: boolean,
    throw?: boolean,
    transaction?: object,
    type?: string,
    updateIndexes?: boolean,
    where?: string,
}

type OneOptions = {
    indexes?: object,
    fields?: object,
    timestamps?: boolean;
}

type OneProperties = {
    [key: string]: any;
}

declare class Model<T> {
    constructor(table: string, name: string, options?: OneOptions);
    find(properties?: OneProperties, params?: OneParams): T;
    ....
}

Issues and Notes

The properties for find() and other API methods can't really be typed effectively as the properties are blended with the table context. i.e. you may provide any key, non-key properties or none at all to the API.
Still need to cover Binary and Set data types in OneTypes
I've used "One" prefixes to avoid name clashes.

Thoughts?

We've pushed a prototype 1.2.0 which has an implementation for folks to test.
Previously the *.d.ts files were generated by typescript. Now, the declaration files are hand-crafted for Table and Model.
There is some doc in the README and a stub sample under doc.
Features

Model and Table APIs are typed
Schemas dynamically converted to types without any manual step
Entity types created from schemas with access to properties fully typed.
The Model level API is fully typed -- this is the preferred access pattern.
The Table get/update/find APIs are not generic and not typed. You need to cast the return.

When using TypeScript, the core change is to create an Entity type and then use the generic Model<> constructor. e.g.
import {Entity, Model, Table} from 'dynamodb-onetable'
type Account = Entity<typeof schema.models.Account>
let AccountModel: Model<Account> = table.getModel('Account').     // or
let AccountModel = new Model<Account>(table, 'Account')

let account = await AccountModel.get({id: 'xxxx'})

I've not yet worked out a simpler way to say "typeof schema.models.Account", but that is done once per compilation unit.
Folks may have different preferences for naming vs Account, AccountModel and account. i.e. Entity, Model and instance.
Examples:
import {Entity, Model, Table} from 'dynamodb-onetable'
import DynamoDB from 'aws-sdk/clients/dynamodb'
import schema from './schema.js'

const client = new DynamoDB.DocumentClient()

const table = new Table({ name: 'MyTable', client, schema })

//.  Create an entity type
type Account = Entity<typeof schema.models.Account>

//.   Create an access model
let AccountModel = new Model<Account>(table, 'Account')

//.   Fully typed access for return entity and for get parameters and options
let account = await AccountModel.get({id: '1234'}, {log: true})

//.   Stand alone schema
let BlogSchema = {
    pk:        { type: String, value: 'blog:${email}' },

    email:     { type: String, required: true },
    message:{ type: String, required: true },
    date:      { type: Date, required: true },
}

//.   Add the schema
table.addModel('Blog', BlogSchema)

//.   Get an entity type
type Blog = Entity<typeof BlogSchema>

//.   Retrieve a model from the table. Cast required.
let BlogModel: Model<Blog> = table.getModel('Blog')

//.   Fully typed access
let blog = await BlogModel.get({email<EMAIL_ADDRESS>blog.email =<EMAIL_ADDRESS>  // OK
blog.unknown = 42. // Fail

//  Untyped parameters and result
blog = await table.get('Blog', {name<EMAIL_ADDRESS>


Apply secret manifests first

Sometimes missing or outdated secrets may cause deployment to fail.
Since deployment depends on a secret it makes sense to apply secrets first.

Perhaps we could make the namespace a required param? Wouldn't this would be an issue regardless of the order in which secrets are applied?

Perhaps we could make the namespace a required param?

Suppose we could explore that.. Initially, my only concern with that would be in how the plugin automatically creates a Namespace resource anytime the namespace param is supplied and there are cases where it would probably be preferred to eliminate that apply step from the workflow (e.g., managing labels / annotations on the Namespace resource)

Wouldn't this would be an issue regardless of the order in which secrets are applied?

I think the Namespace resource would just need to be configured in whichever manifest is applied first.
As an alternative, maybe we should support a new namespace_template param (defaulting to the current value) to always apply that first if set?
https://github.com/nytimes/drone-gke/blob/6ac83b93954ef35b0ff2d797b3f58e2d978aa975/main.go#L46-L52

I think this PR is just a band-aid, not a real solution to the correct ordering of manifests. (It's more like a tactical fix for a problem we're currently encountering) What I'm trying to get at is this: will this change break anything? It seems that the namespace resource doesn't get applied in any particular order, in which case the applying the secret before the namespace manifest could happen before this change anyway.

will this change break anything?

i think it might for users that are omitting the namespace param and configuring a Namespace resource within their .kube.yml.. in that case, the resource's within .kube.sec.yml will be referencing a namespace that does not yet exist..

Should the namespace plugin param become required if we're worried about it not being available?

@msuterski see my comment in https://github.com/nytimes/drone-gke/pull/120#issuecomment-550409738
consider the case where a user need to include a label on the namespace resource as part of an integration with other tools (e.g., istio-injection: enabled for integration with istio).. if the namespace param is required, the existing implementation would first apply the namespace template embedded within the plugin (removing any existing labels / annotations) before applying the Namespace resource configured within .kube.yml (restoring the custom labels / annotations) ..
if we'd prefer to make the namespace param required, i think we may want to also add support for customizing the namespace resource template managed by the plugin (e.g., by adding a new namespace_template param)

@montmanu could we make the plugin smart enough to check if the NS exists before touching it?
From what I understand the original problem is that we may not be able to apply secrets first because the namespace might not exist (when it's defined, and to be created, in the main spec file).
If the plugin checked if the namespace existed first, and create an empty one if it doesn't, everything else that is defined in the main spec file would/should work just fine.

Hello, I looked over the changes here and it makes sense to me.
By default, the namespace is already being created in an early step, before either secret or non-secret manifests are applied:
https://github.com/nytimes/drone-gke/blob/f25a5b24bae090cb418ea33f23ba771b08727248/main.go#L272-L275
Regarding the use case where one might want to create a custom namespace with labels (instead of using the namespace created by the plugin's namespace parameter), they can add that namespace spec into the top of the .kube.sec.yml manifest as another yaml document in the same file, which will apply that before applying the rest of the file:
---
apiVersion: v1
kind: Namespace
metadata:
  name: my-custom-ns
  labels:
    environment: test
    app: test
---
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
  namespace: my-custom-ns
type: Opaque
data:
  my-data: aGkK

I am looking to merge this if there are no objections.

they can add that namespace spec into the top of the .kube.sec.yml manifest

that's effectively a breaking change though, isn't it?
i'm not opposed to it, just think we need to be explicit about it. i personally would have to update several projects i work on where the plugin's namespace parameter is currently omitted and the project's namespace resource is currently configured in .kube.yml. i would be somewhat surprised if i were the only one managing namespaces in this way, so just want to make sure that we're clear about the impact of this change.

I agree that this would be a breaking change if we just reverse the apply order altogether. It seems like a lot of folks have thoughts on how this plugin handles namespaces but that seems like a problem that's bigger than this PR, and maybe something that can be standardized and fixed in the next major version of this plugin. In the meantime, this issue isn't going away by itself and it'd be good to fix this without pulling out the rug from anyone who is using it in the way @montmanu described.
It's not the most elegant, but could we maybe add a config option along the lines of apply_secrets_first: true to fix this bug for users who run into this issue but keep the default behaviour as-is for everyone else?


"Failed to run application on the device" on newly initialized React Native CLI sample app

Describe the bug
I have a newly created app from React Native CLI and added Detox with detox init, followed instructions to configure Android, but Detox fails to start the app on the Android emulator.
detox -c android build ran ok and when I run detox -c android test it does start the emulator, but the application itself never starts.
The application does start when run through react-native run-android.
It gives this error:
$ ./node_modules/.bin/detox -c android test
detox[37289] INFO:  [test.js] configuration="android" reportSpecs=true readOnlyEmu=false
    useCustomLogger=true forceAdbInstall=false DETOX_START_TIMESTAMP=1591313397594
    node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --
    maxWorkers 1 android test
detox[37290] INFO:  [DetoxServer.js] server listening on localhost:62332...
detox[37290] ERROR: [DetoxExportWrapper.js/DETOX_INIT_ERROR]
 DetoxRuntimeError: Failed to run application on the device

HINT: Most likely, your tests have timed out and called detox.cleanup() while it was
waiting for "ready" message (over WebSocket) from the instrumentation process.

Likely related adb logcat lines (full logcat below):
06-05 10:59:05.618  2036  2070 I ActivityManager: Force stopping com.reactnativetypescriptredux appid=10170 user=-1: deletePackageX
06-05 10:59:05.619  2036  2070 I ActivityManager: Killing 8148:com.reactnativetypescriptredux/u0a170 (adj 0): stop com.reactnativetypescriptredux
06-05 10:59:05.624  2036  2070 W ActivityManager: Crash of app com.reactnativetypescriptredux running instrumentation ComponentInfo{com.reactnativetypescriptredux.test/android.test.InstrumentationTestRunner}

Here is my config:
{
  "testRunner": "jest",
  "runnerConfig": "e2e/config.json",
  "configurations": {
    "android": {
      "type": "android.emulator",
      "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
      "build": "cd android; ./gradlew assembleDebug assembleAndroidTest -DtestBiuldType=debug; cd -",
      "device": {
        "avdName": "Pixel_3"
      }
    }
  }
}

To Reproduce

[X] I have tested this issue on the latest Detox release and it still reproduces

Steps to reproduce:

Create new blank app with react-native init
Add detox with detox init
Update config per above
Build with detox -c android build
Attempt to run with detox -c android test

Expected behavior
Both the React Native app and Detox are right out of the box, so I would expect them to just run fine.
Device and Verbose Detox Logs
Detox logs: https://controlc.com/80359692
adb logcat: https://controlc.com/c97a8680
Environment

Detox: 16.7.0
React Native: 0.62.2
Node: v12.17.0
Device: Pixel 3, x86, API 29, Android 10 (also tried with API 28 / Android 9, same)
OS: MacOS 10.15.4
Test-runner: Jest
Android Studio: 3.6.3

I missed some steps on the Android setup page, sorry.

@samuelneff could you please elaborate? 'anything we could improve in the guide?

Once I slowed down and read them all, the docs were fine.
The only thing I would say is to more clearly separate iOS and Android docs. The Android docs partially depend on the iOS docs but it's not clear which parts. If instead you had up front "Getting Started - iOS" and "Getting Started - Android" without either one relying on the other.
Thanks for the great product. Once I got it running, it's amazing!


make netty direct buffer memory metric

#6745

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

Codecov Report

Merging #6975 into master will increase coverage by 0.08%.
The diff coverage is 78.26%.

@@            Coverage Diff             @@
##           master    #6975      +/-   ##
==========================================
+ Coverage   39.34%   39.43%   +0.08%
==========================================
  Files        3208     3222      +14
  Lines       94770    94985     +215
  Branches    11860    11881      +21
==========================================
+ Hits        37290    37457     +167
- Misses      54490    54528      +38
- Partials     2990     3000      +10

Impacted Files
Coverage Δ

...m/navercorp/pinpoint/plugin/netty/NettyPlugin.java
0.00% <0.00%> (ø)

...etty/interceptor/PlatformDependentInterceptor.java
0.00% <0.00%> (ø)

...ler/context/errorhandler/MultipleErrorHandler.java
77.77% <77.77%> (ø)

...filer/context/errorhandler/NestedErrorHandler.java
80.00% <80.00%> (ø)

...ontext/errorhandler/DefaultIgnoreErrorHandler.java
81.25% <81.25%> (ø)

...r/context/errorhandler/ContainsMessageMatcher.java
81.81% <81.81%> (ø)

...ontext/errorhandler/ClassNameThrowableMatcher.java
83.33% <83.33%> (ø)

...nt/profiler/context/recorder/AbstractRecorder.java
34.42% <83.33%> (+2.68%)
:arrow_up:

...rofiler/context/errorhandler/DescriptorParser.java
83.78% <83.78%> (ø)

...point/profiler/context/errorhandler/OptionKey.java
85.71% <85.71%> (ø)

... and 32 more

Continue to review full report at Codecov.

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

@yangbongsoo
Please add license at PlatformDependentInterceptor.java


Stacked Bar -> Percentage Not Shown on dataLabels

Bug report
Codepen
In stacked bar chart that stacked type is "100%", datalabels not shown for this range 1<=value<= 2 Here is the codepen example.
Also same problem in vue side

You're right.
This will be addressed soon.


NDRS-{1052,1053}: Prevent deploy replays. (Ports #1216, #1218, #1219, #1223 to dev.)

This is a port of https://github.com/CasperLabs/casper-node/pull/1216, https://github.com/CasperLabs/casper-node/pull/1218, https://github.com/CasperLabs/casper-node/pull/1219, https://github.com/CasperLabs/casper-node/pull/1223 to the dev branch.

Instead of persisting the BlockProposerDeploySets to LMDB and loading in on startup, we recreate that state from the collection of finalized deploys. This fixes a bug where that set would be incorrectly initialized for joining/restarting/upgrading nodes.
Blocks are considered invalid if they contain the same deploy twice, or if they contain a deploy that was already present in any of their ancestors.

https://casperlabs.atlassian.net/browse/NDRS-1052
https://casperlabs.atlassian.net/browse/NDRS-1053

bors r+


Interactive Transactions: fatal when throwing string instead of Error() since 3.10.0

Bug description
works in 3.9.2, fatals as of 3.10.0:
await prisma.$transaction((prisma) => { throw "abort transaction"; }) // throwing string, not new Error()

error since 3.10.0: TypeError: Cannot create property 'clientVersion' on string "abort transaction"
How to reproduce
^- code above, this one seems straightforward but just let me know if reproduction repo required
Expected behavior
able to throw an expression of type as an error, as accepted by Typescript compiler
(yes I do typically follow best practice re: Errors 😉 ; this broke a unit test that was rolling back a transaction where there wasn't need for a full Error)
Prisma information
N/A
Environment & setup

OS: Mac OS
Database: Postgres
Node.js version: 14

Prisma Version
worked in versions up to + including 3.9.2, fails in 3.10.0 and 3.11.1

I can confirm this:
C:\Users\Jan\Documents\throwaway\slackUuid>node script.js
  prisma:tryLoadEnv Environment variables not found at null +0ms
  prisma:tryLoadEnv Environment variables not found at undefined +3ms
  prisma:tryLoadEnv No Environment variables loaded +0ms
  prisma:tryLoadEnv Environment variables not found at null +2ms
  prisma:tryLoadEnv Environment variables not found at undefined +0ms
  prisma:tryLoadEnv No Environment variables loaded +1ms
  prisma:client dirname C:\Users\Jan\Documents\throwaway\slackUuid\node_modules\.prisma\client +0ms
  prisma:client relativePath ..\..\.. +0ms
  prisma:client cwd C:\Users\Jan\Documents\throwaway\slackUuid +1ms
  prisma:client clientVersion: 3.11.1 +4ms
  prisma:client clientEngineType: library +0ms
  prisma:client:libraryEngine internalSetup +0ms
TypeError: promises.map is not a function
    at Proxy._transactionWithArray (C:\Users\Jan\Documents\throwaway\slackUuid\node_modules\@prisma\client\runtime\index.js:40597:34)
    at Proxy.$transaction (C:\Users\Jan\Documents\throwaway\slackUuid\node_modules\@prisma\client\runtime\index.js:40622:21)
    at main (C:\Users\Jan\Documents\throwaway\slackUuid\script.js:20:18)
    at Object.<anonymous> (C:\Users\Jan\Documents\throwaway\slackUuid\script.js:25:1)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47
  prisma:client:libraryEngine hookProcess received: exit +25ms
  prisma:client:libraryEngine runBeforeExit +1ms

C:\Users\Jan\Documents\throwaway\slackUuid>node script.js
C:\Users\Jan\Documents\throwaway\slackUuid\script.js:21
        await prisma.$connect();
        ^^^^^

SyntaxError: await is only valid in async functions and the top level bodies of modules
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1032:15)
    at Module._compile (node:internal/modules/cjs/loader:1067:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

C:\Users\Jan\Documents\throwaway\slackUuid>npm install<EMAIL_ADDRESS><EMAIL_ADDRESS>  agentkeepalive sock[0#registry.npmjs.org:443::::::::true:::::::::::::] create, timeout 300001ms +0ms
  agentkeepalive sock[0#registry.npmjs.org:443::::::::true:::::::::::::](requests: 1, finished: 1) free +401msin 169ms

changed 4 packages, and audited 5 packages in 5s

found 0 vulnerabilities

C:\Users\Jan\Documents\throwaway\slackUuid>node script.js
  prisma:tryLoadEnv Environment variables not found at null +0ms
  prisma:tryLoadEnv Environment variables not found at undefined +2ms
  prisma:tryLoadEnv No Environment variables loaded +1ms
  prisma:tryLoadEnv Environment variables not found at null +2ms
  prisma:tryLoadEnv Environment variables not found at undefined +0ms
  prisma:tryLoadEnv No Environment variables loaded +0ms
  prisma:client clientVersion: 3.9.2 +0ms
  prisma:client clientEngineType: library +0ms
  prisma:client:libraryEngine internalSetup +0ms
  prisma:client:libraryEngine Searching for Query Engine Library in C:\Users\Jan\Documents\throwaway\slackUuid\node_modules\.prisma\client +4ms
  prisma:client:libraryEngine loadEngine using C:\Users\Jan\Documents\throwaway\slackUuid\node_modules\.prisma\client\query_engine-windows.dll.node +1ms
  prisma:client:libraryEngine library starting +60ms
prisma:info Starting a postgresql pool with 9 connections.
  prisma:client:libraryEngine library started +828ms
abort transaction
  prisma:client:libraryEngine hookProcess received: exit +231ms
  prisma:client:libraryEngine runBeforeExit +1ms


Up arrow key not working R shell in integrated terminal (v1.47.3 / Windows 10.0.18363)

This issue is pretty strange. One day my arrow keys to recall previous commands stopped working. I have two computers running visual studio code (v1.47) and R (versions 3.5.0 and 3.6.3) and both of them no have arrow key functionality. It took several weeks for the 2nd computer to stop working. It mysteriously stopped working after I caused an error in the interpreter.

Launching cmd and R on it's own works
Launching external terminal from VS code also works
When I change the version of R to 4.0.2, the arrow keys seem to work

Unfortunately one of the libraries I am dependent on has not been implemented in R 4xx so I can't make the switch yet. I've seen this issue previous resolved in previous versions. Anyone else getting this issue too?
Thanks,
Alex

I think R and some other shells have always had some issues with arrow keys, but they seem to be fixed in the latest version of R. You can reach out to them to see if it's possible to backport the fix?


Write full user documentation for custom statuses - of what is done, and what cannot yet be done

I made a start on this, in docs/getting-started/statuses.md, but there is a lot more to add.
Things to mention
Explanations

[x] Check all explanations of done and not done - How / and - now differ in searches

Modal

[x] Status dropdown

[ ] How it shows status characters
[ ] How it changes the Completed checkbox
[ ] What it does with unrecognised status characters e.g. Unknown [%]
[-] Cannot yet edit To Do to go to In Progress You can now...

[x] Done date not yet updated when changing status via Edit modal

Settings

[ ] Issues:

[-] The pre-provided collections of statuses may be out of date
[x] The error-checking in the Edit Status dialog is flakey (it's now fixed)

[x] if you enter more than one character in the indicator, the box disappears
[x] if you enter more than one character in the next indicator box, it is accepted

[-] You cannot customise which tasks are considered as Done - only x and X are - the status type DONE is how to do this now

[x] Embed tables of the pre-prepared collections of task statuses, for inclusion in the docs

Searching

[x] Not yet any search mechanism for this new data

Styling

[x] Need to select your style
[ ] Convenience mechanisms
[-] Let us know if there are other custom checkboxes that you would like us to support

Limitations

[x] Commands to apply statuses coming later

Fixed by #1584


[BUG] Commit7190799ac75ba78f7f2b21860a884a1d2891952e Introduces Breaking Change

Describe the bug
When utilizing Cython 0.29.2, which includes commit 7190799ac75ba78f7f2b21860a884a1d2891952e, I am experiencing the following stack
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Build/Dependencies.py", line 1110, in cythonize
      cythonize_one(*args)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Build/Dependencies.py", line 1256, in cythonize_one
      result = compile_single(pyx_file, options, full_module_name=full_module_name)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 575, in compile_single
      return run_pipeline(source, options, full_module_name)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 494, in run_pipeline
      pipeline = Pipeline.create_pyx_pipeline(context, options, result)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/Pipeline.py", line 252, in create_pyx_pipeline
      create_pipeline(context, mode, exclude_classes=exclude_classes),
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/Pipeline.py", line 144, in create_pipeline

�
[tox]
      from .ParseTreeTransforms import WithTransform, NormalizeTree, PostParse, PxdPostParse
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/ParseTreeTransforms.py", line 1632, in <module>
      class AnalyseDeclarationsTransform(EnvTransform):
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/ParseTreeTransforms.py", line 1640, in AnalyseDeclarationsTransform
      """, level='c_class', pipeline=[NormalizeTree(None)])
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/TreeFragment.py", line 235, in __init__
      mod = t = parse_from_strings(name, fmt_code, fmt_pxds, level=level, initial_pos=initial_pos)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/TreeFragment.py", line 75, in parse_from_strings
      scope = scope, context = context, initial_pos = initial_pos)
    File "Cython/Compiler/Scanning.py", line 306, in Cython.Compiler.Scanning.PyrexScanner.__init__
    File "Cython/Compiler/Scanning.py", line 35, in Cython.Compiler.Scanning.get_lexicon
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Compiler/Lexicon.py", line 147, in make_lexicon
      (Eof, Method('eof_action'))
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Plex/Lexicons.py", line 129, in __init__
      nfa, default_initial_state, spec, token_number)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Plex/Lexicons.py", line 162, in add_token_to_machine
      match_bol=1, nocase=0)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Plex/Regexps.py", line 301, in build_machine
      re.build_machine(m, s1, s2, match_bol, nocase)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Plex/Regexps.py", line 340, in build_machine
      initial_state = self.build_opt(m, initial_state, BOL)
    File "/tmp/pip-build-env-jkbqfqc0/overlay/lib/python3.5/site-packages/Cython/Plex/Regexps.py", line 136, in build_opt
      initial_state.link_to(s)
    File "Cython/Plex/Machines.py", line 86, in Cython.Plex.Machines.Node.link_to
    File "Cython/Plex/Machines.py", line 82, in Cython.Plex.Machines.Node.add_transition
    File "Cython/Plex/Transitions.py", line 60, in Cython.Plex.Transitions.TransitionMap.add
    File "Cython/Plex/Machines.py", line 124, in Cython.Plex.Machines.Node.__hash__
  OverflowError: Python int too large to convert to C ssize_t

The error is introduced with the addition of the __hash__ function here: https://github.com/cython/cython/blame/4d54aeff34753551cf0ac9977d50c292dbf9d5d5/Cython/Plex/Machines.py#L124
To Reproduce
Code to reproduce the behaviour:
pip install gevent

The issue is occurring when building gevent, but gevent is not the root cause.
Expected behavior
Expect code to compile correctly
Environment (please complete the following information):

OS: i386/debian:stretch (docker)
Python version [e.g. 3.5.2]
Cython version [e.g. 0.29.21]

I am utilizing docker & venv. A psuedo script to repro
docker pull i386/debian:stretch

Dockerfile
FROM i386/debian:stretch

RUN apt-get update -y --fix-missing
RUN apt-get install python3.5-dev
RUN python3 -m venv venv --without-pip
RUN . venv/bin/activate && curl https://bootstrap.pypa.io/get-pip.py | python &&  pip install gevent

Additional context
Add any other context about the problem here.
I believe the issue is due to the i386 architecture with  ssize_t being 32-bit causing the overflow.

It definitely isn't 0.29.2, since that predates the change by > 1 year. I don't think that commit went into 0.29.x at all - it only went into the 3 alpha branch. So I'm not at all clear on why version you're using.
I think (but I'm not 100% sure) that this was fixed in https://github.com/cython/cython/commit/ef423d1e9c9e67a24db0e61b7b334983858fa581. Again, only in the 3 alpha branch

It definitely isn't 0.29.2, since that predates the change by > 1 year. I don't think that commit went into 0.29.x at all - it only went into the 3 alpha branch. So I'm not at all clear on why version you're using.
I think (but I'm not 100% sure) that this was fixed in ef423d1. Again, only in the 3 alpha branch

Fixed typo. 0.29.21*

Closing as a duplicate of https://github.com/cython/cython/issues/3659


Error response from daemon: cgroup-parent for systemd cgroup should be a valid slice named as "xxx.slice?

Hi,chao,thanks for your help,some sevices in the k8s has run.But other are not .such like this:

I thought "ts-ui-dashboard-85f4f7dcbc-nrhz7" is the notePort type,but it havn't run and i try this:
kubectl describe pod ts-ui-dashboard-85f4f7dcbc-nrhz7
I find the error information:
Error response from daemon: cgroup-parent for systemd cgroup should be a valid slice named as "xxx.slice"
The other pods failed to start has the same problem.
Thanks!

Hi Team,
I am also getting same kind of error when i launch the instance with customized AMI for Batch jobs.


double check cell subtype distribution implementations

It was mentioned here  that:
I will propose a fix in my next commit and double check every over cell subtype distribution implementations.

I double checked the implementations for cell subtype density placement, and they actually produce correct results.
I got confused because the implementation in atlas-densities and my previous one are different.The difference is that the old one was also used to place the cells while the new one only focus on computing celltype densities.
For the purpose of atlas-densities, this is sufficient, so we can close this issue.

Ok, sounds good - thanks for looking.


Nix Cache & Cardano-SL Revision

Overview

[ ] I have re-generated nix artifacts
[ ] Bumped cardano-sl revision to latest develop

Comments

it seems application of one more artifact will be needed


Issue 1032 pypi

Fixes #1032
Also changed the wiki workflow a little by splitting into build/publish workflows.

Thanks for these suggestions Joe, I'll try them out now. Good idea RE the
wiki workflow.
A
On Wed, Mar 3, 2021 at 12:28 PM Joe Yu<EMAIL_ADDRESS>wrote:

@j0yu commented on this pull request.
In .github/workflows/wiki-publish.yaml
https://github.com/nerdvegas/rez/pull/1034#discussion_r586032473:

     with:

       name: wiki-markdown

       path: ${{ env.TEMP_WIKI_DIR }}

publish:
 name: Publish to GitHub Wiki

 runs-on: ubuntu-latest

 needs: build

Would it be possible to still keep the build and publish as separate jobs
in the same workflow YAML file, but for the publish job, include an extra
if to only run it during a release event?
on:  # Merge in this at the top of file
release:
types: [released]

publish:
￼    name: Publish to GitHub Wiki
￼    runs-on: ubuntu-latest
 if: github.event_name == 'release'

￼    needs: build

In .github/workflows/pypi.yaml
https://github.com/nerdvegas/rez/pull/1034#discussion_r586037723:

 - name: Upload to PyPi

   run: |

     python -m twine upload dist/*

   env:

     TWINE_USERNAME: '${{ secrets.PYPI_USERNAME }}'

     TWINE_PASSWORD: '${{ secrets.PYPI_PASSWORD }}'

I've spotted pypa have setup a CI action
https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#publishing-the-distribution-to-pypi-and-testpypi
that could be used here to do the upload if you prefer instead of twine
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/nerdvegas/rez/pull/1034#pullrequestreview-602421540,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMOUSVSVDHTFTT3P6YJ6OTTBWGCFANCNFSM4YQACHEQ
.

Winner, those changes are released.
On Wed, Mar 3, 2021 at 12:32 PM Allan Johns<EMAIL_ADDRESS>wrote:

Thanks for these suggestions Joe, I'll try them out now. Good idea RE the
wiki workflow.
A
On Wed, Mar 3, 2021 at 12:28 PM Joe Yu<EMAIL_ADDRESS>wrote:

@j0yu commented on this pull request.
In .github/workflows/wiki-publish.yaml
https://github.com/nerdvegas/rez/pull/1034#discussion_r586032473:

     with:

       name: wiki-markdown

       path: ${{ env.TEMP_WIKI_DIR }}

publish:
 name: Publish to GitHub Wiki

 runs-on: ubuntu-latest

 needs: build

Would it be possible to still keep the build and publish as separate jobs
in the same workflow YAML file, but for the publish job, include an
extra if to only run it during a release event?
on:  # Merge in this at the top of file
release:
types: [released]

publish:
￼    name: Publish to GitHub Wiki
￼    runs-on: ubuntu-latest
 if: github.event_name == 'release'

￼    needs: build

In .github/workflows/pypi.yaml
https://github.com/nerdvegas/rez/pull/1034#discussion_r586037723:

 - name: Upload to PyPi

   run: |

     python -m twine upload dist/*

   env:

     TWINE_USERNAME: '${{ secrets.PYPI_USERNAME }}'

     TWINE_PASSWORD: '${{ secrets.PYPI_PASSWORD }}'

I've spotted pypa have setup a CI action
https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/#publishing-the-distribution-to-pypi-and-testpypi
that could be used here to do the upload if you prefer instead of twine
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/nerdvegas/rez/pull/1034#pullrequestreview-602421540,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMOUSVSVDHTFTT3P6YJ6OTTBWGCFANCNFSM4YQACHEQ
.

awesome, cheers!


Issue 413

Related Issue
This is the pull request of an issue no 413, which is to add an SGPA and CGPA calculator created using HTML, CSS and Java
script.
Closes: #413
Describe the changes you've made
I've created a new Javascript project called SGPA and CGPA calculator. I've created a new branch callled issue-413 as requested by @ridsuteri. And also I've added my project to the script.js file as requested by @ridsuteri . Please merge my project with the Awesome Javascript projects.
Describe if there is any unusual behaviour of your code(Write NA if there isn't)
NA
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] New and existing unit tests pass locally with my changes.

Screenshots

@ridsuteri I've created a custom branch called issue-413 instead of using main branch. Please take a look at my PR and merge it. I can't understand how to resolve the conflicts in the script.js file. I've added my project details in the script.js file just like everyone, but I don't know why there has been conflicts with it. Can you please help me?

@narasimhareddy04 shared a article link with you kindly have a look

Thank you @ridsuteri  on merging my project.


Attribute error NoneType has no attributes .show()

https://github.com/Tristan-Anderson/Slifer_Lab_NMR_Toolsuite/blob/8f15bd194abc771b1ee20d82246051af4397619b/asciigui.py#L473
In changing the baseline, certain data frames need to be reinitiated, and in options, 13&14 of NMR analyzer need to be written in a way that re-fetches the graphs. Otherwise, the program crashes.

fixed in 4178e20


Swap primary and secondary pallete colors in Theme Provider

Swap primary and secondary pallete colors in Theme Provider. So that dark blue is now the primary color to align with IPG branding.

Before releasing this we should do a local build and integrate it with one of our apps to check it looks good there as well as in Storybook standalone. I would suggest NGD would be a good test candidate.


how to tune the model performance?

Hi all,
I have 1000 songs, i want adjust DEFAULT_FAN_VALUE, PEAK_NEIGHBORHOOD_SIZE to improve recognition performance. I decresed DEFAULT_FAN_VALUE and increase PEAK_NEIGHBORHOOD_SIZE value, then I got less fingerprints. For my understanding, the recognition search speed should be faster then that with default setting. My fingerprints db size decreased with that setting, but I took more time for recognition. Does anyone can help explain it? Thanks

As I've checked, the most time of the recognition is spent in the fingerprint of the song to recognize, so in many cases it doesn't matter the size of your db.

The main thing here is the "scipy.ndimage.filters -> maximum_filter" takes so long and there is no way to improve it without touching scipy code.
You can find the function here.


Avoid duplicate explanations of health rules

These types are the same for the Unhealthy and Healthy elements of the MultiMatch rule, so re-explaining them will only add noise to the documentation.

Ok, it's regenerated now.


Optimize bundle file

https://github.com/Stride-Labs/stridejs/pull/14 distributes a somewhat huge bundled file (4mb 😨), and in addition, I'm not sure if it's good for treeshaking. We should look into optimizing it if possible, and also look into exporting a directory instead of a bundled file (probably better for debugging)

Addressed by https://github.com/Stride-Labs/stridejs/pull/17
I'm not sure how we can optimize for now, but maybe ESM can do something. Let's look into this later.
We can probably get some advice from Dan and shave off some of the generated code we'll never use


Problem with glossary and info panel on thumbnailViewer

Reported on forum:
https://xerte.org.uk/index.php/en/forum/bugs-and-issues/1860-glossary-term-word-not-displaying-on-thumbnail-viewer-when-hover-text-overlay#6165
Was found to have several problems:

[ ] Glossary highlighted word was black text on black background
[ ] Glossary and panel would flash ash you move mouse across and glossry popup wouldn't show
[ ] On first load, before resize, panel would be 0px by 0px so would not show on hover

I have provided 2 files to end user to test

Hi @ronm123 @torinfo and @FayCross have either of you come across this issue with thumbnailViewer before? Is it new or just never been spotted before?
If/when you get a chance can you test these commits to make sure they don't break anything you already have?

There appears to be another issue, if you click the close button it opens the image in the browser (if that option is selected in the LO) and it closes the panel in the LO (as it should). But then you cannot open the panel again with that same thumbnail but must cllick a different thumbnail...
I don't think that is right... agree?

@JohnSmith-LT don't think I'd seen the issue before but I guess it's quite a unique combination e.g. glossary term has to exists and term used also be added to the thumbnail description. Testing your two files I can see that the glossary popup now works but I think there's a problem with adding #panelTxt .x_glossary { 		background-color: white; 	}
Because on dark themes like Dark: Blue Grey that then shows a white box behind white text. I think changing that to
#panelTxt .x_glossary { 		color: #ffffff; 	}
Is more likely to work without breaking with other themes but I can't be 100% sure about that without testing them all. However it seems clear that the glossary hadn't worked on the thumbnail page anyway unless that was a bug that crept in with other changes.
Re the other issue of not being able to re-open the same thumbnail after closing without first opening another - yes that doesn't seem right but unless an easy fix I suspect it's not that likely to happen in practice although I guess it could.
I've tested your two files and I think apart from the suggested css change they should fix the issue Anne has reported. But she isn't likely to be able to test that until she asks me to replace the two files on the Northampton installation! ;-)

Thanks @ronm123, yes it's those strange combinations that probably don't get tested enough by us...
After commiting those changes I did think that it may be an issue in other themes - changing it to #ffffff may work better as you suggest so i'll go ahead and do that and look at the close issue and commit some more files over weekend for them.
Didn't realise Anne's install is managed by you !

Hi @ronm123
I've now implemented your suggestion as well as fixing the close button opening the image (if that option selected) and the panel reappearing after closing it and clicking same thumbnail again.
John

@JohnSmith-LT as far as my testing goes this works well now. @torinfo I'm not sure where we are with cherry picking or just making everything currently in develop part of 3.8.4 but if it's still cherry picking then I think this should be part of that too?
@JohnSmith-LT seems like this issue should be closed now.

Cool, i'll close. Have told the person on the forum that you will be updating their install soon.


Updated padding of code snippet on landing page.

Adds more padding around the code snippet on the landing page.

LGTM.  Verified by toggling the styles w/ "Inspect this element" on the live docs.

@jgeewax FYI typically the person filing the PR does the merge (I'm not sure if this is typical on all of GitHub, but it is in our project). I figured I'd merge as this has been sitting for a few days.

Gotcha -- so even external contributors would do their own merging ?

It hasn't come up yet, but GitHub only allows project members to merge (as I've seen with oauth2client) so in those cases it'd have to be one of us.
I don't know if there is a typical approach on GitHub?

OK that makes sense -- outsiders would need you guys to merge. Any objection to treating my PR as you would an outsider ?

Fine with me (assuming you send more PRs in the future)


Downloads 3rd party resources unnecessarily

The browser has to download 3rd party resources (e.g. fonts) for the app to operate.
This is unnecessary and reveals usage patterns.

Addressed by removing the reliance on the web fonts in 2277b69


<EMAIL_ADDRESS>spawn E2BIG or ENAMETOOLONG

What happened?
When I run yarn exec code-pushup collect --config=code-pushup.config.ts in a large Nx 17.1.3 workspace with Angular 16.2.12 (+500,000 LOC, ~500 Nx projects), I get a spawn E2BIG error in the node:18 container image (Debian 12.4 "Bookworm") in GitLab CI and spawn ENAMETOOLONG error locally on Windows.
Code PushUp configuration:
import eslintPlugin, {
  eslintConfigFromNxProjects,
} from '@code-pushup/eslint-plugin';
import { CoreConfig } from '@code-pushup/models';

export default {
  persist: {
    outputDir: 'dist/.code-pushup',
    format: ['json', 'md'],
  },
  plugins: [await eslintPlugin(await eslintConfigFromNxProjects())],
  categories: [
    {
      slug: 'bug-prevention',
      title: 'Bug prevention',
      refs: [
        {
          type: 'group',
          plugin: 'eslint',
          slug: 'problems',
          weight: 100,
        },
      ],
    },
    {
      slug: 'code-style',
      title: 'Code style',
      refs: [
        {
          type: 'group',
          plugin: 'eslint',
          slug: 'suggestions',
          weight: 75,
        },
        {
          type: 'group',
          plugin: 'eslint',
          slug: 'formatting',
          weight: 25,
        },
      ],
    },
  ],
} satisfies CoreConfig;

What would you expect to happen?
The yarn exec code-pushup collect --config=code-pushup.config.ts command should work no matter the codebase size or length of paths.
What steps did you take?

Windows
Node version
18.19.0
Relevant log output
node:18
Code PushUp CLI
Run collect...
Run Plugins:                                            0% |
Run Plugins:                                            0% | Executing  ESLint
Run Plugins: ████████████████████████████████████████ 100% | Executing  ESLint
Run Plugins: ████████████████████████████████████████ 100% | Done running plugins
Plugins failed:
spawn E2BIG
Error: Plugins failed: 1 errors: spawn E2BIG
    at executePlugins (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1997:14)
code-pushup collect
Run Plugins and collect results
Options:
      --progress             Show progress bar in stdout.
                                                       [boolean] [default: true]
      --verbose              When true creates more verbose output. This is help
                             ful when debugging.      [boolean] [default: false]
      --config               Path the the config file, e.g. code-pushup.config.j
                             s       [string] [default: "code-pushup.config.js"]
      --persist.outputDir    Directory for the produced reports         [string]
      --persist.filename     Filename for the produced reports.         [string]
      --persist.format       Format of the report output. e.g. `md`, `json`
                                                                         [array]
      --upload.organization  Organization slug from portal              [string]
      --upload.project       Project slug from portal                   [string]
      --upload.server        URL to your portal server                  [string]
      --upload.apiKey        API key for the portal server              [string]
      --onlyPlugins          List of plugins to run. If not set all plugins are
                             run.                          [array] [default: []]
  -h, --help                 Show help                                 [boolean]
Error: Plugins failed: 1 errors: spawn E2BIG
    at executePlugins (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1997:14)

Windows 11
Code PushUp CLI
Run collect...

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Run Plugins: ████████████████████████████████████████ 100% | Done running plugins
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Plugins failed:
spawn ENAMETOOLONG
Error: Plugins failed: 1 errors: spawn ENAMETOOLONG
    at executePlugins (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1997:14)
code-pushup collect

Run Plugins and collect results

Options:
      --progress             Show progress bar in stdout.
                                                       [boolean] [default: true]
      --verbose              When true creates more verbose output. This is help
                             ful when debugging.      [boolean] [default: false]
      --config               Path the the config file, e.g. code-pushup.config.j
                             s       [string] [default: "code-pushup.config.js"]
      --persist.outputDir    Directory for the produced reports         [string]
      --persist.filename     Filename for the produced reports.         [string]
      --persist.format       Format of the report output. e.g. `md`, `json`
                                                                         [array]
      --upload.organization  Organization slug from portal              [string]
      --upload.project       Project slug from portal                   [string]
      --upload.server        URL to your portal server                  [string]
      --upload.apiKey        API key for the portal server              [string]
      --onlyPlugins          List of plugins to run. If not set all plugins are
                             run.                          [array] [default: []]
  -h, --help                 Show help                                 [boolean]

Error: Plugins failed: 1 errors: spawn ENAMETOOLONG
    at executePlugins (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1997:14)

We will need to setup testing repository with significant amount of Nx projects to debug this as we do not see this issues on currently connected projects.
@LayZeeDK Is there anything else you'd be able to share to help us debug this?

@LayZeeDK
In the past it helped me to set git config --global core.longpaths true for longer paths to be handled correctly on Windows.
Please let us know if this works for you 🙏

No, that's not it.

could be related: https://github.com/nrwl/nx/issues/8646

Node.js outputs E2BIG when `` is raised on Windows, meaning

The global filename characters, * or ?, are entered incorrectly or too many global filename characters are specified.

Node.js outputs ENAMETOOLONG when ERROR_FILENAME_EXCED_RANGE is raised by Windows, meaning

The filename or extension is too long.

according to {Windows documentation](https://learn.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-), or

Indicates that the filename is too long.

according to Node.js documentation

Code PushUp CLI code that uses spawn

https://github.com/code-pushup/cli/blob/79dfce700e3dfc5af2a7bbc303c9a5fb12ee16a3/packages/utils/src/lib/execute-process.ts#L142
https://github.com/code-pushup/cli/blob/79dfce700e3dfc5af2a7bbc303c9a5fb12ee16a3/tools/scripts/start-local-registry.ts#L51-L59 (calls npx nx ...)

What do you suggest as a next step here? If I understand correctly is that we should not use spawn?

Maybe but it's difficult to tell until we know how to reproduce this issue. Maybe it's as simple as trying long project/file names.

Could this possibly be related to #529? I plan to fix that by having the ESLint plugin use a temporary file instead of command-line args.

Since https://github.com/code-pushup/cli/issues/529 was fixed please let us know if the issues still persist 🙂

Thanks, I will schedule to try the latest version at work 2 weeks from now.

I tested this in our monorepo with Code PushUp version 0.35.0 and the E2BIG and ENAMETOOLONG errors are gone both locally on Windows and in CI on Debian so this issue can be closed.
However, now the code-pushup collect causes Node.js to run out of memory. Is there a way to limit how many Node.js processes that are executed in parallel?

Out-of-memory example
Code PushUp CLI
[ info ] Run collect...
Run plugins:                                                                                0% |
Run plugins:                                                                                0% | Executing ESLint
Run plugins: ████████████████████████████████████████████████████████████████████████████████ 100% | Executing ESLint
Run plugins: ████████████████████████████████████████████████████████████████████████████████ 100% | Done running plugins
[ warn ] Plugins failed:
[ warn ]
<--- Last few GCs --->
[638:0x598f850]   758934 ms: Scavenge 4034.0 (4119.3) -> 4033.2 (4128.8) MB, 15.2 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
[638:0x598f850]   758977 ms: Scavenge 4039.6 (4128.8) -> 4037.4 (4129.8) MB, 19.1 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
[638:0x598f850]   760021 ms: Scavenge 4040.9 (4129.8) -> 4039.3 (4149.3) MB, 1029.9 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
<--- JS stacktrace --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 0xb9a300 node::Abort() [/usr/local/bin/node]
 2: 0xaa0794  [/usr/local/bin/node]
 3: 0xd71e20 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0xd721c7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 5: 0xf4f585  [/usr/local/bin/node]
 6: 0xf61a5d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0xf3c14e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 8: 0xf3d517 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0xf1e71a v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/usr/local/bin/node]
10: 0x12e396f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
11: 0x1710679  [/usr/local/bin/node]
Aborted
Error: Plugins failed: 1 errors:
<--- Last few GCs --->
[638:0x598f850]   758934 ms: Scavenge 4034.0 (4119.3) -> 4033.2 (4128.8) MB, 15.2 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
[638:0x598f850]   758977 ms: Scavenge 4039.6 (4128.8) -> 4037.4 (4129.8) MB, 19.1 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
[638:0x598f850]   760021 ms: Scavenge 4040.9 (4129.8) -> 4039.3 (4149.3) MB, 1029.9 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
<--- JS stacktrace --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 0xb9a300 node::Abort() [/usr/local/bin/node]
 2: 0xaa0794  [/usr/local/bin/node]
 3: 0xd71e20 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0xd721c7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 5: 0xf4f585  [/usr/local/bin/node]
 6: 0xf61a5d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0xf3c14e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 8: 0xf3d517 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0xf1e71a v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/usr/local/bin/node]
10: 0x12e396f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
11: 0x1710679  [/usr/local/bin/node]
Aborted
    at executePlugins (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2183:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async collect (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2206:25)
    at async collectAndPersistReports (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2279:18)
    at async handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2746:7)
    at async Object.handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2830:14)
code-pushup collect
Run Plugins and collect results
Global Options:
      --progress     Show progress bar in stdout.      [boolean] [default: true]
      --verbose      When true creates more verbose output. This is helpful when
                      debugging.                      [boolean] [default: false]
      --config       Path to config file, e.g. code-pushup.config.ts. By default
                      it loads code-pushup.config.(ts|mjs|js).          [string]
      --tsconfig     Path to a TypeScript config, to be used when loading config
                      file.                                             [string]
      --onlyPlugins  List of plugins to run. If not set all plugins are run.
                                                           [array] [default: []]
Persist Options:
      --persist.outputDir  Directory for the produced reports           [string]
      --persist.filename   Filename for the produced reports.           [string]
      --persist.format     Format of the report output. e.g. `md`, `json`[array]
Upload Options:
      --upload.organization  Organization slug from portal              [string]
      --upload.project       Project slug from portal                   [string]
      --upload.server        URL to your portal server                  [string]
      --upload.apiKey        API key for the portal server              [string]
Options:
  -h, --help  Show help                                                [boolean]
Error: Plugins failed: 1 errors:
<--- Last few GCs --->
[638:0x598f850]   758934 ms: Scavenge 4034.0 (4119.3) -> 4033.2 (4128.8) MB, 15.2 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
[638:0x598f850]   758977 ms: Scavenge 4039.6 (4128.8) -> 4037.4 (4129.8) MB, 19.1 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
[638:0x598f850]   760021 ms: Scavenge 4040.9 (4129.8) -> 4039.3 (4149.3) MB, 1029.9 / 0.0 ms  (average mu = 0.798, current mu = 0.700) allocation failure;
<--- JS stacktrace --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 0xb9a300 node::Abort() [/usr/local/bin/node]
 2: 0xaa0794  [/usr/local/bin/node]
 3: 0xd71e20 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0xd721c7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 5: 0xf4f585  [/usr/local/bin/node]
 6: 0xf61a5d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0xf3c14e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 8: 0xf3d517 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0xf1e71a v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/usr/local/bin/node]
10: 0x12e396f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
11: 0x1710679  [/usr/local/bin/node]
Aborted
    at executePlugins (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2183:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async collect (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2206:25)
    at async collectAndPersistReports (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2279:18)
    at async handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2746:7)
    at async Object.handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:2830:14)

I have tried both lowering and increasing the memory limit per Node.js process by changing environment variable NODE_OPTIONS=--max-old-space-size=4096 (the default as an example).

Is there a way to limit how many Node.js processes that are executed in parallel?

We actually don't do any parallel execution at the moment, all plugins are run sequentially.

I have tried both lowering and increasing the memory limit per Node.js process by changing environment variable NODE_OPTIONS=--max-old-space-size=4096 (the default as an example).

In some of our codebases we use NODE_OPTIONS=--max-old-space-size=8192.
Linting with type information is known to impact ESLint speed in large repos, perhaps you could try if disabling these rules helps with the memory size.
Another option if your monorepo is really large is to separate into many Code PushUp projects. We have some docs on this setup in our Nx integration guide - expand the Alternatives to linting all Nx projects at once section.
A future optimization I have in mind is to run ESLint itself in parallel, which should bring significant speed improvements for large codebases.

Thank you, @matejchalk.
Both locally and in CI, I have tried to increase the Node.js process memory limit to 16 GB RAM. As mentioned, we lint more than 500,000 LOC. Yes, we do have type-aware ESLint rules and we are not looking to disable them. I might try it but it will require disabling them across 520 TypeScript configurations which is a bit of a pain.
It would be great to be able to split the linting of my Nx projects into several chunks/shards/runners. The Alternatives to liniting all Nx projects at once documentation suggest either:

Split by entry point. Not an option as we currently only have one application project which has dependencies to all 520 Nx libraries with a few exceptions like test utilities.
A Code PushUp configuration for each project, creating a report per project. This would require a lot of boilerplate. An Nx generator could be created for convenience. We would be able to track metrics on the library level but we wouldn't be able to get an overview of the entire codebase even though it's a single application project. Maybe we could structure our codebase in a way that each domain has a single entry point but this requires a huge refactor.

I will probably try:

Disabling type-aware lint rules (although these are as important as other lint rules)
Creating a Code PushUp configuration for a subset of the application and see how much value this brings (if it works) although I would expect a tool like this to be scalable for enterprise applications, ideally out-of-the-box.
Try alternatives, for example Sourcegraph Code Insights and Betterer

@LayZeeDK Thanks for explaining your use case.
I think the memory error could be resolved if we lint projects separately instead of all at once - added more info in #629.

A Code PushUp configuration for each project, creating a report per project. This would require a lot of boilerplate. An Nx generator could be created for convenience.

We actually have an Nx configuration generator in progress - cc @BioPhoton.

HI @LayZeeDK We have a PR (will take some time to merge it, but it is working) that can set up CP and run it per project.
If you are interested to try it before it is released lets chat up!
branch is here:
https://github.com/code-pushup/cli/tree/add-createNodes-api-to-nx-plugin

@LayZeeDK I've just released version 0.39.0 of our ESLint plugin, with the memory consumption improvements implemented in #629. This change enabled us to remove NODE_OPTIONS=--max-old-space-size=8192 in our Nx monorepo (uses the all-in-one approach). Please let me know if it resolves the issue on your end :pray:

Thank you for your continued work on this project and this issue, @matejchalk and @BioPhoton! ❤
I'm pleased to report that after updating to version 0.49.0 and eslintConfigFromAllNxProjects, I got Code PushUp CLI with ESLint plugin running in our big Nx+Angular monorepo for the first time! 🙌
There was only one undocumented requirement: I had to install the bundle-require package after receiving the following error message.
node:internal/errors:496
    ErrorCaptureStackTrace(err);
    ^
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'bundle-require' imported from<EMAIL_ADDRESS>    at new NodeError (node:internal/errors:405:5)
    at packageResolve (node:internal/modules/esm/resolve:916:9)
    at moduleResolve (node:internal/modules/esm/resolve:973:20)
    at defaultResolve (node:internal/modules/esm/resolve:1193:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:403:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:372:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:249:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:39)
    at link (node:internal/modules/esm/module_job:75:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}
Node.js v18.19.0


chore(package): update hls.js to 0.12.1

Hoping to get some of the new fixes (specifically the WebVTT enhancements) into Clappr ASAP

https://github.com/video-dev/hls.js/releases/tag/v0.12.0
https://github.com/video-dev/hls.js/releases/tag/v0.12.1

Please accept as this fixes a major memory leak that is making clappr unusable with multiple players at the moment :(


userProfile configurable option

The font size of the buttonGroup dropdown options should match the font used throughout the system.

Subtext Size: The implementation of this property is not consistent with the font size properties used across the system. Example: On components that have the font size, a number field was used

The subtext on the Admin Portal is not positioned the same way as on the Public Portal. On the Admin Portal, it is misaligned

Dynamic items does not get pulled

If the buttonType selected is dynamicList, it does not pull the list configured
pd-enterpriseproject-adminportal-test.shesha.dev/shesha/forms-designer?id=1874d0f1-c362-43f0-b95e-273dabc62052
From the above list, click on userprofile configs
Click on customise button
Click on add group
Click on 'Add items'
From the button, change item type to dynamic items
Select the dynamic item option
Save the changes and render
Actual Results: It does not pull the dynamic list
Expected Results: It should pull the results available on the dynamic list

Related item #https://github.com/shesha-io/shesha-framework/issues/1966

Hi @Lukeybooi, the dynamic buttons on Public portal is still not pulling the list, like how it is on admin portal
Public Portal

Admin Portal


Fonts refactor to use constants

Refactored the generated code to use static let constants instead of cases, as there is no real use case to want to enumerate over a font name.
There were also some issues with the font registration mechanism, which was broken if:

the font file had a different name than the font name
a different extension than "ttf" or "otf"

The fonts were also always re-registered if the font name was different from the font family name. We now directly use the path we receive from the parser, and match using the font family name from the parser.

Note that the branch name has "breaking" in it, but the refactored code turns out to be compatible, so yay! 🎉

I may see one use case where you would want to iterate over the fonts:

register the fonts ahead of time (e.g. at App startup)

I've done this by adding a static let all: [TheFont] in the enums and then do a all.forEach().register().

I've made a gist with a enum version with your fixes and the all option on each family name.

Hmm, my original point still stands, there's no reason to enumerate over the fonts, because you can't convert a string to the correct font (using rawValue) unless you already know which font family you're targeting.
That doesn't mean we can't add a all static constant for those that might want it.

Ok that's fine by me. We just need to remove the : String, FontConvertible part in the markdown files then 😄

@LiquidSoul does my last commit fix your questions? If so could you approve the PR so we can merge? Thx :wink:

@AliSoftware LGTM 👍


Edit DPTA to work better for mac

Change the dpta to support non-Windows paths.
Get rid of support for closing the browsers at the end of the dpta tests--this is done better & with less errors in the YAML running the automated tests.
Change saved csv file to put the view name in quotes, the same as the iModel name & view flags & other things (this is done to ensure that view names with commas as part of the view name won't mess up the csv file).
Edit the package.json to support "npm run test" and "npm run test:electron", instead of just "npm run start" and "npm run start:electron".

Please describe the changes in the description field.
Please add information to the README re: running the tests on a mac and what the "no_debug" option does.

Please describe the changes in the description field.
Please add information to the README re: running the tests on a mac and what the "no_debug" option does.

@pmconne I've updated the README, and I think I've added the description? I added a description, at least. Not totally sure if it's actually in the description field...

@Mergifyio update


TZ string first offset did not match final defined offset for Africa/Casablanca

I am receiving the following error when looking up the Timezone info for Africa/Casablanca
irb(main):031:0> tz = TZInfo::Timezone.get('Africa/Casablanca')
TZInfo::InvalidTimezoneIdentifier: The first offset indicated by the POSIX-style TZ string did not match the final defined offset in file '/usr/share/zoneinfo/Africa/Casablanca'.

Originally posted by @dennismonsewicz in https://github.com/tzinfo/tzinfo/issues/98#issuecomment-741885573

@dennismonsewicz What operating system and version are you using? What version of the time zone data package do you have installed? Please could you share the /usr/share/zoneinfo/Africa/Casablanca file?
As a workaround for this you can switch to using the tzinfo-data gem.

Thanks for getting back with me @philr!
I am getting these errors in docker using a Mac. Here are the details for the OS in docker
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"```

I am using `v1.2.8` with ActiveSupport (<IP_ADDRESS>). That `/usr/share/zoneinfo/Africa/Casablanca` file looks to be

file /usr/share/zoneinfo/Africa/Casablanca
/usr/share/zoneinfo/Africa/Casablanca: timezone data, version 2, 5 gmt time flags, 5 std time flags, no leap seconds, 100 transition times, 5 abbreviation chars

**UPDATE**

I have installed the `tzinfo-data` gem separately and this seems to have fixed the problem. I am testing things further to confirm

I've downloaded and extracted the files from the latest Debian 9 (stretch) tzdata package (2020d-0+deb9u1) from https://packages.debian.org/stretch/all/tzdata/download. The Africa/Casablanca time zone file loads fine for me (not on Debian, but that shouldn't make a difference).
Please could you confirm which version of the tzdata package you have installed, e.g. by running apt list installed tzdata inside your docker container?
Please could you also upload the /usr/share/zoneinfo/Africa/Casablanca file from the docker container as an attachment so I can examine its contents?

root@79b96439f96a:/app# apt list installed tzdata
tzdata/oldstable,oldstable-updates 2019c-0+deb9u1 all [upgradable from: 2018e-0+deb9u1]

Working on getting the file

I've downloaded the version of the tzdata package you are using (2018e-0+deb9u1) from https://snapshot.debian.org/package/tzdata/2018e-0%2Bdeb9u1. With this version I can now reproduce the error you are seeing.
There's no need to upload your copy of the file.
I'll have a look at what's different with this version and determine whether it's a bug with tzinfo or an issue with the old file.
It is worth noting that version 2018e was released on 2018-05-01 and there have been many changes since (see https://github.com/eggert/tz/blob/master/NEWS). If you rely on time zone data, it'd be a good idea to either keep the Debian tzdata package up to date or use the latest version of the tzinfo-data gem.

@philr sounds good. It looks like using the tzinfo-data gem fixes the issues I was seeing. I'll keep an eye on if a fix goes out for the Debian package, though.

The latest version of the Debian tzdata package is fine. The issue seems to be with older versions only.

@philr thanks for tackling this! Was there a version bump or just gem install the latest master?

The fix hasn't been released yet. I'll probably do that soon.
If you want to test beforehand, you can use the 1.2 branch (master won't be compatible with the version of ActiveSupport you are using).

The fix for this has now been released in versions 1.2.9 and 2.0.4.


issue with libm.so.6 version

I'm using ubuntu server 20.04 on a rapsberry pi 4.
I installed sharp via npm i sharp, but when i require it, it gives me this:
/home/ubuntu/node/wabot/node_modules/sharp/lib/constructor.js:32
  throw new Error(error);
  ^

Error:
Something went wrong installing the "sharp" module

/snap/core/current/lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/ubuntu/node/wabot/node_modules/sharp/build/Release/../../vendor/8.10.6/lib/libvips-cpp.so.42)

- Remove the "node_modules/sharp" directory then run
  "npm install --ignore-scripts=false --verbose sharp" and look for errors
- Consult the installation documentation at https://sharp.pixelplumbing.com/install
- Search for this error at https://github.com/lovell/sharp/issues

    at Object.<anonymous> (/home/ubuntu/node/wabot/node_modules/sharp/lib/constructor.js:32:9)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/home/ubuntu/node/wabot/node_modules/sharp/lib/index.js:3:15)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)

This is the output of ldd --version
$ ldd --version

ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

I have a little idea: sharp checks just the directory /snap/core/current/lib/aarch64-linux-gnu/ in with the file libm.so.6 is linked to libm-2.23.so, which is an older version. In /lib/aarch64-linux-gnu/, instead, the file libm.so.6 is linked to libm-2.31.so.

Hi, you'll probably need to work out why the system runtime linker (and not sharp) is looking for shared libraries in /snap/core/current/lib/aarch64-linux-gnu/ before it looks in /lib/aarch64-linux-gnu/.
Things to consider include: Is node running via snap? Is it configured correctly? Could you have set a custom LD_LIBRARY_PATH?
There are similar reports on unrelated bug trackers and repos so this is very likely to a problem with your local setup.
https://bugs.launchpad.net/snapcraft/+bug/1889409
https://github.com/microsoft/node-pty/issues/467

Is node running via snap?

Yes, it was running via snap. I removed it and installed from binary and now all works correctly!


Sort autocomplete suggestions by applicable types

The first results should be types which are most relevant to the current assignment.
For example, if I'm passing an argument which annotated with type Foo to a function, and I type new  + ctrl+space, I should first see suggestions for constructors of types which will implement Foo.

Hi @alechenninger, can you re-file this at https://github.com/dart-lang/sdk? Thanks!

Gladly, cheers