STORM-3897 Replace Travis with GitHub Actions

What is the purpose of the change

Adds GitHub actions on the basis of the old travis script (and similar to them)
Downgrades TestNG as it isn't compatible with Java 8
Fixes license files

Note: integration-tests are failing as the related .sh is highly Travis specific and needs some rework. IMHO, we should fix it in a separate Jira. Wdyt?
It superseeds https://github.com/apache/storm/pull/3519
How was the change tested

GitHub Actions

@bipinprasad Feel free to have a look at this PR. It should build wit 8 / 11 for most of the modules. I didn't touch the Integration-Test module atm as it requires some rewriting of the shell script to work with GH. I suggest, that we tackle this part in a separate PR, so we have build feedback, which is crucial (see downgrade of TestNG + license files). WDYT?

Looks good. Thanks. It reverts a security fix (which was incompatible with  jdk8). We will have to drop jdk8 and add jdk17 very soon. But till then, this will have to do.

https://issues.apache.org/jira/browse/STORM-3898 for Integration test github action

Thanks for the review!

Looks good. Thanks. It reverts a security fix (which was incompatible with jdk8). We will have to drop jdk8 and add jdk17 very soon. But till then, this will have to do.

I agree, that we should drop Java 8 at some point (given that Java 21 will land soon). If you are talking about https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4065, I don't think, that the test dependency will give a huge attack vector (as we do not ship it) as (in the context of the project) only processes trusted content, no?

Agreed. No problem security-wise, and not an issue at this point.


cra-build-watch with react-app-rewired

I'm trying to use cra-build-watch with react-app-rewired because I need to disable the chunking of files and just have static files (among other config changes). This doesn't seem to work with cra-build-watch. Is there an option for this?

react-app-rewired  cra-build-watch

Unknown script "cra-build-watch".

I've never used react-app-rewired to be honest so I have no clue of how it works and cra-build-watch has never been tested with it so far.

@zonski I had a similar requirement, so I created a pull request that adds an option to disable code splitting / chunks. See https://github.com/Nargonath/cra-build-watch/pull/33.
Hopefully that meets your needs, or at least helps to show how you can implement something similar.

@zonski I just released v2.0.0 which adds the feature developed by @jordanmkoncz. Does it fix your problem?

I'll just close the issue for now. Feel free to tell me if it still persists and I'll reopen it.

You are not fixing the actual issue. https://github.com/timarney/react-app-rewired allows you to modify the webpack config for the CRA-app. It also requires you to not run react-scripts start but you need to use the command react-app-rewired start which will then first patch the webpack.config.js by running it through the patch function you define in config-overrides.js.
As your project here also patches the webpack.config.js I guess it is not so easy to use both packages at the same time but what you did above has very little to do with the actual issue. @zonski patched his webpack.config.js to disable the chunk but I for example need to patch my webpack.config.js to have a second entry file...

I have never used react-app-rewired but perhaps there is something that can be done in order to use them both. Might need some rewrite as both project act as a command to start your own project it seems.

I managed to hack together a working setup for running cra-build-watch together with react-app-rewired. The issue boils down to the way create-react-app magically tricks other scripts to override the configuration passed to webpack. Another issue is that cra-build-watch per default adds entries to the webpack-config variable, these entries must not be there for the true power of react-app-rewired to do its job.
Given that I am extremely new to node, npm, and everything that has something to do with this sort of development environment I am sure that my way of doing things could be a lot cleaner. This is a "I have not slept for 2 days"-hack, so go easy on it.
When I have slept and have some time to spare I plan to either create a separate glue-npm module to make react-app-rewired and cra-build-watch work together, or submit clean pull-requests to both repos to make it easy to configure a dual setup (without the changes being too intrusive).

Two files were copied to my local $REPO_ROOT/scripts directory.

ORIG: node_modules/react-app-rewired/scripts/build.js => scripts/watch/index.js
<EMAIL_ADDRESS>

 ORIG: node_modules/cra-build-watch/scripts/index.js => scripts/watch/cra-build-watch.js
<EMAIL_ADDRESS>

The following changes makes things work (not the cleanest, mostly to show how things can be done).
From 96f0592e0087a2abacbcfc68fada1778d433761d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Filip=20Ros=C3=A9en?=<EMAIL_ADDRESS>Date: Wed, 13 Jan 2021 09:49:32 +0100
Subject: [PATCH] build: watch: react-app-rewired + cra-build-watch

---
 package.json                     |  3 +-
 scripts/watch/cra-build-watch.js | 68 +++++---------------------------
 scripts/watch/index.js           | 29 ++++++++++++--
 3 files changed, 37 insertions(+), 63 deletions(-)

diff --git a/package.json b/package.json
index 4eb5c68..9cc50bf 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,8 @@
     "start": "react-scripts start",
     "build": "react-app-rewired build",
     "test": "react-app-rewired test",
-    "eject": "react-scripts eject"
+    "eject": "react-scripts eject",
+    "watch": "node scripts/watch"
   },
   "eslintConfig": {
     "extends": "react-app",
diff --git a/scripts/watch/cra-build-watch.js b/scripts/watch/cra-build-watch.js
index 4686444..a5b9cd3 100644
--- a/scripts/watch/cra-build-watch.js
+++ b/scripts/watch/cra-build-watch.js
@@ -13,6 +13,14 @@ const ora = require('ora');
 const assert = require('assert');
 const exec = require('child_process').exec;

+const requireFoo = module => require(
+    path.resolve(
+        path.dirname(
+            require.resolve('cra-build-watch')
+        ) + '/' + module
+    )
+);
+
 const {
   flags: {
     buildPath,
@@ -25,8 +33,8 @@ const {
     afterInitialBuildHook,
     afterRebuildHook,
   },
-} = require('../utils/cliHandler');
-const { getReactScriptsVersion, isEjected } = require('../utils');
+} = requireFoo('../utils/cliHandler');
+const { getReactScriptsVersion, isEjected } = requireFoo('../utils');

 const { major, concatenatedVersion } = getReactScriptsVersion(reactScriptsVersion);

@@ -75,62 +83,6 @@ const resolvedBuildPath = buildPath ? handleBuildPath(buildPath) : paths.appBuil
 config.output.path = resolvedBuildPath;
 config.output.publicPath = publicPath || '';

-// Grab output names from cli args, otherwise use some default naming.
-const fileNameToUse = outputFilename || `js/bundle.js`;
-const chunkNameToUse = chunkFilename || `js/[name].chunk.js`;
-// If cli user adds .js, respect that, otherwise we add it ourself
-config.output.filename = fileNameToUse.slice(-3) !== '.js' ? `${fileNameToUse}.js` : fileNameToUse;
-config.output.chunkFilename =
-  chunkNameToUse.slice(-3) !== '.js' ? `${chunkNameToUse}.js` : chunkNameToUse;
-
-if (disableChunks) {
-  assert(major >= 2, 'Split chunks optimization is only available in react-scripts >= 2.0.0');
-  // disable code-splitting/chunks
-  config.optimization.runtimeChunk = false;
-
-  config.optimization.splitChunks = {
-    cacheGroups: {
-      default: false,
-    },
-  };
-}
-
-// update media path destination
-if (major >= 4) {
-  const oneOfIndex = 1;
-  config.module.rules[oneOfIndex].oneOf[0].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[oneOfIndex].oneOf[1].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[oneOfIndex].oneOf[8].options.name = `media/[name].[hash:8].[ext]`;
-} else if (major >= 2) {
-  // 2.0.0 => 2
-  // 2.0.1 => 3
-  // 2.0.2 => 3
-  // 2.0.3 => 3
-  // 2.0.4 to 3.0.0 => 2
-  const oneOfIndex = concatenatedVersion === 200 || concatenatedVersion >= 204 ? 2 : 3;
-  config.module.rules[oneOfIndex].oneOf[0].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[oneOfIndex].oneOf[7].options.name = `media/[name].[hash:8].[ext]`;
-} else {
-  config.module.rules[1].oneOf[0].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[1].oneOf[3].options.name = `media/[name].[hash:8].[ext]`;
-}
-
-let htmlPluginIndex = 1;
-let interpolateHtmlPluginIndex = 0;
-if (major >= 2) {
-  htmlPluginIndex = 0;
-  interpolateHtmlPluginIndex = 1;
-}
-
-// we need to override the InterpolateHtmlPlugin because in dev mod
-// they don't provide it the PUBLIC_URL env
-config.plugins[interpolateHtmlPluginIndex] = new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw);
-config.plugins[htmlPluginIndex] = new HtmlWebpackPlugin({
-  inject: true,
-  template: paths.appHtml,
-  filename: 'index.html',
-});
-
 spinner.succeed();
 spinner.start('Clear destination folder');

diff --git a/scripts/watch/index.js b/scripts/watch/index.js
index cbcfbda..5488bc0 100644
--- a/scripts/watch/index.js
+++ b/scripts/watch/index.js
@@ -1,12 +1,18 @@
 // ORIG: node_modules/react-app-rewired/scripts/build.js
 //<EMAIL_ADDRESS>
+
 process.env.NODE_ENV = 'production';

+const path = require('path');
+const requireFoo = module => require(
+    path.dirname(require.resolve('react-app-rewired')) + `/scripts/${module}`
+);
+
 const semver = require('semver');

-const { scriptVersion } = require('./utils/paths');
-const overrides = require('../config-overrides');
+const { scriptVersion } = requireFoo('./utils/paths');
+const overrides = requireFoo('../config-overrides');
 const scriptPkg = require(`${scriptVersion}/package.json`);

 const pathsConfigPath = `${scriptVersion}/config/paths.js`;
@@ -29,5 +35,20 @@ require.cache[require.resolve(webpackConfigPath)].exports = isWebpackFactory
   ? (env) => overrides.webpack(webpackConfig(env), env)
   : overrides.webpack(webpackConfig, process.env.NODE_ENV);

-// run original script
-require(`${scriptVersion}/scripts/build`);
+// override cra-build-watch/utils/cliHandler
+
+const cliHandler_path = require.resolve(
+    path.dirname(require.resolve('cra-build-watch')) + '/../utils/cliHandler'
+)
+
+require(cliHandler_path.replace(/\.js$/,''));
+require.cache[cliHandler_path].exports = {
+    flags: {
+        buildPath: 'build-cra/',
+        verbose: true,
+    }
+};
+
+// start cra-build-watch
+
+require('./cra-build-watch')
--
2.20.1

I managed to hack together a working setup for running cra-build-watch together with react-app-rewired. The issue boils down to the way create-react-app magically tricks other scripts to override the configuration passed to webpack. Another issue is that cra-build-watch per default adds entries to the webpack-config variable, these entries must not be there for the true power of react-app-rewired to do its job.
Given that I am extremely new to node, npm, and everything that has something to do with this sort of development environment I am sure that my way of doing things could be a lot cleaner. This is a "I have not slept for 2 days"-hack, so go easy on it.
When I have slept and have some time to spare I plan to either create a separate glue-npm module to make react-app-rewired and cra-build-watch work together, or submit clean pull-requests to both repos to make it easy to configure a dual setup (without the changes being too intrusive).

Two files were copied to my local $REPO_ROOT/scripts directory.

ORIG: node_modules/react-app-rewired/scripts/build.js => scripts/watch/index.js
<EMAIL_ADDRESS>

 ORIG: node_modules/cra-build-watch/scripts/index.js => scripts/watch/cra-build-watch.js
<EMAIL_ADDRESS>

The following changes makes things work (not the cleanest, mostly to show how things can be done).
From 96f0592e0087a2abacbcfc68fada1778d433761d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Filip=20Ros=C3=A9en?=<EMAIL_ADDRESS>Date: Wed, 13 Jan 2021 09:49:32 +0100
Subject: [PATCH] build: watch: react-app-rewired + cra-build-watch

---
 package.json                     |  3 +-
 scripts/watch/cra-build-watch.js | 68 +++++---------------------------
 scripts/watch/index.js           | 29 ++++++++++++--
 3 files changed, 37 insertions(+), 63 deletions(-)

diff --git a/package.json b/package.json
index 4eb5c68..9cc50bf 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,8 @@
     "start": "react-scripts start",
     "build": "react-app-rewired build",
     "test": "react-app-rewired test",
-    "eject": "react-scripts eject"
+    "eject": "react-scripts eject",
+    "watch": "node scripts/watch"
   },
   "eslintConfig": {
     "extends": "react-app",
diff --git a/scripts/watch/cra-build-watch.js b/scripts/watch/cra-build-watch.js
index 4686444..a5b9cd3 100644
--- a/scripts/watch/cra-build-watch.js
+++ b/scripts/watch/cra-build-watch.js
@@ -13,6 +13,14 @@ const ora = require('ora');
 const assert = require('assert');
 const exec = require('child_process').exec;

+const requireFoo = module => require(
+    path.resolve(
+        path.dirname(
+            require.resolve('cra-build-watch')
+        ) + '/' + module
+    )
+);
+
 const {
   flags: {
     buildPath,
@@ -25,8 +33,8 @@ const {
     afterInitialBuildHook,
     afterRebuildHook,
   },
-} = require('../utils/cliHandler');
-const { getReactScriptsVersion, isEjected } = require('../utils');
+} = requireFoo('../utils/cliHandler');
+const { getReactScriptsVersion, isEjected } = requireFoo('../utils');

 const { major, concatenatedVersion } = getReactScriptsVersion(reactScriptsVersion);

@@ -75,62 +83,6 @@ const resolvedBuildPath = buildPath ? handleBuildPath(buildPath) : paths.appBuil
 config.output.path = resolvedBuildPath;
 config.output.publicPath = publicPath || '';

-// Grab output names from cli args, otherwise use some default naming.
-const fileNameToUse = outputFilename || `js/bundle.js`;
-const chunkNameToUse = chunkFilename || `js/[name].chunk.js`;
-// If cli user adds .js, respect that, otherwise we add it ourself
-config.output.filename = fileNameToUse.slice(-3) !== '.js' ? `${fileNameToUse}.js` : fileNameToUse;
-config.output.chunkFilename =
-  chunkNameToUse.slice(-3) !== '.js' ? `${chunkNameToUse}.js` : chunkNameToUse;
-
-if (disableChunks) {
-  assert(major >= 2, 'Split chunks optimization is only available in react-scripts >= 2.0.0');
-  // disable code-splitting/chunks
-  config.optimization.runtimeChunk = false;
-
-  config.optimization.splitChunks = {
-    cacheGroups: {
-      default: false,
-    },
-  };
-}
-
-// update media path destination
-if (major >= 4) {
-  const oneOfIndex = 1;
-  config.module.rules[oneOfIndex].oneOf[0].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[oneOfIndex].oneOf[1].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[oneOfIndex].oneOf[8].options.name = `media/[name].[hash:8].[ext]`;
-} else if (major >= 2) {
-  // 2.0.0 => 2
-  // 2.0.1 => 3
-  // 2.0.2 => 3
-  // 2.0.3 => 3
-  // 2.0.4 to 3.0.0 => 2
-  const oneOfIndex = concatenatedVersion === 200 || concatenatedVersion >= 204 ? 2 : 3;
-  config.module.rules[oneOfIndex].oneOf[0].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[oneOfIndex].oneOf[7].options.name = `media/[name].[hash:8].[ext]`;
-} else {
-  config.module.rules[1].oneOf[0].options.name = `media/[name].[hash:8].[ext]`;
-  config.module.rules[1].oneOf[3].options.name = `media/[name].[hash:8].[ext]`;
-}
-
-let htmlPluginIndex = 1;
-let interpolateHtmlPluginIndex = 0;
-if (major >= 2) {
-  htmlPluginIndex = 0;
-  interpolateHtmlPluginIndex = 1;
-}
-
-// we need to override the InterpolateHtmlPlugin because in dev mod
-// they don't provide it the PUBLIC_URL env
-config.plugins[interpolateHtmlPluginIndex] = new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw);
-config.plugins[htmlPluginIndex] = new HtmlWebpackPlugin({
-  inject: true,
-  template: paths.appHtml,
-  filename: 'index.html',
-});
-
 spinner.succeed();
 spinner.start('Clear destination folder');

diff --git a/scripts/watch/index.js b/scripts/watch/index.js
index cbcfbda..5488bc0 100644
--- a/scripts/watch/index.js
+++ b/scripts/watch/index.js
@@ -1,12 +1,18 @@
 // ORIG: node_modules/react-app-rewired/scripts/build.js
 //<EMAIL_ADDRESS>
+
 process.env.NODE_ENV = 'production';

+const path = require('path');
+const requireFoo = module => require(
+    path.dirname(require.resolve('react-app-rewired')) + `/scripts/${module}`
+);
+
 const semver = require('semver');

-const { scriptVersion } = require('./utils/paths');
-const overrides = require('../config-overrides');
+const { scriptVersion } = requireFoo('./utils/paths');
+const overrides = requireFoo('../config-overrides');
 const scriptPkg = require(`${scriptVersion}/package.json`);

 const pathsConfigPath = `${scriptVersion}/config/paths.js`;
@@ -29,5 +35,20 @@ require.cache[require.resolve(webpackConfigPath)].exports = isWebpackFactory
   ? (env) => overrides.webpack(webpackConfig(env), env)
   : overrides.webpack(webpackConfig, process.env.NODE_ENV);

-// run original script
-require(`${scriptVersion}/scripts/build`);
+// override cra-build-watch/utils/cliHandler
+
+const cliHandler_path = require.resolve(
+    path.dirname(require.resolve('cra-build-watch')) + '/../utils/cliHandler'
+)
+
+require(cliHandler_path.replace(/\.js$/,''));
+require.cache[cliHandler_path].exports = {
+    flags: {
+        buildPath: 'build-cra/',
+        verbose: true,
+    }
+};
+
+// start cra-build-watch
+
+require('./cra-build-watch')
--
2.20.1

@FilipRoseen-refp - thanks for that, it worked for me. It would be nice if there was an 'official' solution as this feels a little hacky and prone to breaking on updates to cra-build-watch and/or react-app-rewired

Sorry I don't have time to maintain this project anymore so I'll archive it and add a note in the README. Feel free to fork it as you see fit.


Container cannot connect to Upstart

Because Docker replaces the default /sbin/init with its own, there's no way to run the Upstart init inside a Docker container. However this causes some problems: some Debian packages try to communicate with Upstart, and will fail to install if this fails. For example the "at" package.

$ sudo apt-get install at
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  default-mta mail-transport-agent
The following NEW packages will be installed:
  at
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 37.4 kB of archives.
After this operation, 188 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ quantal/main at amd64 3.1.13-2ubuntu1 [37.4 kB]
Fetched 37.4 kB in 0s (75.2 kB/s)
Selecting previously unselected package at.
(Reading database ... 23544 files and directories currently installed.)
Unpacking at (from .../at_3.1.13-2ubuntu1_amd64.deb) ...
Processing triggers for ureadahead ...
Setting up at (3.1.13-2ubuntu1) ...
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
invoke-rc.d: initscript atd, action "start" failed.
dpkg: error processing at (--configure):
 subprocess installed post-installation script returned error exit status 1
Processing triggers for ureadahead ...
Errors were encountered while processing:
 at
E: Sub-process /usr/bin/dpkg returned an error code (1)

no

So I was able on a Ubuntu distro to run the commands above as a work around, so now my machine will provision correctly the first time.  However, now I can't login and see my desktop environment on the machine.  Using VirtualBox as the provider and Ubuntu as the distro.  Do I need to unlink the symbolic link after successfully loading or just restore the debian package to it's previous value (not sure how to do that also, so commands would be nice, please =D )?

OK, actually spent an hour looking into it after all, and it seem like just reinstalling the upstart service fixes not being able to see my desktop environment anymore.
'''
sudo apt-get --reinstall install upstart
'''
I had been trying this way to avoid reinstalling that package.  Can anyone tell me what I"m doing wrong here?
'''
dpkg-diver --local --remove /sbin/initctl
rm /sbin/initctl
'''

Is there an equivalent of this in RHEL. I am facing a similar issue when creating Chef Server docker image but I couldn't find dpkg-diver --local --remove /sbin/initctl equivalent for RHEL that works

I've got the exact same problem as @swatiswjain with a Chef Server inside Docker.

@Layke
Probably not useful now, but maybe it's
sudo dpkg-divert --local --remove /sbin/initctl

Instead?


dynamic expression

Hello
Can you alter the expression input to be dynamic?
meaning that if expression field is empty
use msg.jsonexpression or something to set the filter.
The idea to dynamically retrieve data from a json object based on input
Thanks

Hi y1ann1s,
Neat idea! Yes, we could do this. Something like this already occurs for selecting the property out of the msg object on which to perform the selection.
It would require adding a UI element or two to allow the user to select this option, and a tiny amount of code to pull the expression out.

can you please elaborate on "like this already occurs for selecting the property out of the msg object on which to perform the selection.", don't you always use msg.payload ?
Thanks

In the configuration options for the node, under Input there are two fields. The first switches between "message property" and "complete message object" (just like the debug node). When "message property" is selected, the next field is visible and by default it will use msg.payload, but you can specify any other property you'd like.
My proposal is that the same setup could be used for the Expression. Namely that you have two fields, the first being a select box that allows you to choose between "literal expression" and "message property". Then the second box would either be the expression (like it is now), or a path to select a property on the msg object.

Sure its perfect :-)

I'm trying to do an expression like the following and it's not working:
$.{{{msg.topic}}}.name
msg.topic is being set and passed appropriately to the node, but the mustache substitution does not work.  I tried both double and triple braces, and I also tried just "topic" instead of "msg.topic".  Am I doing this wrong, or is this not currently possible?


More FP work

Pull Request Test Coverage Report for Build 450

32 of 32 (100.0%) changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 442:
0.0%

Covered Lines:
101

Relevant Lines:
101

💛  - Coveralls


Fix Node.js and Yarn installation in CI

Description
The GitHub workflow uses the engines from OSD incorrectly. This change fixes that.
Check List

[ ] New functionality includes testing.

[ ] All tests pass, including unit test, integration test and doctest

[ ] New functionality has been documented.

[ ] New functionality has javadoc added
[ ] New functionality has user manual doc added

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Is this fix required in 2.x branch?


shallowMount() behaves like mount() when components are lazy loaded

Version
1.0.0-beta.29
Reproduction link
https://github.com/xavism/lazyloading-vue-test-utils
Steps to reproduce
$ npm i
$ npm t
Then check the snapshots
What is expected?

ParentLazy's snapshot is rendering the Child component when using shallowMount, the child component in the snapshot is not stubbed

Related to a closed issue:
shallowMount will not stubs lazily registered components #959
https://github.com/vuejs/vue-test-utils/issues/959
It should be fixed but it's not working in my case.

Duplicate of #959
Reopened

Hi there,  I was wondering if there's any update on this.. We have the exact same issue.

"Jest runs in Node, and thus requires ES modules to be transpiled to CommonJS modules.
If you use dynamic imports (import('some-file.js').then(module => ...)), you need to enable the dynamic-import-node plugin"
See Jest docs https://jestjs.io/docs/en/webpack.html#using-with-webpack-2
Solution:
Need to install the babel-plugin-dynamic-import-node (https://www.npmjs.com/package/babel-plugin-dynamic-import-node).
Or the import works only with "--experimental-modules" in NodeJS(current LTS https://nodejs.org/dist/latest-v12.x/docs/api/esm.html#esm_enabling).
// my .babelrc
{
    "env": {
        "test": {
            "presets": [
                ["env", {
                    "targets": {
                        "node": "current"
                    }
                }]
            ],
            "plugins": ["dynamic-import-node"]
        }
    }
}

// my jest.config.js
module.exports = {
    moduleFileExtensions: [
        'js',
        'json',
        'vue'
    ],
    'transform': {
        '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
        '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
    },
};

// my env:

Laravel v5.8.23;

main "devDependencies":
"jest": "^24.9.0",

"vue": "^2.5.17",
"vue-jest": "^3.0.5",
"@vue/test-utils": "^1.0.0-beta.29",
"babel-core": "^6.26.3",
"babel-jest": "^24.9.0",
"babel-plugin-dynamic-import-node": "^2.3.0",
"babel-preset-env": "^1.7.0",
"laravel-mix": 4.0.7,

the Docker image with NodeJS v8

I face a similar issue when using to dynamic components   as the components that are set get fully rendered.
Would a fix for this issue cover this use case as well?

"Jest runs in Node, and thus requires ES modules to be transpiled to CommonJS modules.
If you use dynamic imports (import('some-file.js').then(module => ...)), you need to enable the dynamic-import-node plugin"
See Jest docs https://jestjs.io/docs/en/webpack.html#using-with-webpack-2
Solution:
Need to install the babel-plugin-dynamic-import-node (https://www.npmjs.com/package/babel-plugin-dynamic-import-node).
Or the import works only with "--experimental-modules" in NodeJS(current LTS https://nodejs.org/dist/latest-v12.x/docs/api/esm.html#esm_enabling).
// my .babelrc
{
    "env": {
        "test": {
            "presets": [
                ["env", {
                    "targets": {
                        "node": "current"
                    }
                }]
            ],
            "plugins": ["dynamic-import-node"]
        }
    }
}

// my jest.config.js
module.exports = {
    moduleFileExtensions: [
        'js',
        'json',
        'vue'
    ],
    'transform': {
        '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
        '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
    },
};

// my env:

Laravel v5.8.23;
main "devDependencies":
"jest": "^24.9.0",

"vue": "^2.5.17",
"vue-jest": "^3.0.5",
"@vue/test-utils": "^1.0.0-beta.29",
"babel-core": "^6.26.3",
"babel-jest": "^24.9.0",
"babel-plugin-dynamic-import-node": "^2.3.0",
"babel-preset-env": "^1.7.0",
"laravel-mix": 4.0.7,

the Docker image with NodeJS v8

I've added your solution to the reproduction package ( https://github.com/xavism/lazyloading-vue-test-utils) and it is still not working.
Could you tell me what am I doing wrong?

still no update on this?

So just to confirm; the snapshot is correct, but the html is not? That is very weird.

So I think the reason this happens is because the way shallowMount works is by overriding this.$createElement to stub out components before they are mounted. Since the import is async (lazy), the component is loaded after all the stubbing has occurred.
If my guess is correct, this is not something we can fix without a major rework of the library. The only suggested I can come up with to make your snapshots match is to use mount. I don' think this is so bad; using mount will make your snapshot more closely resemble your production code.
Sorry if this work around isn't great for your use case; I don't see a simple way (or even a more complex way) to solve this.

As a less-than-ideal workaround, you can explicitly provide stubs for async components.

I am having the same issue, I lazy load my components, and shallowMount behave like mount, but mount itself doesn't really work.
I need to explicitly setup the stubs for my child component in shallowMount, and then it works properly.
If instead I try to use mount, the stub is not be consider at all.

Call me crazy but if you are loading a component why would you want to use shallowMount? That will stub out your async component (now you can't test it, because it's stubbed out).

Hi @lmiller1990 , first of all thanks for your time.
In my case, I want to use shallowMount even when I'm lazy-loading my child components because I don´t want to add to my localVue the dependencies this child components needs.
Does it make sense?

I see, makes sense. Time for a deep dive into the dark depths of shallowMount!

Since shallowMount() behaves like mount(). I'm thinking about consider this problem in the opposite way: make mount() behaves like shallowMount.
For example, Parent component lazy load Child component
<template>
  <div>
    Parent
    <Child />
  </div>
</template>

<script>

export default {
  components: {
    Child: () => import('./Child')
  }
}
</script>

Step 1. Change shallowMount into mount in unit tests
const wrapper = mount(Parent)

Step 2. Add stubs option to mount
const wrapper = mount(Parent, {
      stubs: {
        Child: true
    }
  })

The child component will be mount as <child-stub></child-stub> like we are using shallowMount.

^ seems like a good work around!

@lmiller1990 I wonder that if mount can make child stub as  exactly like the same thing shallowMount would do. Why shallowMount can't do it? Is there anything blocks this process? Would it be possible to let shallowMount be improved to compatible with dynamic import if we found the things block the process?

I have no idea why this happens, I took a look but didn't have much luck fixing it. I would probably need to spend more time on it.
If you would like to try figuring it out I can try to help out. I personally recommend against using shallowMount - what is your use-case that prevents you from using mount?

I have tried hacking this as well many times, alas got nowhere... I think this is finally fixed in VTU 2 though 😄

@dobromir-hristov Do we have a confirmation that it's actually fixed in Vue Test Utils 2 / Vue 3?

I just cloned and updated the repo linked in the first post. I used Vue 3, VTU v2 and ts-jest v25. The first two tests passed fine, I had to update the snapshots with -u and then everything was green.
Of course that is in a different codebase using different dependencies - I do not expect this issue will be fixed in VTU v1 (for Vue 2) at this point.

@lmiller1990 Should I mark this ticket as won't fix and close it or as a bug and leave it open?

Considering how much time has passed and how complex this likely is to fix, I'd say closed and wontfix is probably fine -- it's clear there isn't a lot of motivation to fix this particular issue.

I just wanted to mention that we had this issue before and it simply went away after upgrading from Vue 2.5 to 2.7. We're on Jest v29.


Add blockception vscode extension

Adds the vscode extension. This is prevalent in the community and mentioned in the beginners guide

@DaanV2 would you like any change to the description?

Marked as ready, Daan happy with the description


Update deploy-to-azure-vscode.md

@v-abiss : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

@juliakm: I'm sorry - only the author of this article, @pulkitaggarwl, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Add the ability to queue/dequeue revalidations on servers

Closes #2856
This PR adds context menu options to the servers table in TPv2 that allow for quick and easy queuing/dequeuing revalidations on a group of one or more servers.
I also plugged a testing gap in the servers API service - Capability-related methods were untested.

Which Traffic Control components are affected by this PR?

Traffic Portal (experimental v2)

What is the best way to verify this PR?
Make sure the provided e2e and unit tests pass. Queue/Dequeue updates on some server(s).
PR submission checklist

[x] This PR has tests
[x] This PR doesn't need documentation
[x] This PR doesn't need a CHANGELOG.md entry
[x] This PR DOES NOT FIX A SERIOUS SECURITY VULNERABILITY

Depends on #7925


Implement hovers for variables in the new style

The target is to move this functionality from "legacy hover" to our new hover logic
The final outcome should be more verbose and include the documentation, just like the render::definition hover

I'd say, just follow what Rust Analyzer does:

this actually duplicates #5826


Fix spurious client-side build warning

Fixes this client-side build warning (everything still works, but this is just noisy.):
warn: (client) /monorepo/common/temp/node_modules/react-ssr-prepass/dist/react-ssr-prepass.development.js
--
  | Module not found: Error: Can't resolve 'styled-components' in '/monorepo/common/temp/node_modules/react-ssr-prepass/dist'

There is a conditional require that is being picked up client-side. The fork removes this.
This warning is also visible in browser console, which is super annoying.

!resync

@rtsao Do you want to proceed with this?

!resync

!resync

!merge


Add env/config/cmdline plumbing for CodeSigningKIDs

r? @maxtaco
Also fixes merkle-kids command line flag.

:+1:


Update facets in scenario_set and scenario configuration

This should prepare the configuration files for smif 0.7.1

Coverage remained the same at 47.234% when pulling 0df765e4c725f294c99e5678acecd86a723154cd on feature/update_config_smif-0.7 into b0a2fbc7a2e1be06daecb142a5b6f6ed3ce26a31 on master.


(docker): deploy by docker image

Codecov Report

Merging #522 (d26e52e) into dev (fce60ea) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##                dev     #522   +/-   ##
=========================================
  Coverage     15.56%   15.56%
  Complexity      440      440
=========================================
  Files           185      185
  Lines          8677     8677
  Branches        746      746
=========================================
  Hits           1351     1351
  Misses         7208     7208
  Partials        118      118


Freeze match score display during gameplay

Per discussion with @cavoeboy, made it compatible with Advanced Scene Switcher, so this doesn't require any new component on the streaming side, though I'm not sure if that's the best way to do it:

Also, we should really refactor the tournament key check, so this code isn't duplicated all over the place.

fwiw the page isnt updated cuz its not being used currently in prod but theres a centrifuge mixin file i made (https://github.com/Corsace/corsace/blob/master/Assets/mixins/centrifuge.ts) to bundle thr centrifuge stuff
i think liquidpl is updating this one RN for prod use so its probably relevant to whenever thst is done i guess instead of this PR but just noting this now in case
(also i cant test anythin esp since im on a plane thats boutta take off now)

so did I update the wrong page? can you point to the right one?


[RE] Fail to run SRCNN/VDSR/DRRN/DRCN?

You may got error like this:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [16,12,12,1] vs. [16,48,48,1]
[[{{node loss/absolute_difference/Sub}} = Sub[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](vdsr/add, _arg_label/hr_0_2/_7)]]
[[{{node loss/total_loss/_15}} = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0",send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_1159_loss/total_loss", tensor_type=DT_FLOAT,_device="/job:localhost/replica:0/task:0/device:CPU:0"]]

All these 4 models share one same perception: They run directly on HR space, which means (usually) a bicubic upsampler is applied to LR image and feed directly into the network.
This is done by code like bic = bicubic_rescale(self.inputs_preproc[-1], self.scale).
Due to some history reasons, sometimes I don't intend to use bicubic filter implemented in tensorflow (pixel unaligned, pixel shift and negative pixels, [1] [2]). Hence I offer an option to use bicubic filter from PIL.Image. This is done by commented out bic = bicubic_rescale(self.inputs_preproc[-1], self.scale) (or just delete), and add --add_custom_callbacks=upsample to run.py.
You get this error because in some old version I forget to recover back the commented code, and you don't add --add_custom_callbacks=upsample when training models, so image size is not matched.
I checked and fixed the problem for SRCNN/VDSR/DRCN/DRRN today, and leave an argument custom_upsample in the yaml to config:
- If custom_upsample is False (default), it uses bicubic filter from tf.image.resize_bicubic;
- If custom_upsample is True, then --add_custom_callbacks=upsample must be added to run.py. upsample is defined in custom_api.py

Thank you, setting the custom_upsample as true ,and adding --add_custom_callbacks=upsample are useful.


Add a new IsQrIban property on ValidationResult for Switzerland and Liechtenstein

Pretty much everything is explained in the documentation of this new property.

Codecov Report

Merging #37 (9574be4) into develop (433f5fe) will decrease coverage by 0.23%.
The diff coverage is 57.14%.

Impacted Files
Coverage Δ

src/IbanNet/ValidationResult.cs
62.50% <57.14%> (-37.50%)
:arrow_down:

You're absolutely right. Implementing this new IsQrIban property on Iban instead of ValidationResult made both implementation of the property and of the tests simpler so that's definitely a win! Also, the coverage should not drop by -37.50% as it did in the previous implementation.
I have rebased my qr-iban branch and force-pushed the new implementation.

Thanks, merging, I may change it to an extension method though before releasing.


 Long overdue.

What was changed in this pull request?

Getting with the times

Fixes #___
Checklist

[ ] Set proper GitHub labels (e.g. v1.6+, ignore if you don't know)
[x] Unit tests added or updated
[ ] Documentation added or updated
[ ] Example(s) added or updated
[ ] Update schema.json if there are changes to the viewconf JSON structure format
[ ] Screenshot for visual changes (e.g. new tracks or UI changes)
[x] Updated CHANGELOG.md

To start, I think your overall sentiment that this change shouldn't be included in this PR is correct. It should be in its own PR to warrant proper discussion and easy rollback. I've already removed those changes from this PR. But since we've started the conversation, let's keep it going...

Tried to give close review but there are lots of moving parts. My main concern is the removal of peerDependencies and external in the webpack config. I think that removing react as a peerDependency will break projects that npm i higlass and use the HiGlassComponent directly.

Why would it break projects that use the HiGlassComponent directly? You mention this line of reasoning in an inline comment:

Not externalizing react & react-dom leads to multiple copies React that we can't resolve since the code is bundled.

If I recall correctly, is actually caused by dependencies including different version of React. [react-draggable](https://github.com/react-grid-layout/react-draggable/blob/master/package.json#L73), for example, includes React` as a dev dependency. As long as all components use the same version of react, it should be shaken out by the bundler. I could definitely be wrong here though. The reason I was leaning toward removing peer deps is because I was running into this exact same error.
The ultimate solution will be to update higlass to use the latest version of React. I've started a PR to get that ball rolling but it will need some work.

Just to be clear, making a dependency external in the webpack bundle or a peer dependency are two different things. We could make react/react-dom and pixi.js regular dependencies but still keep external in webpack and probably not run into issues I highlighted.
In fact, everything essentially a development dependency in higlass except for react/react-dom/pixi.jsdue to the way it is packaged as a webpack bundle. When younpm install higlass, all dependenciesin thepackage.jsonare installed innode_modules, but every single one of these dependencies are duplicated already in the dist/hglib.js. The effect is that the developer using higlass_only_ has control over the dependencies which markedexternalin the webpack config. E.g., a patch version ofd3-selectionis released with a security fix? Need to wait for a new version ofhiglass` to be released that bumps the version; you cannot upgrade on your own. This is the primary issue with bundling dependencies.
In the case of higlass, since react/react-dom/pixi.js are marked as external end users have control over the versions. It just so happens these dependencies also happen to be peerDependencies in the package.json, and therefore must be manually installed in the repo (at least historically – as of npm v7 peerDeps are installed automatically if missing.)

Why would it break projects that use the HiGlassComponent directly?

The issue is that in order for react hooks to work, there must only be one react/react-dom for the component tree. https://reactjs.org/warnings/invalid-hook-call-warning.html#duplicate-react. Even if there are multiple reacts but they are the same exact version, hooks will not work.

react-draggable, for example, includes React as a dev dependency.

This is true, but the distribution of react-draggable has react and react-dom as external in the final bundle:
function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory(require("react"), require("react-dom"));
	else if(typeof define === 'function' && define.amd)
+		define(["react", "react-dom"], factory);
	else if(typeof exports === 'object')
+		exports["ReactDraggable"] = factory(require("react"), require("react-dom"));
	else
+		root["ReactDraggable"] = factory(root["React"], root["ReactDOM"]);
})(self, function(__WEBPACK_EXTERNAL_MODULE__359__, __WEBPACK_EXTERNAL_MODULE__318__) {

The effect of specifying react/react-dom as dev-dependencies but keeping external in the published module is that users must (implicitly) install react/react-dom themselves (e.g,. there will be no warning if you npm install react-draggable and don't have react/react-dom). Peer-dependencies allows you to say "you need to have this installed" but also specifics which versions are compatible: "react": "^16.0.0 | ^17.0.0 | ^18.0.0".

As long as all components use the same version of react, it should be shaken out by the bundler. I could definitely be wrong here though.

This sadly is not true. The moment that you bundle a dependency in a library, a bundler cannot treeshake it or resolve to shared dependencies. Bundler rely on static analysis of imports, which is easier to show with ESM than UMD modules:
Example node_modules
// foo.js
export * as React from "react"; // "external"

// bar.js
export * as React from "react"; "external"

// baz.js
export const React = { /* ... */ }; // *not* "external", React is bundled in baz.js

Source code
// index.js
export { React as React0 } from "foo";
export { React as React1 } from "bar";
export { React as React2 } from "baz";

Final bundle
// bundle.js
const React_external = { /* ... */ };
export const React0 = React_external; // resolve to same react
export const React1 = React_external; // resolve to same react
export const React2 = { /* ... * }; // different react because it was bundled in the library!

Thanks for the detailed explanation. It makes sense that dependencies are not actually tree shaken. If a dependency bundle is minified, how would the bundler know which code to dedup?
Regarding external / peer dependencies, that also makes sense. I wish I had taken notes on how to resolve the multiple react issue when I encountered it a few months ago. To the best of my memory, it involved adding "resolve" sections to my webpack file.
Another annoyance with external dependencies is that if you have an application that looks like this:
  <link rel="stylesheet"<EMAIL_ADDRESS>  <script<EMAIL_ADDRESS>  <script<EMAIL_ADDRESS>  <script<EMAIL_ADDRESS>  <script<EMAIL_ADDRESS>
And we decide to bump the version of higlass to use a later version of React, then you, as the application developer, need to know to not only update the higlass version in your application but the versions of the react imports. So essentially updating the react dependency version requires not only updating the package.json, but the docs and any other application that has it included.
For the purposes of this PR and the near future I'm fine with leaving them as external.

If a dependency bundle is minified, how would the bundler know which code to dedup?

Even unminified, bundlers aren't smart enough to recognize that code is duplicated from a module. Bundlers essentially rely totally on static analysis of imports/exports for dedupe. For example if one dependency includes,
import { foo } from "bar";

Than anywhere your source code or other dependencies import from "bar" can be deduplicated in the resulting bundle (if their package.json specify compatible semvar of bar). That's it. You can think of the current higlass package as:
// dist/hglib.js
import React from "react";
import ReactDOM from "react-dom";
import * as PIXI from "pixi.js";

/* all of higlass and other dependencies */

export { HiGlassComponent, viewer, /* ... */ }

so only react, react-dom, and pixi.js are eligible to be de-duplicated.

To the best of my memory, it involved adding "resolve" sections to my webpack file.

Yes, this is common. If there are multiple packages which list react as a dependency (rather than a peerDependency), each will install a separate version of react. This is desirable behavior generally because dependencies could rely on different semvers of the shared dep which are incompatible.
The resolve field in the webpack config can tell the bundler to resolve any import from "react" to a specific directory in node_modules. This is you telling the bundler "I know this version of react is ok for all my dependencies". However, if react wasn't external for higlass, the resolve doesn't do anything (there is no "react" string to resolve; all the code is inlined).

Another annoyance with external dependencies is that if you have an application that looks like this,

I agree this is annoying, but only if you need to use higlass without a bundler. This was the old school way of packaging things for the browser and led to module systems like amd. It's becoming more an more common to ship packages as ESM (preserving import React from "react" in what is published to npm) and then CDNs now bundle/minify the code.
The real issue is that there are two use cases for higlass:
1.) A simple HTML file with a script tag that gives you access to hglib.viewer.
2.) An application where you have installed higlass as a dependency and are bundling it yourself.
Ideally we would ship a module for the latter (keeping all import/exports) and a fully bundled/minified UMD script for the former. Odds are if you are using higlass through a script tag, you aren't using something like HiGlassComponent directly but a top-level utility like hglib.viewer (which owns the entire react render tree). In that senario it would be totally ok to bundle react/react-dom/pixi.js, it's just doing so hurts the use of higlass with a bundler.

Any way I can help push this forward?

Superseded by https://github.com/higlass/higlass/pull/1111

Yes, it’s ready to be merged. I just didn’t do it because the tests were
failing but now they’re not so feel free to merge.
On Thu, Aug 25, 2022 at 9:00 AM Trevor Manz @.***>
wrote:

Any way I can help push this forward?
—
Reply to this email directly, view it on GitHub
https://github.com/higlass/higlass/pull/1102#issuecomment-1227468666,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQLLDL5BU63Y6CPKVEUYETV26KDNANCNFSM5Z2YDZXQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


Add support for mouse events

It would be great to be able to click, scroll, hover, etc. with the mouse.
Implementing this support for fullscreen mode is pretty trivial. The problem is...

Capturing mouse events hijacks scrolling, which is very undesirable when the interface is not a fullscreen one.
There's no apparent way to convert XY coordinates to be relative to UI elements when not fullscreen.

Is there a robust way to accomplish this? Are there other libraries that do it well?

I would argue that these features don't make much sense in a non-fullscreen application in the first place, so perhaps the way forward is simply to reserve this functionality to those that have real use for it. Is it really worth trying to find workarounds? Is there a use-case to consider?

Good question. I don't have any particularly strong use-cases in mind other than "clickable buttons and text fields might look nice", so perhaps the way to go is to start with implementing this for fullscreen mode and see what use-cases aren't met after that.

The next release will have support for mouse events and to demonstrate it, there's a new calculator example:


Add assertion to singleSelectBy to ensure it is visible before perfor…

…ming an action.

cy.contains('.pf-v5-c-menu__item-text', exactMatch ? regExp : value)

Will already wait until a component that has a class of .pf-v5-c-menu__item-text containing the value is found before trying to act on it.
Adding the .should('be.visible') is not fixing that a dropdown has not loaded.

Closing as the added assertion is unnecessary.


Parse error on variable-free for-range loops

Gotags chokes on the variable-free form of for-range loops that were introduced in Go 1.4.
For example, given the following code:
package main

import "fmt"

func main() {
        for range [3]int{} {
                fmt.Println("testing")
        }
}

Running gotags produces:
$ gotags main.go
parse error: main.go:6:6: expected operand, found 'range' (and 1 more errors)

!_TAG_FILE_FORMAT       2
!_TAG_FILE_SORTED       1       /0=unsorted, 1=sorted/
!_TAG_PROGRAM_AUTHOR    Joel Stemmer<EMAIL_ADDRESS>!_TAG_PROGRAM_NAME      gotags
!_TAG_PROGRAM_URL       https://github.com/jstemmer/gotags
!_TAG_PROGRAM_VERSION   1.3.0

Gotags uses the go parser from the standard library, so this is probably caused by using a version of gotags that was compiled with an earlier version of Go. Recompiling with the latest version should fix this.
The easiest is probably to run go get -u github.com/jstemmer/gotags again.

Hmm, after running go get -u github.com/jstemmer/gotags (also go get -a -u github.com/jstemmer/gotags), I'm still getting the same parse error.

You seem to have the right version of go, so it should work. Maybe go get works differently than I'd expected.
I just pushed a change to master that adds a test for the variable-free range loop. Go to where the repo was cloned, pull the latests changes and run the tests with go test. If the tests pass, a go install should be enough.
Otherwise it would be possible for you to actually use a different binary than the one that is installed by the go utility. Check with which gotags where it is.

Removed everything again, did a go test (all ok) / go install and now parsing works as expected. Not sure exactly what the source of the error was here, but it seems the issue's resolved for me.


Yeah, basically stuck and can't deploy new builds. This started around lunchtime CST.

Okay, restarting docker-machine did the trick.


waitUntilTextExists won't detect text if parent element is overflow:hidden

I believe that the presence of overflow:hidden, say in the body, is preventing this infrastructure to see innerText presence using waitUntilTextExists. Is this by design and/or is this related to the Chromedriver/Webdriver parts?
If the case is important I can land a testcase.

is this related to the Chromedriver/Webdriver parts?

Yes, almost all of the spectron API's are delivered by the WebDriverIO functionality


Error pushing artifact (blob not found)

I'm seeing this error during push
[--:--:--] START   [964e4af3] core-deps/dnsmasq.bst: Push
[--:--:--] STATUS  [964e4af3] core-deps/dnsmasq.bst: Pushing data from artifact 964e4af3 -> http://<IP_ADDRESS>:11001/
[00:00:00] FAILURE [964e4af3] core-deps/dnsmasq.bst: Failed to push artifact blobs: Failed to upload blob cd832935dcdd40d5a9a2d929b9c9dc3ab5a755d7c9f16b747242df0e7b4c6432: 5

I believe the 5 above means NOT FOUND, and indeed the blob in question doesn't exist in buildstream's cache. I don't know which blob is this, but I guess it's something that bst doesn't check and just assumes it's always there if the artifact is there.

A quick debug printing shows that (at least in what I saw) the missing blob is the third element of digests, which is artifact_proto.high_diversity_meta.


Is there an interactive mode?

Hey @BoQsc Could clarify a bit more what you mean by interactive mode? Could you give an example?

In the README file it is shown that each prompt is taken as argument of the program.
Interactive Mode is when you interact using prompts in a chat-like behaviour.
Current non-interactive mode presented in the README.md

Right, like: you get a prompt cursor and start chatting.
I’d be in favor so we avoid loading repeatedly when testing multiple prompts interactively.
@BoQsc is this something you’d have time to contribute?

This would be really cool. I was checking termgpt. I'd love to work on this as a fun project. Let me know @BoQsc or anyone from community wants to collaborate 😄

A simple while loop with reading input like this
while True:
    prompt = input("Prompt:")

would be a minimal version. I wouldn't go much further than that for the simple demo script.
termgpt uses rich to format the output with colors and so on.

Hi, I started playing yesterday with it. As @awaelchli mentioned, that snippet does the job once you load the model.
However, a cool step would be to move towards a chatbot assistant.
Currently the prompt does not contain the past conversation and as such the model cannot reply to questions like "What was the previous question I asked you?", so some way of concatenating all the context of the conversation should be adopted. I tried with the 7B version fine-tuned with the finetune_lora.py script and the problem with that is that the instructions in the fine-tuning stage never contain multiple steps of dialogue. This might result in the model continuing with multiple steps of dialogue in which it also tries to predict the next prompt of the user and so on...
I write this just to say that possible scripts that we could work on are:

interactive prompting (for pre-trained, lora-fine-tuned and adapter-fine-tuned models). Objective: avoid the overhead of repeatedly loading the model.
chat (for lora-fine-tuned and adapter-fine-tuned). Objective: something close to ChatGPT interface.

Yes it would be great
It would be cool to use Textual for the UI
https://www.textualize.io/#textual

very cool @chakt, wanna open a PR?

I implemented one in https://github.com/Lightning-AI/lit-stablelm/blob/main/chat.py. It could be copied over to this repository.

Just clone the code from lit-parrot chat.py into lit-llama/generate.py ...  that will give you an interactive mode.

Can we make it conversation style where it remembers the context from previous prompts. That would be more helpful.


ivyDepsTree does not show transitive dependencies

loggingLogentries.ivyDepsTree()()
[4/4] loggingLogentries.ivyDepsTree
└─ com.logentries:logentries-appender:1.1.38

but this module also depends on akka through transitive moduleDeps ivyDeps
On a side note
logentries-appender also has transitive dependencies, but these seem to be marked as optional (http://search.maven.org/#artifactdetails|com.logentries|logentries-appender|1.1.38|pom)

@francisdb you're probably going to have to dig through the code using ivy/coursier, debug this yourself, and explain to us the solution 😛 I know coursier as little as anyone else...

This is probably related to #211

Not fixed by #211
mill show loggingLogentries.compileClasspath contains more than the dependencyTree

Should be fixed by https://github.com/lihaoyi/mill/commit/b9e9b6827da900a1c3565ebbd4a18f1657d6114c
I can't reproduce it because there is not enough information here to repro; if it's still happening send a PR with a test case and I'll be able to fix it properly

Please re-open, here is the requested reproducer:
Calling ivyDepsTree on both modules should give the same results but on bar the tree is empty
import mill._
import mill.scalalib._
object foo extends ScalaModule {
  def scalaVersion = "2.12.4"
  def ivyDeps = Agg(
    ivy"com.typesafe.play::play-json:2.6.8"
  )
}
object bar extends ScalaModule {
  def moduleDeps = Seq(foo)
  def scalaVersion = "2.12.4"
}

➜  test ~/Downloads/0.1.7-77-44ed2e bar.ivyDepsTree
[4/4] bar.ivyDepsTree

➜  test ~/Downloads/0.1.7-77-44ed2e foo.ivyDepsTree
[4/4] foo.ivyDepsTree
└─ com.typesafe.play:play-json_2.12:2.6.8
   ├─ com.fasterxml.jackson.core:jackson-annotations:2.8.9
   ├─ com.fasterxml.jackson.core:jackson-core:2.8.9
   ├─ com.fasterxml.jackson.core:jackson-databind:2.8.9
   │  ├─ com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.9
   │  └─ com.fasterxml.jackson.core:jackson-core:2.8.9
   ├─ com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.8.9
   │  ├─ com.fasterxml.jackson.core:jackson-core:2.8.9
   │  └─ com.fasterxml.jackson.core:jackson-databind:2.8.9
   │     ├─ com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.9
   │     └─ com.fasterxml.jackson.core:jackson-core:2.8.9
   ├─ com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.8.9
   │  ├─ com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.9
   │  ├─ com.fasterxml.jackson.core:jackson-core:2.8.9
   │  └─ com.fasterxml.jackson.core:jackson-databind:2.8.9
   │     ├─ com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.9
   │     └─ com.fasterxml.jackson.core:jackson-core:2.8.9
   ├─ com.typesafe.play:play-functional_2.12:2.6.8
   │  └─ org.scala-lang:scala-library:2.12.2
   ├─ joda-time:joda-time:2.9.9
   ├─ org.scala-lang:scala-library:2.12.2
   ├─ org.scala-lang:scala-reflect:2.12.2
   │  └─ org.scala-lang:scala-library:2.12.2
   └─ org.typelevel:macro-compat_2.12:1.1.1
      └─ org.scala-lang:scala-library:2.12.0 -> 2.12.2

the compileClasspath for bar does contain the dependencies
➜  test ~/Downloads/0.1.7-77-44ed2e show bar.compileClasspath
[1/1] show
[28/36] bar.resources
[
    {
        "path": "/Users/francisdb/workspace/test/foo/resources",
        "quick": false,
        "sig": -914035544
    },
    {
        "path": "/Users/francisdb/workspace/test/out/foo/compile/dest/classes",
        "quick": false,
        "sig": -914035544
    },
    {
        "path": "/Users/francisdb/workspace/test/bar/resources",
        "quick": false,
        "sig": -914035544
    },
    {
        "path": "/Users/francisdb/.coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.12.4/scala-library-2.12.4.jar",
        "quick": true,
        "sig":<PHONE_NUMBER>
    },
    {
        "path": "/Users/francisdb/.coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.12.2/scala-reflect-2.12.2.jar",
        "quick": true,
        "sig":<PHONE_NUMBER>
    },
    {
        "path": "/Users/francisdb/.coursier/cache/v1/https/repo1.maven.org/maven2/com/typesafe/play/play-json_2.12/2.6.8/play-json_2.12-2.6.8.jar",
        "quick": true,
        "sig": -1915147611
    },
...


setExp() not working?

My understanding is this code should work ok? But it behaves the exact same whether I set setExp() to true or not.
let env, osc, amp, cnv;

let attackTime = 0.001;
let decayTime = 10;
let attackLevel = 1;
let decayLevel = 0;

function setup() {
  cnv = createCanvas(100, 100);
  fill(0,255,0);
  noStroke();

  env = new p5.Envelope();

  env.setADSR(attackTime, decayTime);

  osc = new p5.Oscillator();
  env.setExp(true);
  osc.amp(env);
  osc.start();

  amp = new p5.Amplitude();

  cnv.mousePressed(triggerRamp);
}

function triggerRamp() {
  env.ramp(osc, 0, attackLevel, decayLevel);
}

function draw() {
  background(20,20,20);
  text('click me', 10, 20);
  let h = map(amp.getLevel(), 0, 0.4, 0, height);;

  rect(0, height, width, -h);
}

Looks like I was just using it wrong! I'm closing this..


No Python at 'C:\Users\anila\AppData\Local\Programs\Python\Python39\python.exe'

Hi, I've been trying to use your script a little on both Windows and MacOS but I've been unable to use it.
I've found several problems, using both the executables and the source code from this repo. I've been absolutely unable to use it.
On Windows I suspect you might have hardcoded Python in the executable. I get this when running it:
No Python at 'C:\Users\anila\AppData\Local\Programs\Python\Python39\python.exe'

@sachamorgese I didn't hardcoded python executable to my knowledge.
May I know which python file produced this error?

@anilabhadatta same issue.  running the windows exe outputs this error message:
No Python at 'C:\Users\anila\AppData\Local\Programs\Python\Python39\python.exe' Traceback (most recent call last):   File "multiprocess.py", line 96, in <module> TypeError: an integer is required (got type NoneType) [13052] Failed to execute script 'multiprocess' due to unhandled exception!

@anilabhadatta i have already mentioned that multiprocess.py is not recommended to use.
Download the Manual Executable release or load chromedriver.py and educative_scraper.py in terminal (Also install the required dependencies).

Create a virtual env and activate it
pip3 install virtualenv
virtualenv env

For windows:
env\Scripts\activate
For mac:
source env/bin/activate

Install required Modules
pip3 install -r requirements.txt

Run the following commands in separate terminals.
python3 chromedriver.py
python3 educative_scraper.py

@anilabhadatta i have already mentioned that multiprocess.py is not recommended to use. Download the Manual Executable release or load chromedriver.py and educative_scraper.py in terminal (Also install the required dependencies).

Thanks i tried the manual one and it worked. Thanks for reply.


Problems with editing site content

I have tried editing some items on the site without much success. My problem comes from identifying the file structure of the website and where all the file where info is stored.

@000kelvin Look at issue #232 to get information about the front controller that translate the request. Also #234 can help (see my explanation for modules).

@000kelvin The templates are in the template folder, you got different one for each theme and a base.

@000kelvin Also, take a look at the documentation as it give some information too. Either www.ph7cms.com or _doc on ypur local installation.

Thanks for the info, but I guess I didn't explain myself well enough. I actually want to integrate my template with the site but the framework seems quite too confusing to grab. I don't actually even know where to start from to change stuffs like for example the registration input boxes and text on the website without editing using the admin. Thank you

@000kelvin Hi,
Like I just mentionned, you'll find the templates in /templates . There's two folder, the first (system)is used for modules customisation. The second (themes)is used for the templates themselves. The "base" is used for common inclusion into other templates.
The 3 others (cartoon, datelove and zendate) are for the 3 templates included in the cms.
The main file is "layout.tpl" and will include other file.
There's no such thing as a "template editor" but a generic text editor is available in the admin interface.
PM

Oh, so I guess there's no way to integrate my own custom made template with the site?

Also making major edits like adding more text fields to like the splash registration page for instance seem quite difficult. What I'm trying to achieve is editing the source codes directly.

@000kelvin If you read back what I said.... There's three templates that are supplied and you can add more.
What make you think you can't add new one?
Have you took the time to read the docs or you ask me because it's simpler ?
A complete templating system wouldn't be designed if you couldn't add new one

@000kelvin What prevent you from editing the source code?

I have actually gotten through with the project and my issues. I was quite in a rush and I did not calm down to study the whole thing. thanks for your assistance

FYI, you can edit ALL files/pages thanks the File Manager System (Admin Panel -> File/Page


Improvement's suggestion

I just read the Flutter 2.8 release and decided to give this CLI a try.
It works great but I would like to suggest 2 things.
This is the steps I took:
flutter create ld_admin
flutterfire configure
After selecting the right project this was the output:

✔ Select a Firebase project to configure your Flutter application with · ld-app (LD App)

✔ Which platforms should your configuration support (use arrow keys & space to select)? · android, ios, web

i Firebase android app com.example.ld_admin is not registered on Firebase project ld-app.

i Registered a new Firebase android app on Firebase project ld-app.

✔ Which ios bundle id do you want to use for this configuration, e.g. 'com.example.ldApp'? · com.ld.admin

i Firebase ios app com.ld.admin is not registered on Firebase project ld-app.

i Registered a new Firebase ios app on Firebase project ld-app.

i Firebase web app ld_admin (web) is already registered.

Suggestion 1
As you can see, it asked me what the desired iOS bundle ID is, but it did not ask me the bundle name for Android. Now there is an com.example.ldApp in my Firebase project. Which obviously is never going to be used.
It would be great if the CLI asked what the desired ID is for Android & iOS and made the necessary changes to the gradle & info.plist file.
Suggestion 2
It would be nice if the CLI asked which Firebase Plugins are desired and add them automatically to the pubspec.yaml file. Like the Firebase CLI does when setting up a Firebase project in a project folder.
Now the first thing I see is an error
Target of URI doesn't exist: 'package:firebase_core/firebase_core.dart'. Try creating the file referenced by the URI, or Try using a URI for a file that does exist.
It's a small thing, but if the setup proces for a complete FlutterFire app could be just 2 commands. It would be the strongest dev combo ever 😄

Suggestion 3
For FlutterFire to work there are some extra changes needed in the build.gradle
See: https://firebase.flutter.dev/docs/manual-installation/android


Get the displayed page and execute function

Hi there!
I do have a simple question - how can I achieve the following:
I want to change images outside the slider when the a particular content/slide is displayes within the slider. So I need a way to get an event like "slide 1 in View", "slide 2 on View" and so on, so that I can execute a function. Whats important - I need it to work when the specific slide is visible or slided into view, because the content of the slide describes the image which is the background of my site.
Does anyone know how to achieve that?
Thanks in advance

@SueIte have you found a solution to this yet?

Hey @SueIte, @Cre3z. We append a class on all active slides (VueCarousel-slide-active) when they come into view. You could likely make something work based on slides that gain/lose that class.
As for finding the index, we don't currently emit any events that expose that info. We have hooks to dynamically change index from the outside, but not the other way around.
However, depending on your content, you could likely engineer something based on the CSS class.
Alternatively, adding a feature to emit the current slides in view wouldn't be difficult. If you wanted to make a contribution to the repo, feel free!

Since I haven't heard back I'll assume the classes fixed the issue! Going to close this, but feel free to reopen or make a new issue if anything else comes up :octocat:


How to enable teleportation?

Hello,
Thank you for this very useful package.
I am new to WebGL, but I have some experience with MRTK.
I am trying to use teleportation in the Oculus browser. But I can't get it to work.
In MixedRealityToolkit it is active.

Do I have to do something else to activate it?
Merci!

SimpleWebXR inputs support teleportation.
https://github.com/Rufus31415/Simple-WebXR-Unity/blob/f00c57aa2241d464e6d151afcf3347266beb03fc/SimpleWebXR-Demo/Assets/SimpleWebXR/Scripts/MRTK/SimpleWebXRController.cs#L29
https://github.com/Rufus31415/Simple-WebXR-Unity/blob/7b37e75ede96f70f4f16bb968c1b487c889ba782/SimpleWebXR-Demo/Assets/SimpleWebXR/Scripts/MRTK/SimpleWebXRHand.cs#L43
But it seems to me that you have to select a teleportation compatible pointer

Hello,
Thank you for replying
In inputs I have the SimpleWebXR profile

And I have this as a Pointer

Do I have to select another one?

OK, everything seems ok, if you find what's going on, can you tell me ?

I'm testing the scene MRTK-HandInteraction
There is a script called "". That is supposed to execute the teleportation, but what it does is to move the player.
OculusQuestThumstickHandler.cs
https://github.com/Rufus31415/Simple-WebXR-Unity/blob/7b37e75ede96f70f4f16bb968c1b487c889ba782/SimpleWebXR-Demo/Assets/SimpleWebXR/Examples/Scripts/MRTK-HandInteraction/OculusQuestThumstickHandler.cs#L28
Another thing, did you test the teleportation in this scene, or should it be added from a new script?

Yes this is just a workaround to move the player. But it doesn't use MRTK teleport feature.
Yes I tested teleportation, but I don't think there are any examples online that show this


Optimization glTF resource memory

Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

glTF origin data shouldn't keep when parser complete

Codecov Report
Base: 37.90% // Head: 36.64% // Decreases project coverage by -1.26% :warning:

Coverage data is based on head (9702424) compared to base (b1e7941).
Patch coverage: 0.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1167      +/-   ##
==========================================
- Coverage   37.90%   36.64%   -1.27%
==========================================
  Files         348      348
  Lines       16639    16655      +16
  Branches     2619     2620       +1
==========================================
- Hits         6307     6103     -204
- Misses       9746    10007     +261
+ Partials      586      545      -41

Impacted Files
Coverage Δ

packages/loader/src/gltf/GLTFResource.ts
0.00% <0.00%> (ø)

packages/loader/src/gltf/GLTFUtil.ts
1.22% <0.00%> (ø)

...ages/loader/src/gltf/extensions/ExtensionParser.ts
0.00% <ø> (ø)

.../src/gltf/extensions/KHR_draco_mesh_compression.ts
5.26% <ø> (ø)

.../loader/src/gltf/extensions/KHR_lights_punctual.ts
5.00% <0.00%> (-0.27%)
:arrow_down:

...der/src/gltf/extensions/KHR_materials_clearcoat.ts
6.25% <0.00%> (ø)

.../extensions/KHR_materials_pbrSpecularGlossiness.ts
5.88% <0.00%> (ø)

.../loader/src/gltf/extensions/KHR_materials_unlit.ts
25.00% <0.00%> (ø)

...ader/src/gltf/extensions/KHR_materials_variants.ts
12.50% <0.00%> (ø)

...oader/src/gltf/extensions/KHR_texture_transform.ts
8.33% <ø> (ø)

... and 30 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


CI: RHSM registration failing with 400 bad request

Happened in two RPM jobs for #1516.  Restarting fixed it.  Link to one occurrence below:
https://gitlab.com/osbuild/ci/osbuild-composer/-/jobs/1393044190#L368

This is still happening. I think we should implement retry logic. I cannot think of anything better unfortunately.

Relevant bit:
Registering to: subscription.rhsm.redhat.com:443/subscription

HTTP error (400 - Bad Request): Problem creating unit ConsumerDTO [uuid: null, name: ip-172-31-69-170.ec2.internal, owner id: null]

This system has no repositories available through subscriptions.

Could this be what is going on for us too: https://bugzilla.redhat.com/show_bug.cgi?id=1815172#c10 ?

Solved (probably) on this PR: https://github.com/osbuild/osbuild-composer/pull/1657

Thanks @jabia99 !

Unfortunately that did not help, see https://gitlab.com/osbuild/ci/osbuild-composer/-/jobs/1530074570 for example and some other jobs in the pipeline failing in the same way. I guess we'll have to try implementing the retry logic.

Next try to fix this issue on https://github.com/osbuild/osbuild-composer/pull/1671.
I'll close this if we don't get this error again in a few weeks or so

Okay, I think nobody got the error in the last few weeks, so I'll close this issue.


Create better Storybook example for TrendLine

Our Storybook should show a more typical Story example of a TrendLine. A good example is how it is used in the Lighthouse plugin:

Feature Suggestion

Add additional story in TrendLine.stories.tsx that wraps it in a SortableTable.

@stefanalund Please see https://github.com/spotify/backstage/pull/611 🙏


 By adding reset() method to EncoderMixin, there is ability to set the default/init state of encoders in test teardown fixture, so other tests using the RandomGenerator would not be affected by persistant state, set up by last test in the module by pushing some function to RandomGenerator._encode property.
What did not work, even tho apparent:
Save the current functionin the property (even with deepcopy) to temp variable and set back in the test end. By some collision of pytest magic and @classmethod decorator, the tests would fail, because the "previous" encoder, stored in the temp var, is used in the generated string; even (not sure why) if the set back is after the assert line.
Goal to the future:
Refactor entirely in the core library, that would have better testability by as less global state as possible.

Codecov Report

Merging #104 (fc127d5) into master (a099b60) will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #104      +/-   ##
==========================================
+ Coverage   61.64%   61.67%   +0.03%
==========================================
  Files          18       18
  Lines        3559     3562       +3
==========================================
+ Hits         2194     2197       +3
  Misses       1365     1365

Impacted Files
Coverage Δ

odfuzz/encoders.py
93.75% <100.00%> (+1.44%)
:arrow_up:

Continue to review full report at Codecov.

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


Part of toolbar is hidden for mobile screen

Describe the bug
Part of the toolbar is hidden far devices with small screen
To Reproduce
Steps to reproduce the behavior:

Set more than 10 toolbar elements

toolbarItems: [
    ['heading', 'bold', 'italic', 'strike'],
    ['hr', 'quote','task'],
    ['ul', 'ol',  'indent', 'outdent'],
    ['table',  'link']
]

Open page on a mobile device

Expected behavior
I expect that popup with "more" toolbar buttons will be shown in 2-3 rows
Screenshots

Desktop (please complete the following information):

OS: Any
Browser Any

Smartphone (please complete the following information):

Device: Xiaomi
OS: Android latest
Browser Any

Also will be good to have the ability to use the toolbar button for toggle between code and preview, instead of tabs

As a css fix:
@media only screen and (max-width: 480px) {
    .toastui-editor-dropdown-toolbar {
        max-width: none;
        flex-wrap: wrap;
        height: fit-content;
    }
}

@Insolita
Currently, we don't support mobile functionality yet.


[BUG] Simple logger does not work using Elastic.Extensions.Logging

Elastic.Extensions.Logging (NuGet v8.11.1  dotnet 8):
Steps to reproduce:

Creating a new Console Application.
Add NuGet package:  <PackageReference Include="Elastic.Extensions.Logging" Version="8.11.1" />
Add code to Main (replace api key and uri with your configuration)

string apiKeyString = "cGo5c0I1 -- MY VALID API KEY -- FVEQzBDUQ==";
Uri[] nodeUris = [new("https://localhost:9200")];

TransportConfiguration transportConfiguration =
        new TransportConfiguration(new StaticNodePool(nodeUris))
            .ServerCertificateValidationCallback((_, _, _, _) => true)
            .Authentication(new ApiKey(apiKeyString))
            .OnRequestDataCreated(details => { Console.WriteLine($"OnRequestDataCreated > {details}"); })
            .OnRequestCompleted(details => { Console.WriteLine($"OnRequestCompleted   > {details}"); });

    ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
    {
        builder.SetMinimumLevel(LogLevel.Trace);
        builder.AddConsole();
        builder.AddElasticsearch(c =>
        {
            c.IsEnabled = true;
            //c.BootstrapMethod = BootstrapMethod.Failure;
            c.Transport = new DistributedTransport(transportConfiguration);
            c.DataStream = new DataStreamNameOptions { Type = "logs", DataSet = "myapp", Namespace = "test" };
            //c.Index = new IndexNameOptions { Format = "logs-myapp-test"};
        });
    });

    ILogger logger = loggerFactory.CreateLogger<Program>();

    logger.LogInformation("Logging information.");

Console Output is:
info: ElasticClient.Program[0]
      Logging information.

That should work, right?
But no message arrives at Kibana and I'm missing output from OnRequestDataCreated.
Is there something wrong with my code or is there a but at Elastic.Extensions.Logging ?
I would appreciate any help

By default we wait for either 5s or 1000 log messages before flushing to Elasticsearch.
To see it in action use:
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
{
    builder.SetMinimumLevel(LogLevel.Trace);
    builder.AddConsole();
    builder.AddElasticsearch(c =>
    {
        c.IsEnabled = true;
        //c.BootstrapMethod = BootstrapMethod.Failure;
        c.Transport = new DistributedTransport(transportConfiguration);
        c.DataStream = new DataStreamNameOptions { Type = "logs", DataSet = "myapp", Namespace = "test" };
        //c.Index = new IndexNameOptions { Format = "logs-myapp-test"};
    }, o =>
    {
        o.BufferOptions.OutboundBufferMaxLifetime = TimeSpan.FromSeconds(1);
    });
});

ILogger logger = loggerFactory.CreateLogger<Program>();

logger.LogInformation("Logging information.");

await Task.Delay(2000);

We recently pulled in changes to ensure we flush data when the logger gets disposed, so the next version should behave better with premature exits.


Replace ledger with resolver in OOB manager

Signed-off-by: Daniel Bluhm<EMAIL_ADDRESS>

Codecov Report

Merging #1100 (517f7a0) into main (73361c6) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1100      +/-   ##
==========================================
- Coverage   99.37%   99.37%   -0.01%
==========================================
  Files         381      381
  Lines       21876    21865      -11
==========================================
- Hits        21739    21728      -11
  Misses        137      137


[MM-32476] Apps in the Marketplace

Summary
This PR adds the needed types for Apps in the Marketplace. It also consolidates the typed used in the Marketplace in src/types/marketplace.ts.
I added a AppManifest type with only the needed fields for my PR. Should we go ahead and add all types?
Ticket Link
https://mattermost.atlassian.net/browse/MM-32476
https://mattermost.atlassian.net/browse/MM-32535

@catalintomai Please review. I can't add you as a reviewer.


Admin client internal types

What changed?
Switch admin client to internal types. Changed immediate client usage by passing already constructed types or using thrift mappers at the call boundary. Upcoming PRs will propagate those conversions further up, until internal types reaches handlers eventually.

Why?
To propagate internal types throughout Cadence codebase.

How did you test it?
Existing tests.

Potential risks

Coverage decreased (-0.6%) to 59.397% when pulling 4b23c9626876bfdb29ecce533347e8efe0b1d6de on vytautas-karpavicius:admin-client-internal-types into f3b9fdbec81ddf185de263f2374e2cbc20d6829a on uber:master.


Add paginationPosition option

This option allows to set the position of the pagination bar:

'top' will position it on top, between the table and the toolbar
'bottom' (default) will position it below the table (current behaviour).
'both' will display two pagination bar, one on top and the other on the bottom.

@garlab, because of v3.0.0 is on developing, and this release is focus on customizable for components(e,g. pagination, toolbar.) so I wont merge this PR but hope you can reopen another PR and change target into branch of v3.0.0-dev. I'll think about your solution and decide whether to merge it.

BTW, thanks your contribution, You did a great job :100:

Ref to #497, dont forgot this PR

@AllenFang Thanks for your feedback, I will reopen it in v3.0.0-dev shortly.