chore(deps): :arrow_up: update nx monorepo

This PR contains the following updates:

Package
Change
Age
Adoption
Passing
Confidence

@angular-devkit/build-angular
16.0.4 -> 16.0.5

@angular-devkit/core
16.0.4 -> 16.0.5

@angular-devkit/schematics
16.0.4 -> 16.0.5

@angular/animations
16.0.4 -> 16.0.5

@angular/cdk
16.0.3 -> 16.0.4

@angular/cli
~16.0.4 -> ~16.0.5

@angular/common
^16.0.0 -> ^16.0.5

@angular/common
16.0.4 -> 16.0.5

@angular/compiler
16.0.4 -> 16.0.5

@angular/compiler-cli (source)
16.0.4 -> 16.0.5

@angular/core
^16.0.0 -> ^16.0.5

@angular/core
16.0.4 -> 16.0.5

@angular/elements
16.0.4 -> 16.0.5

@angular/forms
16.0.4 -> 16.0.5

@angular/language-service
16.0.4 -> 16.0.5

@angular/material
16.0.3 -> 16.0.4

@angular/platform-browser
^16.0.0 -> ^16.0.5

@angular/platform-browser
16.0.4 -> 16.0.5

@angular/platform-browser-dynamic
^16.0.0 -> ^16.0.5

@angular/platform-browser-dynamic
16.0.4 -> 16.0.5

@angular/router (source)
^16.0.0 -> ^16.0.5

@angular/router (source)
16.0.4 -> 16.0.5

@angular/service-worker
16.0.4 -> 16.0.5

@schematics/angular
16.0.4 -> 16.0.5

zone.js (changelog)
0.13.0 -> 0.13.1

Release Notes

angular/angular-cli
v16.0.5
Compare Source
@angular-devkit/build-angular

Commit
Type
Description

9817b984b
fix
ignore .git folder in browser-esbuild watcher

ce95d2545
fix
ignore folders starting with a dot in browser-esbuild watcher

angular/angular (@angular/animations)
v16.0.5
Compare Source
compiler

Commit
Type
Description

703b8fcac1
fix
do not remove comments in component styles (#50346)

core

Commit
Type
Description

2b6da93e19
fix
incorrectly throwing error for self-referencing component (#50559)

c992109d6c
fix
wait for HTTP in ngOnInit correctly before server render (#50573)

platform-server

Commit
Type
Description

c0d4086c6e
fix
surface errors during rendering (#50587)

angular/components
v16.0.4
Compare Source
material

Commit
Type
Description

f595c783c
fix
core: Fix MacOS Hover feature compatibility with optgroup (#27239)

8fafa88ef
fix
slider: fix track getting out of sync (#27218)

c19bd4c77
fix
slider: handle contextmenu events (#27227)

52a80fef1
fix
tabs: default stretchTabs value not picked up by nav bar (#27212)

b6a9895a0
fix
tabs: tab header is clickable if its disable (#27091)

angular/angular (zone.js)
v0.13.1
Compare Source
Bug Fixes

zone.js: enable monkey patching of the queueMicrotask() API in node.js (#50467) (381cb98)
zone.js: enable monkey patching of the queueMicrotask() API in node.js (#50530) (7837f71)
zone.js: patch entire promise in node (#50552) (cb31dbc), closes #50513 #50457 #50414 #49930
zone.js: revert Mocha it.skip, describe.skip method patch (#49329) (5a2b622)

Features

zone.js: jest 29 should ignore uncaught error console log (#49325) (bc412fd), closes #49110

Reverts

Revert "fix(zone.js): enable monkey patching of the queueMicrotask() API in node.js (#50467)" (#50529) (7567348), closes #50467 #50529 #50529

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: package.json
Command failed: npm ci --ignore-scripts
npm ERR! code EUSAGE
npm ERR!
npm ERR! `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
npm ERR!
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR! Missing<EMAIL_ADDRESS>from lock file
npm ERR!
npm ERR! Clean install a project
npm ERR!
npm ERR! Usage:
npm ERR! npm ci
npm ERR!
npm ERR! Options:
npm ERR! [--install-strategy <hoisted|nested|shallow|linked>] [--legacy-bundling]
npm ERR! [--global-style] [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
npm ERR! [--strict-peer-deps] [--foreground-scripts] [--ignore-scripts] [--no-audit]
npm ERR! [--no-bin-links] [--no-fund] [--dry-run]
npm ERR! [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
npm ERR! [-ws|--workspaces] [--include-workspace-root] [--install-links]
npm ERR!
npm ERR! aliases: clean-install, ic, install-clean, isntall-clean
npm ERR!
npm ERR! Run "npm help ci" for more info

npm ERR! A complete log of this run can be found in: /home/ubuntu/.npm/_logs/2023-06-10T11_22_56_428Z-debug-0.log

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


Add Code of Conduct

We recommend that every repo has a code of conduct. If you don’t feel comfortable creating your own Code of Conduct from scratch we highly recommend using one of the templates provided by GitHub. If you do use a template, please read through the template and ensure that you can and will abide by the Code of Conduct.
Please follow these instructions on how to add a Code of Conduct.
Sample: https://github.com/Recode-Hive/Stackoverflow-Analysis/blob/main/CODE_OF_CONDUCT.md

I would like to work on this issue. Please assign me this task.

Currently, the repository lacks a Code of Conduct file, which is an essential component for fostering a healthy and inclusive open-source community. A Code of Conduct serves as a guideline for expected behavior, ensuring that contributors and participants feel safe, respected, and valued within our community space.
Kindly assign me this issue, so i can work towards it under GSSOC 24

@gofr-dev , I'd like to work on this issue under GSSOC. Could you please add the necessary label and tag to the issue and assign it to me?

Hi @gofr-dev
the code of conduct takes effect (on issues and pull requests, or community activities like events?). Adopting, and enforcing, a code of conduct can help create a positive social atmosphere for your community.
I would like to work on this issue . so please assign this task to me under the label gssoc24 and level1,2,or 3

Duplicate of #38


TypeError occurs with ui-grid and Date type cells

I'm using ui-grid to show many rows of data (about 8 columns). Some of the columns are Dates. The Date columns coming back from a REST is JSON, and is encoded in the following way:
{..."myDate" : "2014-11-10", ....} as per what I understand is required for angular to interpret this as a Date.
This shows up properly in the grid upon request completion. However, when I try to double-click on the cell to edit the date, I do get the Date picking widget....BUT, there is a JavaScript error in the Console:
TypeError: Object doesn't support property or method 'getTime'
at Anonymous function (http://localhost:9091/bower_components/angular-ui-grid/ui-grid.js:11309:15)
at ngModelWatch (http://localhost:9091/bower_components/angular/angular.js:17776:9)
at $digest (http://localhost:9091/bower_components/angular/angular.js:12533:21)
at $apply (http://localhost:9091/bower_components/angular/angular.js:12806:13)
at beginEdit (http://localhost:9091/bower_components/angular-ui-grid/ui-grid.js:11109:15)
at dispatch (http://localhost:9091/bower_components/jquery/jquery.js:5094:6)
at handle (http://localhost:9091/bower_components/jquery/jquery.js:4765:5)
On Google Chrome, the Date appears to have been correctly modified. But on IE11, we never even get the Date picking widget. Here is my partial html, controller, services, etc.
template:

    <!--3rd party javascript-->
    <script type="text/javascript" src="bower_components/jquery/jquery.js"></script>
    <script type="text/javascript" src="bower_components/angular/angular.js"></script>
    <script type="text/javascript" src="bower_components/angular-route/angular-route.min.js"></script>
    <script type="text/javascript" src="bower_components/angular-resource/angular-resource.min.js"></script>
    <script type="text/javascript" src="bower_components/angular-ui-grid/ui-grid.js"></script>
    <script type="text/javascript" src="bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
    <script type="text/javascript" src="bower_components/bg-splitter/js/splitter.js"></script>
    <script type="text/javascript" src="bower_components/angular-spinner/angular-spinner.min.js"></script>
    <script type="text/javascript" src="bower_components/spin.js/spin.js"></script>

 ...

controller JS:
angular.module('myControllers')
.controller('firstController', ['$scope', '$filter', '$log', '$q', '$interval', 'RowService',
function ($scope, $filter, $log, $q, $interval, RowService) {
...
$scope.myOverridesData = RowService.query();
$scope.gridOptions = {
columnDefs: [
...
{field: 'fDate', displayName: 'First Date', type: 'date', enableCellEdit: true, cellFilter: 'date:"dd-MMM-yyyy"'},
{field: 'sDate', displayName: 'Second Date', type: 'date', enableCellEdit: true, cellFilter: 'date:"dd-MMM-yyyy"'},
{field: 'tDate', displayName: 'Third Date', type: 'date', enableCellEdit: true, cellFilter: 'date:"dd-MMM-yyyy"'},
...
],
data: "myData",
//enableCellEditOnFocus: true,
enableCellSelection: true,
enableColumnResizing: true,
enableFiltering: true,
enableGridMenu: true,
enableRowSelection: true,
minRowsToShow: 50,
multiSelect: true,
rowHeight: 20,
rowEditWaitInterval: 200,
showFooterRow: false
};
....
services JS:
'use strict';
var myServices = angular.module('myServices', ['ngResource']);
myServices.factory('RowService', ['$resource',
function ($resource) {
return $resource('/app/rows', {
query: {method: 'GET', isArray: true},
...
});
}]);
It appears either angular, or ui-grid, is not properly identifying model objects as Dates, even when they are Dates. Please fix this, as IE11 is broken without this.

Hi, I want to implement filtering for dates i.e. less than, greater that and equal to... but not sure how to do it. Do I have to set the term to a Date object? a string? Any clue?

I think you could try a date object.  But I think (from memory) it tries to convert whatever it's given into a number, and then uses that.  But if you give a Date, and the column itself contains Dates, then it'll probably convert both into numbers and it'd work OK.  If not, suggest raising a new issue rather than commenting on an old closed one...

This plunker seems to work fine with date objects: http://plnkr.co/edit/mtrzeRXD2oOmoDPg09my?p=preview

thank you so much @PaulL1 I'll take a look at the plunker

angular.js:11655 Unable to assign type from data, so defaulting to string, Im getting this error for Date while populating data in UIgrid.

My code is :   for(i = 0; i < data.length; i++){ data[i].Date = new Date(data[i].Date);} , that displays nan infact


Potential fix for DateTime Widget #878

Eagerly truncating optional seconds/milliseconds when ambiguous to improve behavior in browsers when editing a DateTime widget populated with data
Reasons for making this change
https://github.com/mozilla-services/react-jsonschema-form/issues/878 exists and is eerily similar to a problem I encountered while working on https://github.com/mozilla-services/react-jsonschema-form/pull/894. I recreated locally and the fix worked.
I say potential because this workaround may have side effects in other browsers that don't eagerly truncate the seconds/milliseconds when they are potentially optional.
Checklist

[ ] I'm updating documentation

[ ] I've checked the rendering of the Markdown text I've added
[ ] If I'm adding a new section, I've updated the Table of Content

[x] I'm adding or updating code

[ ] I've added and/or updated tests
[ ] I've updated docs if needed
[x] I've run npm run cs-format on my branch to conform my code to prettier coding style

[ ] I'm adding a new feature

[ ] I've updated the playground with an example use of the feature

Hmm, this is interesting. Your fix definitely fixes it, but I still don't really understand how. Could you please elaborate on what's going on without the fix?
I feel like there are a bunch of other interesting errors in the datetime widget. For instance, if the widget already shows a correct date, and then you enter an invalid year (e.g. "19834"), it completely loses its state. I'm not really sure that using React to manage this kind of widget like this is a great idea. I tried using defaultValue instead of value, the way you might do it in Elm, and that seemed to work a lot better, but requires more invasive changes.

Sure, as I understand it the browser is taking liberal use of what constitutes a valid time string when no "step" attribute is defined and our function that converts the formData value to the HTML value attribute handed to the input is not following the same liberal truncation rules and so the switch between them is confusing React or the browser's native input control's cursor positioning.
https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-time-string states (emphasis mine):

If second is nonzero, or optionally if second is zero:
A U+003A COLON character (:)
Two ASCII digits, representing the integer part of second, in the range 0 ≤ s ≤ 59
If second is not an integer, or optionally if second is an integer:
A U+002E FULL STOP character (.)
One, two, or three ASCII digits, representing the fractional part of second

and right above "Using form inputs" https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time#Using_time_inputs MDN confirms:

When a form including a time input is submitted, the value is encoded before being included in the form's data. The form's data entry for a time input will always be in the form "name=hh%3Amm", or "name=hh%3Amm%3ass" if seconds are included (see Using the step attribute).

So if my understanding is correct then the following is happening with the React components:

User has valid date and so components state is valid date, let's say 10:15 PM.
User wants to change minutes from 15 to 20 and so clicks into minutes and begins typing "2".
React catches the input change and when run through the code the returned value actually changes it to 10:02:00 PM.
I could be wrong but I think React JSON Schema Forms renders asynchronously and so the browser gets a chance to override the value using its logic which truncates the added :00 optional seconds bit from 10:02:00 PM to the truncated 10:02 PM.
The user finishes typing "0" for the second character of "20" but React then sees this as radically different (10:15 PM -> 10:02:00 PM) and not just a simple one character change (10:15 PM -> 10:02 PM) and so it or the browser gets confused and understandably resets the cursor position. With the cursor position reset the newly entered character goes into an unexpected place and we get the "overwrite last character" behavior.

Based on this understanding my change attempts to follow this behavior a little more closely by excluding the milliseconds and seconds when they are zero. I honestly hate it, but I think it is the root cause because if we add the "step" attribute the appropriate numbers always show and if the step format matches our function's output (1 for "seconds" resolution) the bug disappeared.
All that being said my fears are what other browsers will do.. are there some that don't eagerly truncate seconds/millis when "steps" is left undefined? What about browsers that fall back to plain inputs? The MDN page has lots to say. I think our widgets here have a unique ability to help enforce some of that pattern validation stuff in the onChange handler and value transformer functions which is a nicer place than if we were left on our own with only the native inputs! I hope to make an "alt-time" variant that uses dropdowns as well if time permits - I wanted to reuse the time portion of th existing alt one but I think we may want to re-create the 12-hour AM/PM behavior that browsers seem to prefer on the "time" input.

OK, thanks for the detail. It seems to me like the missing piece is step 4 above, where I think what's happening is that React noticed that the value is different than the input's existing value, and updates or replaces the element, which resets its internal state, causing subsequent keypresses to be interpreted as though they were the first keypress. Your fix works around this by trying to match the existing value as closely as possible. But as you note, it seems quite fragile, and we have no guarantee if this behavior will remain in future versions of Chrome, let alone other browsers.
Additionally, I think there are other issues that we won't be able to solve here, like the fact that if you add a fifth digit to the year field, the input gets reset. That's pretty surprising. I'm not a React expert but it seems to me that this kind of input element has too much internal state for us to be using it in the traditional "controlled" React component style. I think our options are:

Merge a PR like this. Status quo is mostly unchanged. Other quirks regarding use of datetime remain. This bug may rear its head again on other browsers or on later versions of Chrome.
Move to using defaultValue for this field and leaving value alone. The field's state is managed entirely by the DOM. Strange quirks go away entirely. Unfortunately, we will no longer be able to "update" the field's value by updating the formData, which makes this component much less "React-y".
Move to using ref, as documented in https://reactjs.org/docs/uncontrolled-components.html. I've never used this before and have no idea what it does or how it works, but I imagine this means we have to do a lot more work to get value out of the "uncontrolled" input, and then decide for ourselves when we want to update the value of the component, probably using some home-grown ad hoc logic that behaves more-or-less like React's, but possibly leading to a bunch of strange behaviors and bugs if we mess it up.

None of these approaches sound really great to me. What do you think? The only thing I think we should definitely do is add a note in the README explaining how fragile these native input widgets are.

I like this route. We can do some browser testing and try to cover or document discovered cases. Unfortunately after poking around at the other options I think this or patching ajv (see rest of this comment) is the smoother way forward.

Using defaultValue almost works.
We can use the onChange handler to keep our formData in sync with user changes.
For keeping input value in sync with formData changes we can use UNSAFE_componentWillReceiveProps and to get the component to see the updated defaultValue we can provide and mutate a key property to get React to re-render the uncontrolled component back to its defaultValue.
However, this resetting of the key to force redraw messes up rapid user input like the original fix was trying to correct. Not to mention this requires changes to BaseInput to support not always passing value and to support passing defaultValue. Or an alternative BaseInput that provides that behavior to be created.

Moving to refs works though. It goes in the same direction as Option 2 because uncontrolled components cannot have value directly set.
We can define onChange handler and we can use UNSAFE_componentWillReceiveProps to set the ref's input value. There we can directly update the ref's DOM input's value to keep things in sync with formData without tricking redraws by changing key.
But we also need to modify BaseInput to support refs. That means also not passing value and instead passing defaultValue, configuring a ref
reference, and using the ref reference in UNSAFE_componentWillReceiveProps to update the uncontrolled component's value accordingly (or we can keep passing value and have the BaseInput handle all the ref-related bits).
Either way to support refs we also need to change BaseInput to not be a stateless functional component and to not pass value in favor of defaultValue (like option 2). It already passes ref but React does not allow to pass value when using ref or it throws warnings). Alternatively a specialized ref supporting BaseInput could be created for this purpose. In fact the only thing that needs the ref in this case is the BaseInput itself.
This approach works but still has problems - namely that runs into the exact same problem due to text formatting for ajv. If we do not clean up the text
for ajv, the bug does not appear, but in some cases the form cannot be submitted.

So the real problem is beginning to look like the JSON Schema parser not supporting the browser's preferred time format of HH:MM.
A seemingly simple solution is to fix ajv so that it accepts HH:MM as a valid time string, or we handle that one edge case more
explicitly for AJV's sake for validation and less so for the browsers. Here are two ways we could go about that:

Main Option: Fix problem at source in AJV
They are going off of RFC3339 which is the same ballpark but does not have the optional clause around seconds. I think partial-time.

partial-time    = time-hour ":" time-minute ":" time-second

The change would be easy enough:
The time regular expression at
https://github.com/epoberezkin/ajv/blob/797dfc8c2b0f51aaa405342916cccb5962dd5f21/lib/compile/formats.js#L36
would be changed from
  time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,

to
  time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d?|23:59:60|23:59)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i

But since only time-numoffset drops the time-second I am guessing they will be against this change.

time-numoffset  = ("+" / "-") time-hour ":" time-minute

So,

Alternative Option: Fix wrapping of AJV
Instead of fixing it at the ajv layer we could keep a shim in React JSON Schema Forms that adds the :00 if necessary
before passing to AJV. This option has some similarities with my current implementation, aka option 1, but instead of trying to transparently handle swapping proper data with the browser it would prefer the browser data all the time except validation time when it would swap 'HH:MM' to 'HH:MM:SS' to prevent validation failure. Because of that it feels a little less brittle than hoping all browsers behave the same way, as it just relies on ajv behaving the same way instead.. that at least sounds convincing as I type this. 😊

What a pain. Either way I think that noting something about this sort of behavior in the docs is a great idea.


PIXI.loader: Spritesheet image will fail to load if Spritesheet was loaded with crossOrigin = true

If i load a spritesheet with crossOrigin true it will not load the image from the meta section
	let options = {
		crossOrigin: true
	};

	PIXI.loader.add("sprites", "spritesheet.json", options);

PIXI 3.0.8
I have supplied a fix in the following commit: https://github.com/H34D/pixi.js/commit/c39e3786ddaec0f3fb91a0f492363b6703230a8f it would be cool if it makes it in the framework.
Regards,
H34D

This is a bug in resource-loader, I'd post it there. Relevant code:
https://github.com/englercj/resource-loader/blob/master/src/Resource.js#L65
https://github.com/englercj/resource-loader/blob/master/src/Resource.js#L253-L256

Is this the solution for this problem?
http://www.html5gamedevs.com/topic/17315-asset-loader-failed-to-load-element-cross-domain/#entry97499

Not sure, because I don't know what your issue is specifically.

I really cant share the example, but basically pixi is unable to load the texture when we use cloudfront.
The only thing that I have is the error that I posted there. It is not me that can put the textures on the cdn right now, but if you have any sugestion of what I can try when we can get back to it it would be usefull :)
I will try this fix at the time anyway, simply noticed this issue was here and decided to ask-

If you set crossOrigin, your server need to enable CORS headers. Usually for an image off a CDN you don't need to worry about that, you can just load the image and the library will take care of it for you.
If you are having problems, open an issue on the resource-loader repository with a case the reproduces the error so I can debug it. Closing this now since it is unrelated to pixi.

We use cloudfront with PIXI and it works. You need to configure S3 with a CORS policy xml file (google it) and configure cloudfront to copy the headers of the origin (by default, it won't).
Do not forget to invalidate your files when you test your fix, because your headers are cached with the files.

i discoved this using aerobatic.io hosting out of bitbucket. i can reproduce it with the current version and its fixed with my fix.


Edit text issue: Once clicked, it loses focus

First, thanks for this plugin :)
That said, I dont understand why nobody reported this before:
(the screencast below has been shot from the demo)

When double-clicking on text, it opens the text editor (as expected).
However, if you try to click elsewhere to move your cursor, the editor loses focus, and the line below prevents it from receiving further pointer events
https://github.com/artf/grapesjs-mjml/blob/e887e58602fc2243b6ad59d04c4cc1d8bcb22cb0/src/components/index.js#L218
... which is quite annoying from a user perspective.
What is the use of these lines, and can they be removed/fixed ?
Thanks !

I already posted about it and just added a solution: https://github.com/artf/grapesjs/issues/1649

Thanks


xteve v2.0.2 crash

Hello,
Since the v2.0 upgrade I'm encountering a daily crash on CentOS v7.6.x.
Now I'm with 2.0.2 build 0020; database version 2.0.0 and the problem still occurs.
Log attached

Strange, you're the first one with this error.
I think I have found the error. Please test this with the beta <IP_ADDRESS>1
https://github.com/xteve-project/xTeVe#xteve-beta-branch

Thank you for the feedback. Two out of three servers are generating this issue on my side after the v2.0 upgrade. Never got any issues before :)
Running the beta on all of them now: [xTeVe] Version:               2.0.2 Build: 0021, I'll come back with feedback if the issue is solved or not.
Thanks once again!

Got another one today. Log attached
log.txt

The log is not from the beta version.
Current beta version is <IP_ADDRESS>3
You also recognize it when beta is displayed in the top left corner of the web interface.
 Do I need to do something else to run in?

The log is not from the beta version.
Current beta version is <IP_ADDRESS>3
You also recognize it when beta is displayed in the top left corner of the web interface.
This is your version:
2019/08/27 17:05:28 [xTeVe] Version:               2.0.2 Build: 0020
...
2019/08/27 17:05:28 [xTeVe] GitHub:                https://github.com/xteve-project
2019/08/27 17:05:28 [xTeVe] Git Branch:            master [xteve-project]

Hi, seems that the log is correct, it's the beta version. I've provided a full log and it started as normal and then app upgrated it self as beta. If you scroll below you will see that it's running as beta.

Update to Beta <IP_ADDRESS>4
I found something else.
If the error still occurs now, I have no idea.
The buffer consists of two processes that access an object. One is reading, the other is writing.
The error states that both happen simultaneously. That's why it crashes. I've created a third process for testing that writes several thousand times a second into the same object. xTeVe does not crash in my tests.

log.txt
It's still crashing. No idea :)

I'm running 3 instances on a VM with 10GB of RAM. I've seen that the entire RAM is used.
It might be due to the new feature "stream buffer with 1MB buffer size" that I'm using with v2? I've just set 24GB on the VM to see if the behavior is improving.

I'm running 3 instances on a VM with 10GB of RAM. I've seen that the entire RAM is used.
It might be due to the new feature "stream buffer with 1MB buffer size" that I'm using with v2? I've just set 24GB on the VM to see if the behavior is improving.

It might be due to the RAM. Killing all xteve instances reduces the ram usage to 400MB instead of 10GB.
I have attached a graph.

Here it is very well described:
https://povilasv.me/go-memory-management/
To create the xteve.xml, all XMLTV files are loaded into memory. Then the memory is marked for release. Whether the memory is then released is decided by the operating system. Memory is only released by the OS if other programs need it.

I've created a new environment with KVM VM, 128GB of RAM, 2GB/s write speed with intel Optane 900p, Ubuntu OS, just to ensure that there is no system IO limitation.
I migrated my xteve folder and run it from there.
One more thing, not sure if the issue if from xteve latest version or Emby, but if you run 2 xteve sessions on different ports with the same channel id, Emby is not doing anymore the load balancing between the available tuners. I'm using Emby v<IP_ADDRESS>.
No idea what to do next :)
xteve.log

I found something interesting.
Only one stream on xteve with 2mb buffer enabled is using the entire ram.
I can see this error: [xTeVe] [ERROR] Service Unavailable (This error message comes from the provider) - EC: 4004

I have no idea how Emby's load balancing works. I also do not know what that has to do with xTeVe.
xTeVe is written in Go, memory management is garbage collection. 90% of your RAM will be the XMLTV files. Memory management is handled by your operating system. If no other program requires memory, there is no reason for the OS to release the memory.
Service Unavailable: Is an HTTP status, all connections to the server are HTTP connections, if the status is not OK, the connection is closed and status is in the log. So far, I was able to reproduce any HTTP error / status in VLC as well.

I have no idea how Emby's load balancing works. I also do not know what that has to do with xTeVe.
xTeVe is written in Go, memory management is garbage collection. 90% of your RAM will be the XMLTV files. Memory management is handled by your operating system. If no other program requires memory, there is no reason for the OS to release the memory.
Service Unavailable: Is an HTTP status, all connections to the server are HTTP connections, if the status is not OK, the connection is closed and status is in the log. So far, I was able to reproduce any HTTP error / status in VLC as well.

I'm running 3 xteve on different ports on a single machine. Before one of xteve crash that process is eating up the entire OS ram. Killing the xteve process is freeing up the RAM. I think this has to do with the streaming buffer. I'll try to disable this functionality to see if that's the cause of the crash.

Did you activate Linux swap?

Yes, it’s activated

I have disabled the new v2 feature streaming buffer and everything is back to normal. Xteve is stable for the latest days, no more crash. I think the new functionality is heaving and issue. I'm using it with Emby latest beta version.

In a few days there will be an update for the buffer. Then FFmpeg and VLC can be selected.

this is happening to me too with the newest version. how can i fix it please? i have 2 instances of xteve on different ports


2.2.5 regression: Object reference not set to an instance of an object

Description

IMPORTANT: if the defect is reproduced only in a workflow from within the Visual Studio IDE then do not report the issue here - instead, please report it using Visual Studio's "Send Feedback" option that can be accessed from the Help menu OR using this link https://developercommunity.visualstudio.com.
IMPORTANT: Before posting an issue, please search the repository for similar ones. It might have been solved or reported already.
For a defect specific to the MSTest V2 test framework, describe the issue you've observed.

Hello, one of my CIs when testing TestAdapter update from version 2.2.4 to 2.2.5 has failed (two times) with an error that looks like race-condition caused by TestAdapter. The same code/project has compiled fine within the same CI, I'm quite confident that this is a regression in TestAdapter. The test was done with dotnet test command.
Steps to reproduce

What steps can reproduce the defect?
Please share the setup, sample project, target platform (desktop, core, uap)

If my guess about race condition is correct, I suspect the combination of [assembly: Parallelize(Scope = ExecutionScope.MethodLevel)] in assembly info, and a [DataTestMethod] with two or more [DataRow] may trigger it, the chance may be higher with more tests/rows declared.
I'm unable to reproduce it on my own machine personally. The issue was reproduced within AppVeyor's CI, here and here, doesn't look like a coincidence or any environment fault, updating TestAdapter from 2.2.4 to 2.2.5 causes that regression.  Simply execute dotnet test ArchiSteamFarm.Tests within the repo, msbuild will do the rest. This is unfortunately the only lead I have, I couldn't reproduce it myself, neither in standalone repro, nor within my project. GitHub CI (actions) was also unable to trigger this, and I test with 3 different OSes there.
For reference, the full command triggering the issue was:
dotnet test ArchiSteamFarm.Tests -c "Release" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo

Additional ref: https://github.com/JustArchiNET/ArchiSteamFarm/pull/2353
Expected behavior

Share the expected output

All of the existing, passing tests in TestAdapter in version 2.2.4 passing also in 2.2.5.
https://ci.appveyor.com/project/JustArchi/archisteamfarm/builds/39782316#L303
Actual behavior

What is the behavior observed?

Tests failing with:
Test run for C:\projects\archisteamfarm\ArchiSteamFarm.Tests\bin\Release\net48\ArchiSteamFarm.Tests.dll (.NETFramework,Version=v4.8)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
  Failed DoesntSplitInTheMiddleOfMultiByteChar (True)
  Error Message:
   Object reference not set to an instance of an object.
  Stack Trace:
     at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)

https://ci.appveyor.com/project/JustArchi/archisteamfarm/builds/39782325#L326
Environment

Please share additional details about the test environment.

Operating system
Build version of vstest.console
Package version of MSTest framework and adapter
Other installed packages and their versions on the test project

Setup:
.NET SDK (reflecting any global.json):
 Version:   5.0.301
 Commit:    ef17233f86
Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\5.0.301\
Host (useful for support):
  Version: 5.0.7
  Commit:  556582d964

I'm testing net5.0 and net48 targets, the net5.0 seems to work correctly, AppVeyor reports issue only with net48. Not sure if that's relevant, perhaps net48 is simply slower or there is some other difference that could cause that.
All packages of the test project:
    <PackageVersion Include="ConfigureAwaitChecker.Analyzer" Version="5.0.0" /> <!-- Analyzer only, not a runtime lib -->
    <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
    <PackageVersion Include="MSTest.TestAdapter" Version="2.2.5" />
    <PackageVersion Include="MSTest.TestFramework" Version="2.2.5" />

Link to the affected repo (and branch): https://github.com/JustArchiNET/ArchiSteamFarm/tree/renovate/mstest.testadapter-2.x
My own observations
Judging by the history of changes, I blindly guess that the culprit could be introduced in this commit, as SerializerCache dictionary was introduced, but the subsequent calls operating on the dictionary are not synchronized, neither the dictionary is concurrent. This is a total blind guess though.
I wish I could be of more help, but since I'm unable to come up with a repro, I nailed this one down to as much information as I could realistically provide. Perhaps you'll have more luck than me reproducing this issue.
Thank you in advance for taking a look into it.

Side note: as expected, the 3rd CI try actually succeeded, so this is most definitely some kind of race condition with the internal structures, see https://ci.appveyor.com/project/JustArchi/archisteamfarm/builds/39785367

Hi @JustArchi, thank you for the feedback.
Thank you for all your investigations! If it's not possible or easy to create a repro; can you add --diag:diag.log to your test runner, and share the resulting *.log files with us? (It should at least create to files).
dotnet test ArchiSteamFarm.Tests -c "$env:CONFIGURATION" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo --diag:diag.log

Hey @Haplois, thanks for answer.

I was checking out your repo (see), we recommend keeping MSTest.TestAdapter and MSTest.TestFramework package versions same. It wont cause any problems between 2.2.4 and 2.2.5; but it might cause weird and hard to diagnose issues.

This is because my renovate bot responsible for dependencies managed to bump the Framework to 2.2.5 without issues but failed at Adapter, I have them synchronized normally. Regardless, the bug is reproduced with framework and adapter both at being 2.2.5.

Thank you for all your investigations! If it's not possible or easy to create a repro; can you add --diag:diag.log to your test runner, and share the resulting *.log files with us? (It should at least create to files).

I'm on it, might require a few tries to reproduce though: https://github.com/JustArchiNET/ArchiSteamFarm/commit/472acb03ea5ec668c6e6c05c9b3b51bc4bbea512
I'll post a reply once I manage to grab some logs, shouldn't take too long.

@Haplois got it first try. I'm attaching the full log from my CI run, it's not easy to grab the files from failed runs so I just configured my CI to print them on the console upon failure right before returning.
log.txt
The diag logs start at line 323 and continue all the way to the end of the file. I used type *.log, so there should be all generated.
Hope it helps!

I experienced the same. deleted the .vs folder and the error was gone.
My configuration:
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.5" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.5" />

Not saying this is not an issue, it is. But at least this workaround worked for me.

I don't have a .vs folder in my project and dotnet test probably doesn't create one, does it? It could be a total coincidence, unless I'm missing something. I have an impression that only Visual Studio IDE creates that one.

yes, you're right, @JustAchi! .vs folder is an artifact of VS and your environment is different. But I can swear I got the same exception on the very first run. Then I got much more serious trouble (reported as another regression in 2.2.5).

After investigating this, we found two reasons for this issue

Because of a bug (#869) introduced in 2.2.4, if your tests contains any data which is not serializable - you might get this error. Workaround is either upgrading to 2.2.5+, or downgrading to 2.2.3. After version change, you might need to clean the solution, and rebuild it.

It might be because of a race condition (#906) in out internal serializer. Current workaround is downgrading to 2.2.3. You can update first version after #906 is fixed.

Fix for this issue is tracked in #906, closing this issue.


Docs: constructor/initialize

Hi @lukekarrys and others,
ref this issue on ampersand-rest-collection. TL:DR: constructor arguments are not independently optional, but the docs make it seem that way.
Updated the constructor/initialize part in the docs to match more with the actual contructor-code.
NOTE! This is my first PR ever, so feedback welcome!
Cheers

Looks great! Thanks @gnimmelf!


max_sentence() prints result instead of returning it

max_sentence() in utils.py prints the result instead of returning it
I have made a quick fix for it:
def max_sentence(text: str, n: int):
    """
    Print the first 'n' sentences of the given text.

    Args:
        text (str): The input text to be processed.
        n (int): The number of sentences to be printed from the beginning.

    Returns:
        None
    """
    punctuations = set("?!.")

    sentences = []
    sentence_count = 0
    for char in text:
        sentences.append(char)
        if char in punctuations:
            sentence_count += 1
            if sentence_count == n:
                result = "".join(sentences).strip()
                return result
            result = "".join(sentences).strip()
            return result

Thank you for your sharing! I will check and replace it.

Thank you. The code has been modified as follows, and this change is scheduled to be included in version 0.1.40. We appreciate you reporting the issue.
def max_token(text: str, n: int) -> str:
    """
    Return the first 'n' tokens (words) of the given text.

    Args:
        text (str): The input text to be processed.
        n (int): The number of tokens (words) to be included in the result.

    Returns:
        str: The first 'n' tokens from the input text.
    """
    if not isinstance(text, str):
        raise ValueError("Input 'text' must be a valid string.")

    tokens = text.split()  # Split the text into tokens (words)
    if n <= len(tokens):
        return " ".join(tokens[:n])  # Return the first 'n' tokens as a string
    else:
        return text

def max_sentence(text: str, n: int):
    """
    Print the first 'n' sentences of the given text.

    Args:
        text (str): The input text to be processed.
        n (int): The number of sentences to be printed from the beginning.

    Returns:
        None
    """
    punctuations = set("?!.")

    sentences = []
    sentence_count = 0
    for char in text:
        sentences.append(char)
        if char in punctuations:
            sentence_count += 1
            if sentence_count == n:
                result = "".join(sentences).strip()
                return result


Exception caught by widgets library

Steps to Reproduce

Run flutter create bug.
Update the files as follows: ...
...

Expected results:
Actual results:

Logs

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.

Hi @AdrianoJPN,
Your issue details seem to be incomplete.
Can you please provide your flutter doctor -v, your flutter run --verbose and a minimal complete reproducible code sample that shows the issue.
Thank you

Without additional information we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Invalid variable declaration in examples/src/log.h

Answering your (closed) stackoverflow question.
Class forward declaration here:
https://github.com/GordonZhang2024/log.cc/blob/8b7c69ce4dcf75526cb4ae1573d6bf8a65d44857/examples/src/log.h#L25
Function declaration (and not a variable with default value) here:
https://github.com/GordonZhang2024/log.cc/blob/8b7c69ce4dcf75526cb4ae1573d6bf8a65d44857/examples/src/log.h#L51
When you declare a function inside a class definition the return type of said function needs to be ODR accessible. (cf: this so answer).

I've fixed this problem. Thanks


Button dropdown does not align right when on right side of page

I currently have a dropdown button on the right side of my page. When clicked, the left edge of the dropdown aligns with the left edge of the button.  Having the right side of the dropdown align with the right side of the button would solve this.
http://i.imgur.com/yeYqW.png

nice, i also want to post this at the same time :)
Here is a jsfiddle what happens.
http://jsfiddle.net/TFxgK/
If a button  in a .pull-right the button should opens to the left.
:+1:

just a quick workaround is to set this class ".navbar .nav.pull-right .dropdown-menu" to replace to ".pull-right .dropdown-menu"
here is a code-sample to get it to work without editing the bootstrap.css
.pull-right .dropdown-menu:after {
    left: auto;
    right: 13px;
}
.pull-right .dropdown-menu {
    left: auto;
    right: 0;
}

Thanks for the quick fix simonfranz! Works perfectly.

Just resolved this in 2.0.2-wip. I've abstracted the styles mentioned here (we used them in the navbar's CSS) to be generalized for use everywhere else. The .dropdown-menu:after, however, has still be relegated to the navbar as that's the only place it applies for now.
Thanks!

you can use the class dropdown-menu-right in the version 3.3 of the bootstrap

         Mobile Application         Web Application         Backend Developement

This is worked for me.

Here is the example that worked for me by @troyharvey. Forced to use bootstrap3 editing the Views associated with the Flask-Admin extension and couldn't figure out how to get my dropdown items to line up under the menu button. This did the trick. Just adding the .btn-group and .pull-right classes on the overall div wrapping my dropdown did the trick. Thanks @troyharvey.

Here's a jsbin .dropdown-menu demo of this fix. Thank you for this!


Url opening in usages and examples

Double click on url or type in usages and examples should open this url or type definition in browser.

Got no clue how to form url info that are coming from srclib.
There is info from "src" command:
{
  'Error': False,
  'EndLine': 363,
  'DefUnit': 'testing',
  'File': 'src/testing/testing.go',
  'DefPath': 'common/Fail',
  'CommitID': 'ac452349e4f40c30d50f9922bf2c4592e748ce5e',
  'UnitType': 'GoPackage',
  'StartLine': 355,
  'DefUnitType': 'GoPackage',
  'Unit': 'testing',
  'End': 13042,
  'Repo': 'github.com/golang/go',
  'Start': 13038,
  'DefRepo': 'github.com/golang/go'
}

Any ideas how to transform it to url to sourcegraph?

You would turn it into a def like this: "sourcegraph.com/[DefRepo]/.[DefUnitType]/[DefUnit]/[DefPath]"... but we should expose this through the api.

Also, I like how double-clicking on the examples will open them. Is there any way we can indicate that? (Like, we could have a line "double click on definitions to open them", or we could underline the clickable definitions)

You would turn it into a def like this: "sourcegraph.com/[DefRepo]/.[DefUnitType]/[DefUnit]/[DefPath]"... but we should expose this through the api.

This conversion results "https://sourcegraph.com/github.com/golang/go/.GoPackage/testing/common/Fail" that is not exists on sourcegraph.com...

we could have a line "double click on definitions to open them"

Did this feature. Variant with underlining looks complex.

Ah, that's because the actual pattern is "sourcegraph.com/[DefRepo]/.[DefUnitType]/[DefUnit]/.def/[DefPath]", and we definitely need an API call that generates it.


[Bug]: Unable to get the symbol of a SimpleNameReferenceNode

Description
When trying to get the symbol of a SimpleNameReferenceNode of a ExpressionNode using semanticModel.symbol(simpleReferenceNode) returns null as the result.
Sample Code
string data = check weatherClientLocal->/weather/[country]/weather.get;

Trying to get the symbol of the ComputedResourceAccessSegmentNode : [country]
Steps to Reproduce
No response
Affected Version(s)
No response
OS, DB, other environment details and versions
No response
Related area
Other
Related issue(s) (optional)
No response
Suggested label(s) (optional)
No response
Suggested assignee(s) (optional)
No response

@dulajdilshan @mohanvive since this is a blocking issue for the SA tool work (which is targeted for the kubecon in next month),  will it be possible to prioritise this fix for the next update 2 patch release (2201.2.1)?

@dulajdilshan @mohanvive since this is a blocking issue for the SA tool work (which is targeted for the kubecon in next month),  will it be possible to prioritise this fix for the next update 2 patch release (2201.2.1)?

Sure. I have already started working on this

Please find the simplified valid code here.
import ballerina/http;

service /sample on new http:Listener(5050) {
    resource function get greeting(string country) returns error|Weather{
        http:Client weatherClientLocal = check new("http://localhost:8080");
        Weather data = check weatherClientLocal->/weather/[country].get;
        return data;
    }
}

public type Weather record {
    # Weather condition id
    int id?;
    # Group of weather parameters (Rain, Snow, Extreme etc.)
    string main?;
    # Weather condition within the group
    string description?;
    # Weather icon id
    string icon?;
};

Unable to access the symbol of both weatherClientLocal and country in the line
Weather data = check weatherClientLocal->/weather/[country].get;


Add option to don't write files to disk and others improvements.

Please make sure the below checklist is followed for Pull Requests.

[ ] Checks are green
[ ] Tests are added where necessary
[ ] Documentation is added/updated where necessary
[ ] Coding Rules & Commit Guidelines as per our CONTRIBUTING.md document are followed

Can you finish this PR please @mshima?

@MathieuAA sure. I will try later today.

Probably I will split in smaller PRs.

Thanks :) Do as you please!

@MathieuAA first round is ready.

Can we close this one then?

Can we close this one then?

There are 2 more changes.

@MathieuAA this is the last one for now.

I just noticed that the only method that take subFolder (application.name) into account is writeEntities.
Am I wrong or should we change that?

I just noticed that the only method that take subFolder (application.name) into account is writeEntities.
Am I wrong or should we change that?

@mshima sorry didn't see your comment... Anyway, this is good to go, thanks :)


Crash while using one instance of same HTTPClient more then once

Second request with same instance of HTTPClient crashes, the state did not reseted

thanks!


Examples don't work due to goerli stream being deprecated

I know we talked on Discord, but just putting it here for better tracking.
Describe the bug
Goerli stream is deprecated, so it needs to be changed to sepolia stream.

All places that use goerli.starknet.a5a.ch shouldn't work
To Reproduce
Try the example at https://github.com/apibara/dna/tree/main/examples/postgres
Expected behavior
The example should work.
Additional context
Add any other context about the problem here.

I cleaned up the examples from the repo and will move them to the documentation.


Test against InfluxDB v1.1.0

Coverage remained the same at 92.342% when pulling 3370b8468da6a322061f04212b5f3e9d6387f7af on test-against-influxdb110 into c8f99a9849d35d3a2b5021c8bd2917886af15ad0 on master.

Coverage remained the same at 92.342% when pulling 3370b8468da6a322061f04212b5f3e9d6387f7af on test-against-influxdb110 into c8f99a9849d35d3a2b5021c8bd2917886af15ad0 on master.


Mat grid inside another mat grid

Bug Reproduction
StackBlitz
<mat-grid-list gutterSize="0" cols="14" rowHeight="2:1" [ngStyle]="{background:'#E5E5E5'}">
    <mat-grid-tile colspan="1" rowspan="3"></mat-grid-tile>
    <mat-grid-tile colspan="2" rowspan="1" [ngStyle]="{background:'lightgreen'}">Header</mat-grid-tile>
    <mat-grid-tile colspan="8" rowspan="1"></mat-grid-tile>
    <mat-grid-tile colspan="2" rowspan="1" [ngStyle]="{background:'lightgreen'}">Header</mat-grid-tile>
    <mat-grid-tile colspan="1" rowspan="3"></mat-grid-tile>
    <mat-grid-tile colspan="12" rowspan="1" [ngStyle]="{background:'red'}">
        <mat-grid-list gutterSize="0" cols="8" rowHeight="8:1" [ngStyle]="{width:'100%',height:'100%'}" >
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">1</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">2</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">3</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">4</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">5</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">6</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">7</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">8</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">9</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">10</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">11</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">12</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">13</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">14</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightblue'}">15</mat-grid-tile>
            <mat-grid-tile colspan="1" rowspan="1" [ngStyle]="{background:'lightgreen'}">16</mat-grid-tile>
        </mat-grid-list>
    </mat-grid-tile>
    <mat-grid-tile colspan="12" rowspan="1" [ngStyle]="{background:'lightgreen'}">Observations
    </mat-grid-tile>
    <mat-grid-tile colspan="14" rowspan="1" [ngStyle]="{background:'#E5E5E5'}">Tabs</mat-grid-tile>
</mat-grid-list>

Expected Behavior
I should be able to see all numbers from 1 to 16, translates to both rows of inner grid
Actual Behavior
I only see numbers from 9 to 16, translates to only second row is visible of the inner grid even when space if available(marked by red bg color of the inner grid)
Environment

Angular:8.2.14
CDK/Material:8.2.3
Browser(s):Chrome 78
Operating System (e.g. Windows, macOS, Ubuntu): macOS

Any help will be appreciated
Live Example

Solved it the problem is mat grid aligns everything in center(justify) putting the following style moves it to start and content as well which solves the above issue.
mat-grid-tile .mat-figure {
   justify-content: flex-start !important ;
   align-items: flex-start !important;
}

Still keeping this open to validate if there is any better way.

Closing this because we are pretty unlikely to add new features to MatGridList going forward now that CSS Grid provides a significantly more robust tool for creating this style of layout.


Add containerStyle as a props

Hi!
It would be usefull to let the user to custom the container of the navbar. This extra padding add by default, is super frustrating when I want to fully customize the navbar.
Thanks in advance.

I'd like this also.  The padding on the bottom of he container is unwanted in my situation.

I'm fine with merging it in, but only after these additions:

tintColor should go under container.tintColor or even be a part of container.style
README.md should reflect these changes


⚠ Site ANTS has degraded performance

In 4485d59, Site ANTS (https://ants.gouv.fr) experienced degraded performance:

HTTP code: 200
Response time: 18411 ms

Resolved: Site ANTS performance has improved in af63529.


Persist minter-state for development environments

Moves minter-state from system /tmp which gets erased every boot
to project tmp subdirectory so minter-state will persist in development.
Also provides safer defaults for production settings for folks
who deploy directly from the repo without using capistrano.

Looks good. I wouldn't recommend using $RAILS_ROOT/tmp/ as the home for derivatives or the minter-state file in production, but the best place to set an alternative location is in the production section of the yaml file.


IGListDiff  as a submodule

Its a proposal to make IGListDiff as a submodule so that it can be used separately to calculate diffs.

Hey @SandeepAggarwal! This is all possible now with our subspec. Check out the installation guide to copy/paste into your project.

@rnystrom Thanks for the info.
I am having a problem here is that I want to separate IGListKit pod and the diffing pod so that in future if the app stops to use IGListKit then the diffing pod can function independently.
But I am getting the following error upon including both as separate pods in the podfile

[!] There are multiple dependencies with different sources for IGListKit in Podfile:

IGListKit (from https://github.com/Instagram/IGListKit.git, branch master)
IGListKit/Diffing

🤔 if you remove the IGListKit dep then can't you just change your Podfile to use the diffing subspec?

:) Yes, that is one of the solution , but I wanted to keep it separate so that the 'future developer' who   may think 'IGListKit' only as a 'UI' component will accidentally break the application by not realising the need of 'Diffing' in the application

Pretty sure you can specify both in your podfile and CocoaPods will do the right thing

My pod file looks like this:
pod 'IGListKit', :git => 'https://github.com/Instagram/IGListKit.git', :branch => 'master'
pod 'IGListKit/Diffing'
And I am getting the error:

[!] There are multiple dependencies with different sources for IGListKit in Podfile:

IGListKit (from https://github.com/Instagram/IGListKit.git, branch master)
IGListKit/Diffing

Think this is because pod 'IGListKit/Diffing' is looking for the latest code from stable branch whereas your specification for just pod 'IGListKit' is pointing to master hence different sources.
Try replacing it as such:
pod 'IGListKit', :git => 'https://github.com/Instagram/IGListKit.git', :branch => 'master'
pod 'IGListKit/Diffing', :git => 'https://github.com/Instagram/IGListKit.git', :branch => 'master'

@Sherlouk  Thanks a ton!


Make CDP Board Independent

Currently, the CDP only supports ESP32 and is hardcoded to work with the SX1276 LoRa radio. While this system works well so far, we envision the CDP integrating on a large family of devices. We see other technologies offering CDP compatibility and potentially as a standard used in the future. This flexibility allows for more use cases and a wider range of operation.
The RadioLib library currently supports many different radios. However, the current CDP doesn’t make it that easy to switch between different architectures/modules. It was suggested that it might be easier to have a separate configuration file. If going down this route, it would be ideal to keep the configuration file out of the library folder if possible to make editing easier. Another idea to make configuration easier is by adding #defines for other development board profiles.
Hardcoded radio setting areas in ClusterDuck.cpp: Line 8, 79, 84, 89, 94, and 99.
Next steps:

[ ] Supporting more of the radio modules supported by the RadioLib

[x] Creating a configuration file

If there is a radio that is not supported by RadioLib, please create a new issue and link it to this one.

Supporting more of the radio modules supported by the RadioLib

do you have any particular radio modules (or even boards with different radio modules) in mind for this?
for the moment i am playing duck-pokemon and adding definitions for every esp32+lora board i can get a sample of.


Ubuntu (24.04) runner sources don't contain the source arch

Description
The ubuntu 24.04 source files don't contain the architectures contained in the sources.
While this usually isn't a problem, it makes cross compile setups difficult or even impossible without many additional changes.
To install the dependencies for other cpu architectures, you need to add them to dpkg.
If you do that, apt will fail since your repository mirror doesn't contain non x86 architectures (just like upstream ubuntu).
Adding Architectures: amd64,i386 to the ubuntu.sources file should fix this.
I didn't test if the older version were affected as well.
Platforms affected

[ ] Azure DevOps
[X] GitHub Actions - Standard Runners
[ ] GitHub Actions - Larger Runners

Runner images affected

[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[X] Ubuntu 24.04
[ ] macOS 11
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[ ] macOS 14
[ ] macOS 14 Arm64
[ ] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Version: 2.316.1
Is it regression?
Haven't tested it on older versions
Expected behavior
Apt update should not fail, when extra architectures are added.
Actual behavior
It fails the job.
Repro steps

sudo dpkg --add-architecture arm64
sudo apt update

The update command will fail.

Hi @noah1510 , we will take a look.

Hi @noah1510 , We would not be adding additional architectures due to maintain concerns and possible issues like package dependencies
I have ran the workflows for both ubuntu 22.04 and ubuntu 24.04 versions, and looks like packages are not available in the repository,
below are the links for workflow runs
https://github.com/ijunaidm/runner-images/actions/runs/9365376661/job/25780458713 ( Ubuntu 24.04 ).
https://github.com/ijunaidm/runner-images/actions/runs/9365325967/job/25780302210 ( Ubuntu 22.04).

I understand that you don't want to add other architectures to the CI officially.
Could you still add the architecture information to the repositories? If the sources are labeled as only containing x86 packages then adding another architecture will not fail the CI even if no source with arm packages exists.

We don't manage the ubuntu and azure package repositories , which contains the related packages.
And for reference I have added x86 packages in the workflow file of the below link , you can add it while you run the pipeline.
https://github.com/ijunaidm/runner-images/actions/runs/9369424207/job/25793896103
We will not be able to add due to maintenance concerns.
Hence closing this issue.


Dafny VS code Extension 3.2.1 dosen't work on M1 Mac

Failed to load /Users/zhangfan/.vscode/extensions/dafny-lang.ide-vscode-3.2.1/out/resources/4.3.0/github/dafny/libhostpolicy.dylib, error: dlopen(/Users/zhangfan/.vscode/extensions/dafny-lang.ide-vscode-3.2.1/out/resources/4.3.0/github/dafny/libhostpolicy.dylib, 0x0001): tried: '/Users/zhangfan/.vscode/extensions/dafny-lang.ide-vscode-3.2.1/out/resources/4.3.0/github/dafny/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/zhangfan/.vscode/extensions/dafny-lang.ide-vscode-3.2.1/out/resources/4.3.0/github/dafny/libhostpolicy.dylib' (no such file), '/Users/zhangfan/.vscode/extensions/dafny-lang.ide-vscode-3.2.1/out/resources/4.3.0/github/dafny/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
An error occurred while loading required library libhostpolicy.dylib from [/Users/zhangfan/.vscode/extensions/dafny-lang.ide-vscode-3.2.1/out/resources/4.3.0/github/dafny/]
[Error - 8:54:45 PM] Server process exited with code 130.
[Error - 8:54:45 PM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097
[Info  - 8:54:45 PM] Connection to server got closed. Server will restart.
true
[Error - 8:54:45 PM] Dafny Language Server client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097

I switched back to 3.2.0. It works.

This may have been fixed by dafny pull request https://github.com/dafny-lang/dafny/pull/4846 fixing issue https://github.com/dafny-lang/dafny/issues/4838

I'm also running into this issue on a Mac M1.


fix: telemetry fixes

Description

Enable the capture of the help link URL
Fix the unknown section for pageviews
Replace the URL captured for the section page views with the section name.  Right now we are capturing the actual URLs which could contain sensitive data as they contain dialog names.

Task Item
#minor

Coverage decreased (-0.004%) to 54.811% when pulling 0535755a7f6cf933bf4997aa5bdb41e09a90abfa on tdurnford:fix/telemetry into 55136e76a547b379a353113a14df6ce8297eab6e on microsoft:main.

Coverage decreased (-0.004%) to 54.811% when pulling 0535755a7f6cf933bf4997aa5bdb41e09a90abfa on tdurnford:fix/telemetry into 55136e76a547b379a353113a14df6ce8297eab6e on microsoft:main.

Reran the conventional PR job for you :)

Reran the conventional PR job for you :)

@garypretty can you confirm do we want to include this in 1.3 patch?

@garypretty can you confirm do we want to include this in 1.3 patch?


[WIP]fix: Optimize customer component initialization

What this PR does:
customer component should register when user configured
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Suggest using draft PR as a WIP state.

/area component
/area optimization

/retitle fix: Optimize customer component initialization

Suggest using draft PR as a WIP state.

ok, it's ready for cr now

/lgtm
/approve
Thanks


401 Unauthorized and angular

I'm using ionic (2.0.0) with cordova-plugin-crosswalk-webview.
When my backend replies a 401, I'm getting a "Authentication Required" popup from https://github.com/crosswalk-project/crosswalk/blob/e3259b966dcedd18dc456b8cc97cd1a52aad58ea/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkResourceClientInternal.java#L389
But I don't want it, I want to handle this myself on the $http error promise.
So I tried adding https://github.com/dokoto/com.handler.auth so https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/blob/master/platforms/android/src/org/crosswalk/engine/XWalkCordovaResourceClient.java#L132 find a plugin returning true, and by doing so avoiding super.onReceivedHttpAuthRequest to be called (which is the one from crosswalk, the one with the popup).
It works: I no longer have the "Authentication Required" popup, BUT the request looks "cancelled" or even "abandonned" as the request status is still "(pending)" in chromium debugger and I don't get a callback on the $http promise.
Is there a way to configure something so my 401s are left alone and bubble up like any other HTTP response up to angular? I can't find it.

Same problem here, please fix it

@Ernestoschiavo According to https://crosswalk-project.org/, crosswalk is no longer maintained, that's probably not a good idea to continue using it.


Deadlock on force push, drop and shutdown

Background
The root cause for those issues is we want run a blocking operation in an async context, which can block the async scheduler from moving forward forever.
Consider the following example
#[tokio::main(flavor = "multi_thread", worker_threads = 10)]
async fn main() {
     // setup a tracer provider w/ batch span processor
    // when starting a batch span processor we also spawn a task to handle all message, including force flush and shutdown
    // we will call it the batch span processing tasks
     let _ = tokio::spawn(async move {
        let _ = tracer_provider.force_flush() {
    }).await;
}

Runnnig the example you will observe two tasks

The batch span procssing task, which can receive a force flush message and respond to it.
The force push task, which sends a mesasge to batch span procssing task and block on it's response

The two tasks can deadlock when the force push task takes priority. Since force push task never yield the resource to other tasks. The batch span procsssing task never gets a chance to run and respond to force push task.
Possible Solutions
1. separate resource pool
The general idea is to separate the two tasks mentioned above. Consider the following resource pool available in an async setup:

Async task pool. Spawn from tokio::spawn. Tasks use this pool must not block otherwise the whole pool can deadlock
Blocking task pool. Spawn from tokio::tasks::spawn_blocking. For any tasks that blocks this should be their resource pool
Dedicate thread. Spawn a dedicated thread with std::thread::spawn.

We should spawn the force push task to background threads and allow users to await on them. This benifits the overall performance in following ways:

The batch span procssing task can stay on the async task pool. Thus, it can take the benifit of coop schduling and stay idle when there is no spans
The force_push is a most likely expensive operation because of the network IO involves.

Based on the idea above we can add a force_push_async function like this
    pub fn force_push_async(&self) -> tokio::task::JoinHandle<Vec<TraceResult<()>>> {
        let inner = self.inner.clone();
        tokio::task::spawn_blocking(move || {
            inner.processors
                .iter()
                .map(|processor| processor.force_flush())
                .collect()
        })
    }

    // once user has the handle they can await on it in an async context
   force_push_async().await;

Reference

Tokio recommendation on how to handle blocking tasks link

import asyncio
from concurrent.futures import ThreadPoolExecutor
class TraceResult:
def init(self, data):
self.data = data
class Processor:
def force_flush(self) -> TraceResult:
# Simulate some processing
import random
data = random.randint(1, 100)
return TraceResult(data)
class TracerProvider:
def init(self):
self.processors = []
def force_flush(self):
    return [processor.force_flush() for processor in self.processors]

def force_flush_async(self):
    with ThreadPoolExecutor() as executor:
        return executor.submit(self.force_flush)

Create a TracerProvider and assign Processor instances
tracer_provider = TracerProvider()
tracer_provider.processors = [Processor(), Processor()]
async def main():
# Spawn a task for force_flush
loop = asyncio.get_event_loop()
future = loop.run_in_executor(None, tracer_provider.force_flush)
results = await future
# Print the results
for result in results:
    print(result.data)

Run the main function
asyncio.run(main())
i think this is useful for your problem


Make workshop more achievable without solution, and other additions

Added sets of Task Hints to all the tasks in section 2 with addition information, links etc to hopefully let people achieve that task without the need to resort to toggle-solution
Added architecture diagrams at the end of each sub-section, explaining visually the state of the system at that point. Source PPTX included in media/architecture folder
A few extra resource links to help people
Changes to the load testing container as per this PR https://github.com/Azure/azch-loadtest/pull/1
Changes to the AKS to ACR connection, now using the much simpler --acr-attach method (merged with latest PR in current master)
Some optimization of the enabling monitoring add-on, e.g. a command to get the workspace id

Fantastic, thanks!!


adding github profile

Hey I made github profile Project Which Is Very Good!
This Project is very Helpfull,
I Make This Project With the help of HTML, CSS & JavaScript,
The CSS & JavaScript Code are Available in very well mannered! & Easy to understand!

https://user-images.githubusercontent.com/88212870/166409273-24cc1113-e0ad-48f3-92ec-fbd5132934b1.mov


Update evalutate.py

What does this PR do?
Resolves the issue with evaluate.py not being able to load the summary screenshot. Instead, evaluate.py will just look for the last screenshot which was taken after operate completes the given task.
+ Minor improvements to outputs
Type of change

Bug fix (non-breaking change which fixes an issue)
Mandatory Tasks
The evaluation is now working as intended and tests are passing.

Hey @michaelhhogue thanks for the PR. I'll test it now


fixed crash when notifying errors in Android

Hey!,there is a blocker crash when notifying error in Android side. Please implement this PR ASAP.

Hey @Cariosvertel sorry, this package is now maintained by the Bugsnag team (#4 ). Please give 2.0.1 a try (same package name) and hopefully that will resolve this crash.


Add Amazigh Layout in Both Tifinagh and Latin Scripts

Language
Amazigh
Description
Amazigh has two scripts, Tifinagh, its original one and latin.
For Tifinagh :
ⴰⵣⴻⵔⵜⵢⵓⵉⵄⵃ
ⵇⵙⴷⴼⴳⵀⵊⴽⵍⵎ
ⵡⵅⵛⵖⴱⵏⵯ

Long press the previous key => result
ⵣ => ⵥ
ⴻ => ⵦ
ⵔ => ⵕ
ⵜ => ⵟ/ⵝ
ⵓ => ⵧ
ⵇ => ⵈ
ⵙ => ⵚ
ⴷ => ⴹ/ⴸ/ⴺ
ⴼ => ⵠ
ⴳ => ⴴ/ⴵ/ⴶ
ⵀ => ⵂ/ⵁ
ⵊ => ⵌ/ⵋ
ⴽ => ⴾ/ⴿ
ⵍ => ⵰
ⵎ => ⵿
ⵡ => ⵯ
ⵅ => ⵆ
ⵛ => ⵞ
ⵖ => ⵗ
ⴱ => ⵒ/ⴲ
ⵏ => ⵐ/ⵑ
Latin :
Azertyuiɛḥ
qsdfghjklm
wxcɣbnʷ

z => ẓ
r => ṛ
t => ṭ
u => o
s => ṣ
d => ḍ
f => v
g => ǧ
h => ḥ
w => ʷ
c => č
ɣ => γ
b => p
ʷ => °
The language code for Amazigh (Tifinagh) is ber or zgh, we prefer zgh since it is the one supported on android devices for Amazigh in Tifinagh.
For latin we can just make it seperated from the previous one since people still use it along side Tifinagh, so they need to be able to set those two scripts to be used. Latin uses the code ber-Latn. But supported on android devices as Amazigh (Kabyle) under the code kab
The name of each version and the name:
Amazigh Languge = zgh (this for Tifinagh)
Amazigh (Kabyle) Language = kab (This for latin)
For dictionary, Tifinagh one is available here, the repository is meant for layouts of MOK for Amazigh:
https://github.com/abdelhaqueidali/Layouts-for-Multiling-O-Keyboard
Complexity
not complex, one character for each sound in the language.

It also makes typing URLs or any ASCII data easier, without having to switch back to an English layout.

 It also makes typing URLs or any ASCII data easier, without having to switch back to an English layout.

Too much letters on the screen is not good.
Try SwiftKey on your phone, For Amazigh (Tifinagh) look for Tamazigh. For Amazigh (Latin) look for Taqbaylit.
See how the standard way of arranging letters.
Most people, I can say 80 to 90% are familiar with those design since it is the standard way, for phones and computers. Gboard has recently added a new design and people are struggling with it, so we always ask them to change it, and this new design I am talking about tried the same thing, putting all the letters on the screen at once, for both Tifinagh and Latin.

Here are the layouts.
Amazigh code is zgh
Amazigh latin one is zgh-latn
1 - AMAZIGH SCRIPT LAYOUTS
LAYOUT 1 (Priority)
Amazigh/amazigh.yaml
name: Amazigh
languages: zgh
rows:

letters: # rowkeys_amazigh1.xml

['ⴰ']
['ⵣ', 'ⵥ']
['ⴻ']
['ⵔ', 'ⵕ']
['ⵜ', 'ⵟ']
['ⵢ']
['ⵓ']
['ⵉ']
['ⵄ']
['ⵃ']

letters: # rowkeys_amazigh2.xml

['ⵇ']
['ⵙ', 'ⵚ']
['ⴷ', 'ⴹ']
['ⴼ', 'ⵠ']
['ⴳ', 'ⴳⵯ']
['ⵀ']
['ⵊ']
['ⴽ']
['ⵍ']
['ⵎ']

letters: # rowkeys_amazigh3.xml

['ⵡ']
['ⵅ']
['ⵛ']
['ⵖ']
['ⴱ', 'ⵒ']
['ⵏ']
['ⵯ']

LAYOUT 2
Amazigh/amazigh_extended.yaml
name: Amazigh (Extended)
languages: zgh
rows:

letters: # rowkeys_amazigh1.xml

['ⴰ']
['ⵣ', 'ⵥ', 'ⵤ']
['ⴻ', 'ⵦ']
['ⵔ', 'ⵕ']
['ⵜ', 'ⵟ', 'ⵝ']
['ⵢ']
['ⵓ', 'ⵧ']
['ⵉ']
['ⵄ']
['ⵃ']

letters: # rowkeys_amazigh2.xml

['ⵇ', 'ⵈ']
['ⵙ', 'ⵚ']
['ⴷ', 'ⴹ', 'ⴸ', 'ⴺ']
['ⴼ', 'ⵠ']
['ⴳ', 'ⴴ', 'ⴵ', 'ⴶ']
['ⵀ', 'ⵂ', 'ⵁ']
['ⵊ', 'ⵋ', 'ⵌ']
['ⴽ', 'ⴾ', 'ⴿ']
['ⵍ', '⵰']
['ⵎ', '⵿']

letters: # rowkeys_amazigh3.xml

['ⵡ']
['ⵅ', 'ⵆ']
['ⵛ', 'ⵞ']
['ⵖ', 'ⵗ']
['ⴱ', 'ⵒ', 'ⴲ']
['ⵏ', 'ⵐ', 'ⵑ']
['ⵯ', 'ⴳⵯ', 'ⴽⵯ']

LAYOUT 3
Amazigh/amazigh_mini.yaml
name: Mini
languages: zgh
rows:

letters: # rowkeys_amazigh1.xml

['ⴷ', 'ⵇ']
['ⵔ', 'ⵛ']
['ⵎ', 'ⴽ']
['ⵍ', 'ⵊ']
['ⵢ', 'ⵟ']
['ⵖ', 'ⵡ']

letters: # rowkeys_amazigh2.xml

['ⴰ', 'ⵕ']
['ⵜ', 'ⵯ']
['ⵉ', 'ⴻ']
['ⵏ', 'ⴹ']
['ⵙ', 'ⵄ']
['ⵓ', 'ⵚ']

letters: # rowkeys_amazigh3.xml

['ⴱ', 'ⵀ']
['ⴼ', 'ⵃ']
['ⵣ', 'ⵥ']
['ⴳ', 'ⵅ']

2 - AMAZIGH LATIN SCRIPT :
1 - AZERTY LAYOUT :
Amazigh (Latin)/amazigh_azerty.yaml
name: Amazigh (Basic)
languages: zgh-Latn
rows:

letters: # rowkeys_amazigh1.xml

['a']
['z', 'ẓ']
['e']
['r', 'ṛ']
['t', 'ṭ']
['y']
['u', 'o']
['i']
['ɛ']
['ḥ']

letters: # rowkeys_amazigh2.xml

['q']
['s', 'ṣ']
['d', 'ḍ']
['f', 'v']
['g', 'ǧ']
['h', 'ḥ']
['j']
['k']
['l']
['m']

letters: # rowkeys_amazigh3.xml

['w']
['x']
['c', 'č']
['ɣ', 'γ']
['b', 'p']
['n']
['ʷ', '°']
['‐']


Improve code coverage for ResponseGenerator

This brings coverage of ResponseGenerator up from 74% to 82%.
It will be difficult to do much better than this, since H2 does not
support LONGVARCHAR, LONGVARBINARY, or any of the 'N' character
types.

Ping in case you just forgot to push a change or something.


Optimization

Feature description
The query at gql endpoint is really slow at the moment, especially at transaction->transaction_result relation. See how can we improve this.

Database partitioning may solve the problem


Add AC70P? support for addition fields

Added new fine grained fields and additional controls. These have all been validated on an AC70 device.
This is based on #119 and @kvanonavk 's work

Work on AC70P

@matthewpucc Can you tell me which versions your AC70 is running? I don't get any data from mine

@Patrick762 I'm on v2082.05 for arm and v2085.03 for DSP. I've not upgraded since I see people complaining about the move to encrypted communication in some of the issues here.

 here's some of the data I am able to get out of this

My AC70 came with v2151,01 for ARM and v2106,06 for DSP from the seller. I guess everything above v2100 is with encryption

@Patrick762 , I'm so sorry for delay and crappy v1 of this code. I've abstracted the C/P spam into ProtocolV2Device. I was debating making this a V3 but I wasn't sure how you would feel about that.  If you feel I should make an additional class, let me know. Just ping me when you can revisit this MR. I'm in a much better position to respond more rapidly.

Hi!
I've got three AC70P's that I just bought.  I was looking to what needs to be done to add support for AC70P when I stumbled on this PR.  Great!  However, I saw the discussion about encryption and now I'm "hum, bummer":

My AC70 came with v2151,01 for ARM and v2106,06 for DSP from the seller. I guess everything above v2100 is with encryption

Is there any document, blog post, something that has more info about what is known about the Bluetti bluetooth protocol, and what is known about its encryption?


Make database flush optional

Made manage.py flush optional in order to persist data to the database.

@oleoneto Do you think this should be configurable by an environment variable?

@mjhea0 you're right. Determining which environment the web application is running on is perhaps a better approach. This issue jumped at me as I was setting up my project. I glazed over the flush argument and only after a few tests did I realize I was losing database data after every successful build.