output location of assets

So I'm probably not understanding the docs fully, so any help is appreciated.
I'm trying to output the generated .svg and .scss into standalone directories.
For example, I want the output .svg to go into the public/build/svg dir and the .scss to go into src/scss along with my other Sass partials before it gets built.
Should I be adding css-render-scss-dest after scss : true ?
config                  = {
    shape               : {
        dimension       : {         // Set maximum dimensions
            maxWidth    : 32,
            maxHeight   : 32
        },
        spacing         : {         // Add padding
            padding     : 10
        }
        dest            : 'public/build/svg'
    },
    mode                : {
        view            : {
            bust        : false,
            render      : {
                scss    : true
              }
        },
        symbol          : true      // Activate the «symbol» mode
    },
    example             : true
};

Hi @stevieg83,
there are several paths you may want to set:

The global dest option sets the main output directory, which serves as a base for all other (relative) paths.
The shape.dest is only needed if you want to output the single optimized SVG shape files. This is not the directory where the sprite(s) will go.
The mode.<mode>.dest option controls where the sprite will go. Defaults to a directory name equal to the mode. Set it to "." if you want the sprite to land in the main output directory.
The mode.<mode>.render.<render>.dest sets where the stylesheet resources will go. If not absolute, the path will be relative to the main output directory.

Btw, setting mode.<mode>.render.scss to true and configuring mode.<mode>.render.scss.dest are mutually exclusive.
Hope this helps.
Cheers, Joschi

Hi !
Im also struggeling with this issue. Im not able to archieve what I want. Sometimes, the files got generated properlly, and some other, they are not.
When seems that everything works nice. Im having problems with the url on the generated scss.
I want to generate svg sprites for two part of my app: public and admin. They have different structure.
So, lets have a look to my folder structure first.
|
|-> front-end // Here, I store all scss, gulp files, etc
|     |
|     |-> gulp
|     |     |
|     |     |-> tasks
|     |           |
|     |           |-> graphics
|     |           |     |
|     |           |     |-> svg-sprites.js // gulp task with gulp-svg-sprite
|     |           |
|     |           |-> config.js // config file for gulp
|     |
|     |-> m-scss // folder with my scss files
|     |     |
|     |     |-> admin
|     |           |
|     |           |-> sprites
|     |           |     |
|     |           |     |-> _admin-sprites.scss // Here is where I want to have outputted the svg sprite's scss regarding to admin
|     |           |
|     |           |-> sprites
|     |                 |
|     |                 |-> _sprites.scss // Here is where I want to have outputted the svg sprite's scss regarding to public area
|     |
|     |-> gulpfile.js
|
|
|-> web // public folder of the app
      |
      |-> admin-assets
      |     |
      |     |-> icons // Folder with all svg for admin area
      |     |
      |     |-> generated // Folder with the generated svg sprite for admin area
      |           |
      |           |-> admin-sprite.svg // Generated svg sprite for admin area
      |
      |-> m-img
            |
            |-> svgs // Folder with all svg for public area
            |
            |-> generated
                  |
                  |-> svg-sprites // Folder with the generated svg sprite for public area
                        |
                        |-> sprite.svg // Generated svg sprite for public area

This are my two tasks (on front-end/gulp/tasks/graphics/svg-sprites.svg );
gulp.task( 'svg-sprites', function () {
  return gulp.src( config.source )
    .pipe( changed( config.destination ) )
    .pipe( svgSprite( config.gulpSvgSpritesSettings ) )
    .pipe( gulp.dest( config.destination ) );
});

gulp.task( 'admin-svg-sprites', function () {
  return gulp.src( config.adminSource )
    .pipe( changed( config.adminSpritesDestination ) )
    .pipe( svgSprite( config.gulpSvgSpritesAdminSettings ) )
    .pipe( gulp.dest( config.adminSpritesDestination ) );
});

And these my (wrong) config file:
    config : {
        source : '../web/m-img/svgs/**/*.svg',
        destination : '../web/m-img/generated/svgs',
        gulpSvgSpritesSettings :
        {
            shape :
            {
                spacing :
                {
                    padding : 5
                }
            },
            mode :
            {
                css :
                {
                    dimensions : true,
                    common : 'svg-icon',
                    prefix : 'icon-',
                    bust : false,
                    sprite : '../sprite.svg',
                    render :
                    {
                        scss    :
                        {
                            dest : '../../../../../front-end/m-scss/sprites/_sprites-svg.scss',
                        }
                    }
                }
            }
        },
        adminSource : '../web/admin-assets/icons/**/*.svg',
        adminSpritesDestination : '../web/admin-assets/generated',
        gulpSvgSpritesAdminSettings :
        {
            shape :
            {
                spacing :
                {
                    padding : 5
                }
            },
            mode :
            {
                css :
                {
                    dimensions : true,
                    common : 'svg-icon',
                    prefix : 'icon-',
                    bust : false,
                    sprite : '../../../../admin-assets/generated/admin-sprites.svg',
                    render :
                    {
                        scss    :
                        {
                            dest : '../../../../front-end/m-scss/admin/sprites/_admin-sprites-svg.scss',
                        }
                    }
                }
            }
        },
    }

I really have a problem trying to understand how the routes works and how to archieve what Im looking for.
Any help will be very appreciated.
Thanks a lot !

Hi @jkphl !
Im still not able to make the output as I explain on my other post.
According to your previous explanation, I set my config like this:
gulpSvgSpritesSettings :
{
    // main output directory, which serves as a base for all other (relative) paths
    dest : '../front-end',
    shape :
    {
        spacing :
        {
            padding : 5
        }
    },
    mode :
    {
        css :
        {
            dimensions : true,
            common : 'svg-icon',
            prefix : 'icon-',
            bust : false,
            dest : './web/m-img/generated/svg-sprites/sprite.svg',
            render :
            {
                scss    :
                {
                    dest : './m-scss/sprites/_sprites-svg.scss',
                }
            }
        }
    }
},

This is my gulp task:
gulp.task( 'svg-sprites', function () {
  return gulp.src( '../web/m-img/svgs/**/*.svg' )
    .pipe( changed( config.spritesDestination ) )
    .pipe( svgSprite( config.gulpSvgSpritesSettings ) )
    .pipe( gulp.dest( '../web/m-img/generated/svg-sprites' ) );
});

This generate the files like this :
|-> front-end
|-> web
      |-> m-img
          |-> generated
                |-> svgs  // Folder with the source svg files
                |-> svg-sprites
                      |-> web
                            |-> m-img
                                  |-> generated
                                        |-> svg-sprites
                                              |-> sprite
                                                    |-> m-scss  // Folder with the scss generated
                                                    |-> svg     // Folder with the svg sprite generated

Whereas my goal was this
|-> front-end
|     |-> gulpfile.js // Gulpfile
|     |-> m-scss
|           |-> sprites // Folder with the scss generated
|-> web
      |-> m-img
          |-> generated
          |-> svgs  // Folder with the source svg files
                |-> svg-sprites // Folder with the svg sprite generated

I try to follow your explanations, like this:
"The global dest option sets the main output directory, which serves as a base for all other (relative) paths."
So, I set this global : dest : '../front-end'
"The mode..dest option controls where the sprite will go."
Set : mode.css.dest : './web/m-img/generated/svg-sprites/sprite'
"The mode..render..dest sets where the stylesheet resources will go."
Set : mode.css.render.scss.dest : './m-scss/sprites/_sprites-svg.scss'
Not sure what Im doing wrong.
Any help will be very appreciated :)
Thanks !

Hi @Avcajaraville,
thanks for this very elaborate description. Unfortunately, I'm too overloaded at the moment to give such deep support, but I'll try to get back to you on the weekend.
Cheers,
Joschi

Thanks a lot ! Looking forward for your support !

@Avcajaraville Your setup seems to be overly complicated, and that's probably the reason for your problems (I guess).
First of all, as stated in the docs, the dest option is completely ignored by the gulp task. Instead, .pipe(gulp.dest('..')) is setting the main output directory. Your gulp task should look like this:
gulp.task( 'svg-sprites', function () {
  return gulp.src( '../web/m-img/svgs/**/*.svg' )
    .pipe( changed( config.spritesDestination ) )
    .pipe( svgSprite( config.gulpSvgSpritesSettings ) )
    .pipe( gulp.dest( '..' ) );
});

which basically makes your root folder the main output directory. Then, your configuration should look like this:
gulpSvgSpritesSettings : {
    // main output directory, which serves as a base for all other (relative) paths
    shape :
    {
        spacing :
        {
            padding : 5
        }
    },
    mode :
    {
        css :
        {
            dimensions : true,
            common : 'svg-icon',
            prefix : 'icon-',
            bust : false,
            dest : '.',
            sprite : 'web/m-img/generated/svg-sprites/sprite.svg',
            render :
            {
                scss    :
                {
                    dest : 'front-end/m-scss/sprites/_sprites-svg.scss',
                }
            }
        }
    }
}

Oh, and by the way: I can't believe that you really want to put your sprite into web/m-img/svgs/svg-sprites, as this would result in the sprite being included into itself in subsequent runs, so I changed it to web/m-img/generated/svg-sprites.
Good luck, cheers, Joschi


chore: Add LICENSE

As most of your work is based on the MIT license, i guess it is missing here?

Hi!
This project gets mirrored from our monorepo (for easier cloning of it): https://github.com/gatsbyjs/gatsby/tree/master/starters/gatsby-starter-theme-workspace
So this is under MIT already :)


starting to test new base class implementation

I sticked with unittest for now. This PR is meant to trigger the github actions workflow. :crossed_fingers:

Ah, seems like scipy is missing from the requirements... Should I merge anyway, and fix it afterward?


Integrated LOD2-download...possible?

https://geoviewer.sachsen.de/mapviewer/resources/apps/produktdownload/index.html?lang=de&products=LOD1,LOD2
Embedding an interactive web tool within a Python application built with PyQt is possible by using the QWebEngineView from PyQt5 or PyQt6's QtWebEngineWidgets module. The QWebEngineView widget allows you to display and interact with web content directly within your application. Here's a step-by-step guide to embedding the provided web tool link into a PyQt application:

Install Required Packages:

Ensure you have PyQt5 or PyQt6 and PyQtWebEngine installed. You can install them with:pip install PyQt5 PyQtWebEngine

For PyQt6, use:pip install PyQt6 PyQt6-WebEngine

Set Up the Application:

The following code creates a PyQt application that opens a window with the embedded web tool.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView  # Use PyQt6.QtWebEngineWidgets if using PyQt6

class WebToolApp(QMainWindow):
    def __init__(self):
        super().__init__()

        # Initialize QWebEngineView and set URL
        self.browser = QWebEngineView()
        url = "https://geoviewer.sachsen.de/mapviewer/resources/apps/produktdownload/index.html?lang=de&products=LOD1,LOD2"
        self.browser.setUrl(url)

        # Set the browser as the central widget
        self.setCentralWidget(self.browser)
        self.setWindowTitle("Interactive Web Tool Viewer")
        self.setGeometry(100, 100, 1200, 800)  # Customize window size if necessary

def main():
    app = QApplication(sys.argv)
    window = WebToolApp()
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Explanation:

QApplication: Manages the application's control flow and main settings.
QWebEngineView: This widget loads and renders the web content.
setUrl: Loads the given URL (your interactive web tool) into the view.
setCentralWidget: Embeds the QWebEngineView as the main content of the main window.

Additional Notes:

PyQt5/PyQt6 Compatibility: Use PyQt6.QtWebEngineWidgets instead of PyQt5.QtWebEngineWidgets if you’re working with PyQt6.
Network Access: The tool will require internet access, so ensure the device running the application has an active network connection.

This setup provides a straightforward way to display the web-based geoviewer in a Python application using PyQt. Let me know if you’d like further customizations, such as adding navigation controls or handling events from the web content.


Clamping incompatibility with +f and f filter_modes

You cannot insert 0. because it is clamped to 0.

The easiest and probably best solution since user decides when to make clamping is to remove autoclamping. Clamping functions comments could be:
## Clamps the numeric value of the text if [param filter_mode] is a numeric mode.
## Note that since float("x.") = float("-x.") = 0 and similars (x is a digit),
## information is lost if clamping is done while typing.
## Clamp only when typing is finished.


Valid auth session checker

Periodically check for a valid auth session.
Automatic refresh of stale auth session tokens

part of #164

Coverage remained the same at 87.937% when pulling bfb0ced1a407e178e82f75635523cb4fdc15f77f on cabhishek:develop into 012b5561a4b5d3ca9d4514349bfdc87c2411e12f on Netflix:develop.


BUG: JSON output omits zero scores (regression on #2432)

Describe the bug
This is a possible regression on #2432 in v4.10.5-1-geb57e04. The JSON output (at least in the cronjob) does not print out scores that are zero.
Reproduction steps

See the cronjob's results for google/j2cl
CII-Best-Practices, Branch-Protection, Token-Permissions and Fuzzing all lack a "score" field. Given the "reason", the scores are likely all zeroes.

{
  "date": "2023-03-27",
  "repo": { "name": "github.com/google/j2cl" ...},
  "scorecard":
    {
      "version": "v4.10.5-1-geb57e04",
      "commit": "eb57e04ac487a76f4dd71aa3cdfc2806c5cd5076",
    },
  "checks":
    [
      {
        "name": "CII-Best-Practices",
        "reason": "no badge detected",
        "details": null,
        "documentation": {...}
      },
      {
        "name": "Branch-Protection",
        "reason": "branch protection not enabled on development/release branches",
        "details": ["Warn: branch protection not enabled for branch 'master'"],
        "documentation": {...}
      },
      {
        "name": "Token-Permissions",
        "reason": "non read-only tokens detected in GitHub workflows",
        "details":
          [
            "Warn: High severity: no topLevel permission defined: .github/workflows/ci.yaml:1: Visit https://app.stepsecurity.io/secureworkflow/google/j2cl/ci.yaml/master?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)",
            "Info: Medium severity: no jobLevel write permissions found",
          ],
          "documentation": {...}
      },
      {
        "name": "Fuzzing",
        "reason": "project is not fuzzed",
        "details": null,
        "documentation": {...}
      },
      ...
    ],
}

Not a regression per-se, but a webapp release was never cut after the patch. Sorry about that, this should be resolved now. Let me know if the issue persists.


Locale support

Feature request
Java Faker library has support for multiple locales Faker faker = new Faker(new Locale("YOUR_LOCALE")); but this is not used in DataHelix. This is an important feature to gain significant data: names, cities are some examples. Perhaps use system locale or a new parameter to establish the locale...

Looks like a change to this class could be made.
https://github.com/finos/datahelix/blob/master/core/src/main/java/com/scottlogic/datahelix/generator/core/generation/string/generators/FakerGenerator.java
Things to consider:

will there be a desire for different locales per field or branch of the profile?

if so there may be the need to branch for values that do and don't respect the locale
e.g. en-GB:name.firstName and not(en-GB):name.firstName

is a 'config' setting the right approach to provide a fallback/default value? Options are:

a setting in the profile itself, e.g. profile settings/defaults
a command line switch or environment variable
or don't provide a fallback and fail the profile of not explicitly defined


Func<Task<int>> disappears (version 1.3.6)

Hello.
The generator produces invalid sync version for the following async code
using OtherNamespace;

namespace SomeNamespace
{
    public partial class Subject1
    {
        [Zomp.SyncMethodGenerator.CreateSyncVersion]
        public async Task<int> FooAsync(
            Func<Task<int>> task
            )
        {
            var r = await task();
            return r;
        }
    }
}

@virzak sorry, but are you sure it is fixed in 1.3.13? I can't confirm this...

@lsoft it will be in 1.3.16 momentarily.


IndexError: index out of range in self when computing perplexity with German GPT-2

I followed your tutorial on computing perplexity of list of sentences. I used the German GPT-2 model dbmdz/german-gpt2.
My code:
from evaluate import load

perplexity = load("perplexity", module_type="metric")
input_texts = ["lorem ipsum", "Happy birthday!", "Happy Birthday!", "Bienvenue", "My name is John."]
perplexity_results = perplexity.compute(predictions=input_texts, model_id="dbmdz/german-gpt2", add_start_token=False, device="cpu")

Error:
Traceback (most recent call last):
  File "/home/izaskr/text_analysis/_testing.py", line 34, in <module>
    perplexity_results = perplexity.compute(predictions=input_texts, model_id="dbmdz/german-gpt2", add_start_token=False, device="cpu")
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/evaluate/module.py", line 444, in compute
    output = self._compute(**inputs, **compute_kwargs)
  File "/home/izaskr/.cache/huggingface/modules/evaluate_modules/metrics/evaluate-metric--perplexity/23c7f61948a6e59ecbd1e92ea827a525b0a412dcef1f1a5bec3dc007452c8fa8/perplexity.py", line 177, in _compute
    out_logits = model(encoded_batch, attention_mask=attn_mask).logits
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/transformers/models/gpt2/modeling_gpt2.py", line 1063, in forward
    transformer_outputs = self.transformer(
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/transformers/models/gpt2/modeling_gpt2.py", line 849, in forward
    inputs_embeds = self.wte(input_ids)
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/torch/nn/modules/sparse.py", line 158, in forward
    return F.embedding(
  File "/home/izaskr/anaconda3/envs/analysis_daf/lib/python3.10/site-packages/torch/nn/functional.py", line 2199, in embedding
    return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
IndexError: index out of range in self

When I use the English GPT-2 model gpt2, there's no error.

This error has nothing to do with evaluate. It is a bug inside the german model itself.
IndexError: index out of range in self: this error appear when your encoded token ids are larger than your embeddings size.
For instance, in this case:
'input_ids': tensor([[10096,   305,   300,  3204,   335],
        [44972,   296, 32060,  4579,     5],
        [44972,   304, 32060,  4579,     5],
        [   38,   427,  1547,   698, 50265],
        [13982, 33898,  1568,  3695,    18]])

and the embedding size (you can see this through model.transformer): 50265.
indices cannot be higher than embedding_dim-1, which is 50264, since the embedding layer is working as a lookup table. The input is used to index the corresponding embedding vector.


python37Packages.google_cloud_resource_manager: 0.30.2 -> 0.30.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python37Packages.google_cloud_resource_manager is: "Google Cloud Resource Manager API client library"
meta.homepage for python37Packages.google_cloud_resource_manager is: "https://github.com/googleapis/python-resource-manager"
meta.changelog for python37Packages.google_cloud_resource_manager is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 0.30.3 with grep in /nix/store/xdp89bhqj50k3swrf30sn0i055lnha8d-python3.7-google-cloud-resource-manager-0.30.3

directory tree listing: https://gist.github.com/e5cc61dc338958afd945dec500e3da60

du listing: https://gist.github.com/4f37dad65863d3a67ad241d8f9851fbb

Rebuild report (if merged into master) (click to expand)

12 total rebuild path(s)

3 package rebuild(s)

3 x86_64-linux rebuild(s)
3 i686-linux rebuild(s)
3 x86_64-darwin rebuild(s)
3 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
python37Packages.google_cloud_resource_manager
python38Packages.google_cloud_resource_manager
python39Packages.google_cloud_resource_manager

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xdp89bhqj50k3swrf30sn0i055lnha8d-python3.7-google-cloud-resource-manager-0.30.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python37Packages.google_cloud_resource_manager https://github.com/r-ryantm/nixpkgs/archive/60451f40affafe645e957b027140de7533c68fb5.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xdp89bhqj50k3swrf30sn0i055lnha8d-python3.7-google-cloud-resource-manager-0.30.3
ls -la /nix/store/xdp89bhqj50k3swrf30sn0i055lnha8d-python3.7-google-cloud-resource-manager-0.30.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

3 packages built:

python37Packages.google_cloud_resource_manager
python38Packages.google_cloud_resource_manager
python39Packages.google_cloud_resource_manager

Maintainer pings
cc @costrouc for testing.

Result of nixpkgs-review pr 107568 run on x86_64-darwin 1

3 packages built:

python37Packages.google_cloud_resource_manager
python38Packages.google_cloud_resource_manager
python39Packages.google_cloud_resource_manager


Further grouping of optional properties

Following on from the grouping optional properties work I did in Edinburgh, someone asked if they could also be grouped according to whether they're specific to the page or are the optional properties that can be applied to every page. Is this something we would want? Something along these lines:

Does this then look odd if there's only the generic options on a page?:

If you would like this to be done what should the titles for the two groups be? I've used the page name for the first group but don't think 'All pages' is particularly clear for the generic ones - what would be better?

Yes I really like the look of that, even potentially building in the option to collapse certain groupings temporarily with a button

Yes I would like that as well.
Would 'General' be a good title?

Ok, I'll commit it (slightly embarrassed that @torinfo's English is better than mine!)

Yes, that works for me. Great work Fay!

Hi @FayCross all
Agree this looks good!
@FayCross one think I don't like about your previous work on the groupings is the 'Enable resuming' being grouped with the Tracking group. @FayCross :-(
I nearly always enable resuming and encourages others to do so too but it seems wrong that to add that you get all the SCORM options too. Perhaps others disagree with my thoughts on this and if so fine. But I'd almost prefer to have the enable resuming option mandatory but unticked by default and on it's own rather than grouped.

Yeah I agree with @ronm123 I think grouping it implies that you can only tick that if you are creating a tracked LO whereas the reasons for adding it were to allow you to bookmark and come back to a page...
Maybe the name isn't the best I could have chosen though...

Ok, I'll take it out of the group

Thanks @FayCross not a criticism in any way I think the new grouping etc are fantastic!

lol!
I can assure you that's not true.... :-)

It's not a problem Ron - I had wondered about that property (haven't used it myself) and had intended to ask everyone if it was in the right place but forgot. If anyone sees any other misplaced ones then please add or remove them from the groups - it should be pretty clear in the xwds how it's done.

The properties that show in the general group are those that are taken from the basicPages.xwd file. I've added a new attribute to each of these called 'common' so that the editor can distinguish between unique & general properties.
@torinfo if you have a chance it would be great if this attribute was added to the xml by the rebuild scripts rather than having to add it to each of them manually. Not a high priority at all though as it works fine as it is as long as we remember to add the attribute to any new properties we add to basicPages.xwd

@FayCross that is a good idea, I'll take that along as I change the translation tools.


Document how to dockerize a Vue app

Description
It would be nice to add a small section (maybe in the Production Deployment page) which shows how to create a production-like docker image of a Vue app built out of an official template (e.g. webpack).
This comes out of my question in the #need-help channel:

I'm trying to create a production-like docker image capable of serving my Vue.js app (built starting from the official Vue.js webpack template).
I came up with something like this:
FROM node:9.3.0-alpine

# install static server
RUN npm install -g serve

# create a 'tmp' folder for the build and make it the current working directory
WORKDIR /app/tmp

# copy only the package.json to take advantage of cached Docker layers
COPY package.json .

# install project dependencies
RUN npm install

# copy project files and folders to the working directory
COPY . .

# build for production with minification
RUN npm run build

# make the 'app' folder the current working directory
WORKDIR /app

# clean up (i.e. extract 'dist' folder and remove everything else)
RUN mv tmp/dist dist && rm -fr tmp

EXPOSE 5000
CMD [ "serve", "--single", "--port", "5000", "dist" ]

Considering I'm a Vue.js newbie:

is this the best approach (or even a correct one)?
all examples I've found googling around just copy the whole project folder inside the docker container and use the npm run dev command to serve the app with webpack. Is this a preferable approach? (although I guess in this case the non-minified app will be served)
is there an official documentation that clearly describe the best way to dockerize a Vue.js app? (apologies if there is and I missed it)

I think this a great idea. I have a dockerfile that I've been using for Vue applications as well, I could see it in the cookbook and linked to from deployment, as Dockerfiles can be set up many ways, and there is not one true way. Here is my nginx version:
FROM node:alpine

EXPOSE 80

RUN apk add --no-cache nginx

WORKDIR /app

COPY package.json .
RUN yarn install

COPY misc/nginx.conf /etc/nginx/nginx.conf

COPY . .

RUN yarn run generate

CMD ["nginx"]

The only thing I'd say is that the cleanup step adds an unnecessary layer to the image, but that might be something worth documenting and talking through in the cookbook example.
Unless you are interested in writing it, I can make the cookbook example.

@sdras thanks a lot for your prompt feedback!

The only thing I'd say is that the cleanup step adds an unnecessary layer to the image, but that might be something worth documenting and talking through in the cookbook example.

I agree with you here, I wasn't particularly happy about that either. I guess my OCD kicked in and forced me to remove anything unnecessary. Maybe we could chain it to the RUN npm run build to avoid the unnecessary extra layer or maybe there is no point in doing any cleanup.
Also, as you said, there are probably infinite ways to write a Dockerfile for this purpose and I was actually thinking about using something a little bit more robust like nginx as a replacement for serve. Although, in the context of a cookbook, maybe that would mean spending a couple of words describing a (very simple) nginx configuration file.
Finally, unless you have something already, I'd be happy to contribute the cookbook! ❤

Awesome! There's a template here that can help you get started. 🎉

Hey! Just a quick ping on this since it's March now, would you like me to do this recipe instead or are you still planning on putting in the PR? We're going to go to beta on the cookbook soon so I'd like to get it in before that, but I'm flexible in terms of who writes it :)
Cheers! 🍻

We're going to go to beta on the cookbook soon

Really glad to hear that! ❤

Just a quick ping on this since it's March now

You are right, I've been pretty lazy on this, sorry. Let me try to give it a shot in the next couple of days and see what comes out.

Excellent! Thanks

Hi @sdras, thanks for the Dockerfile example! Would you be willing to share the content of your nginx.conf here?

@williamhallatt I was able to get this working using @sdras Dockerfile example with some tweaks. Here are my nginx.conf and nginx.default files, which live the in misc folder;
misc\nginx.conf:
user nginx;
worker_processes 1;
pid /var/run/nginx.pid;
daemon off;

events {
  worker_connections 512;
  # multi_accept on;
}

http {
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;

  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" "$http_host"';

  access_log stdout main;
  error_log  stdout debug;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}

misc\nginx.default:
server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

#  listen 443 default ssl;
#  ssl_certificate /etc/nginx/certs/server.crt;
#  ssl_certificate_key /etc/nginx/certs/server.key;

  root /app/dist;
  index index.html index.htm;

  server_name _;

  location / {
    try_files $uri $uri/ =404;
  }

  location /stats/nginx {
    stub_status on;
  }
}

DockerFile:
FROM node:8.9-alpine
RUN apk add --no-cache nginx
WORKDIR /app
COPY package.json .
RUN yarn install
ADD misc/nginx.default /etc/nginx/conf.d/default.conf
ADD misc/nginx.conf /etc/nginx/nginx.conf
COPY . .
RUN npm run build
EXPOSE 80
CMD ["nginx"]

PS I have crafted the nginx conf files from 2-3 samples I found on the web, so I am not the authority on the subject. But the above is working for me :)
Let me know if it helps?

@williamhallatt @sdras disregard to above solution...... as there is a much better way. Docker mulit-stage builds. Please see new Dockerfile below;
FROM node:8.9-alpine as builder
WORKDIR /app
COPY package.json .
RUN yarn install
COPY . .
RUN npm run build

FROM nginx
COPY --from=builder /app/dist /usr/share/nginx/html

No need for custom nginx conf files and reduces my Docker image from 276MB to 110MB :)

Hi @fredderf204, I managed to get my setup working, but the nginx files were the ones I was after (I cannot run Docker containers in my env). Going to use yours to see if there are any config improvements I can make on ours! 👍

@fredderf204
There is a pending PR which actually shows how to dockerize a Vue.js app taking advantage of the Docker multi-stage builds as you suggested. I'd love to hear your feedback on that!
@williamhallatt
As part of the same PR I mentioned above, one of the first commit actually required a nginx configuration file. It was very basic but maybe you could start from that and further customise it.

@fabriziocucci Thanks for the cookbook Helped me a lot.
Just updating here that I had an issue with the cookbook. It stopped on RUN npm install with this error:
npm ERR! code ENOGIT
npm ERR! No git binary found in $PATH
npm ERR!
npm ERR! Failed using git.
npm ERR! Please check if you have git installed and in your PATH.

Not using the alpine image version worked or  adding this before npm install:
RUN apk update && apk upgrade && \
    apk add --no-cache bash git openssh

Founded this solution here

@fabriziocucci Thanks for the cookbook Helped me a lot.

@gertjanwytynck  I'm really glad to hear that! 😊
Regarding the issue, I've just tried to go through the cookbook one more time, replaying both the simple example and the real-world example but, for some reason, I can't seem to replicate the issue you mentioned.
Could you please help me figure out what's going on here? 😕

what's your dev environment (OS and Docker version)?
did that happen on the simple example or the real-world one?
did you happen to change any of the base images used in the cookbook?

Thanks in advance.

Well,
OS version: 10.13.4
Docker version: 18.03.1-ce, build 9ee9f40
NPM version: 6.1.0
It happend on a real-world example. I have a fixed version in my package file ("webpack-s3-plugin": "git+https://github.com/eyupci/s3-plugin-webpack.git#master"). Maybe that is the reason?
No, only thing I've changed is the apk...
# build stage
FROM node:9.11.1-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN apk update && apk upgrade && \
    apk add --no-cache bash git openssh
RUN npm install
COPY . .
RUN npm run build

# production stage
FROM nginx:1.13.12-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

@gertjanwytynck thanks for your prompt feedback.
I was kind of hoping you deviated from the cookbook by changing the base images but it doesn't seem the case based on what you posted:
# build stage
FROM node:9.11.1-alpine as build-stage
...

# production stage
FROM nginx:1.13.12-alpine as production-stage
...

So, if you remove this:
RUN apk update && apk upgrade && \
    apk add --no-cache bash git openssh

from your Dockerfile you get the error posted above, correct?

@fabriziocucci you're welcome.
That is correct. Just removed those lines, and the error is raised again.

@gertjanwytynck thanks again.
My only (wild) guess at this point is that the issue could be related to one of the dependencies of your project.
May I ask you to clone this repository and try to build the Docker image using the Dockerfile of the real-world example? i.e.
docker build -f Dockerfile.real-world-example -t vuejs-cookbook/dockerize-vuejs-app .


Closures Example is not working.

link:
https://rustwasm.github.io/wasm-bindgen/exbuild/closures/
is not working.
It is showing the following error on console
RuntimeError: unreachable
    at __rust_start_panic (wasm-function[673]:1)
    at rust_panic (wasm-function[594]:31)
    at std::panicking::rust_panic_with_hook::h5d8808384a53a826 (wasm-function[130]:304)
    at std::panicking::continue_panic_fmt::h821bed92a14cf5d5 (wasm-function[324]:116)
    at rust_begin_unwind (wasm-function[664]:3)
    at core::panicking::panic_fmt::hfa7141b9630aa10b (wasm-function[487]:70)
    at core::option::expect_failed::he814056c2f8215e8 (wasm-function[396]:91)
    at <core::option::Option<T>>::expect::h33643d65ce465d73 (wasm-function[161]:170)
    at closures::setup_clock::hcd8ed9afea8a32fa (wasm-function[44]:115)
    at closures::run::h0707c66cb6048ff9 (wasm-function[31]:1014)

and a warning:
[Deprecation] Element.createShadowRoot is deprecated and will be removed in M73, around March 2019. Please use Element.attachShadow instead. See https://www.chromestatus.com/features/4507242028072960 for more details.

cc @xtuc when trying to debug this with --target web it looks like the error goes away, so I'm curious if you know if this was an accidental regression in webpack?

I'm having an issue building the example locally, when running wasm-pack:
thread 'main' panicked at 'index 114 out of range for slice of length 39', src/libcore/slice/mod.rs:2413:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::_print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::continue_panic_fmt
   6: rust_begin_unwind
   7: core::panicking::panic_fmt
   8: core::slice::slice_index_len_fail
   9: <&'src str as wasm_bindgen_cli_support::decode::Decode<'src>>::decode
  10: <alloc::vec::Vec<T> as wasm_bindgen_cli_support::decode::Decode<'src>>::decode
  11: <wasm_bindgen_cli_support::decode::Export<'a> as wasm_bindgen_cli_support::decode::Decode<'a>>::decode
  12: <alloc::vec::Vec<T> as wasm_bindgen_cli_support::decode::Decode<'src>>::decode
  13: <wasm_bindgen_cli_support::decode::Program<'a> as wasm_bindgen_cli_support::decode::Decode<'a>>::decode
  14: wasm_bindgen_cli_support::Bindgen::_generate
  15: wasm_bindgen::main
  16: std::rt::lang_start::{{closure}}
  17: std::panicking::try::do_call
  18: __rust_maybe_catch_panic
  19: std::rt::lang_start_internal
  20: main
Error: Running the wasm-bindgen CLI

Does it seems familiar to you @alexcrichton?
wasm-pack 0.8.1. I'm unsure how I could get wasm-bindgen's version.

Ah that's unfortunately expected from a few other bugs, but you can fix it by copying the example out to a separate directory and building from there

Indeed, I can build it now. It's quite hard to debug but it seems to be in the wasm binary itself. I'll keep trying.

Found the bug! Let me do a PR.


Refresh selectlist dist

I broke the build when I merged https://github.com/web-platform-dx/web-features/pull/1111. This unbreaks it.

I snuck this into #1110.


[0.7] can not change the Google Recaptcha settings

Panel or Daemon: Panel
Version of Panel/Daemon: latest develop
Server's OS: Ubuntu 16.04
Your Computer's OS & Browser: Windows 10 & Chrome

Can not change the Google Recaptcha settings. When i change form "Enable" to "Disable" and i reload is there "Enable". Same with the "Website Key" and "Secret Key" when i change and reload, its there the old one.

Are they updating in the DB settings table at all?

Nothing is changed in the DB. There is always the same key there.

Try clearing the view template cache, and lets just be safe and clear the cache as well: php artisan view:clear and php artisan cache:clear should accomplish that.

Okay, i think this is my fault. I installed the Panel new, but you need to change the Key from Google Recaptcha change in the mySQL otherwise you can not log in.

I fixed that bug in my upgrade for Laravel 5.5, theres an issue with how the config values were being set and checked later on. I am seeing a bug with things not updating, so I'll fix that as well.

This should be resolved now. I missed a checkbox on Google's end that allowed any domain to use the keys.


Propagate quarkusRegistryClient property

The property tells Quarkus Maven Plugin whether it should use the online registry to resolve extension catalog. Default is true for Quarkus. Thanks to the propagation, it can now be overriden when running tests by using -DquarkusRegistryClient=false.
Fixes
https://github.com/quarkus-qe/quarkus-extensions-combinations/issues/115.

Not look on all tests but some of them failing because of logging-json which have two version
- io.quarkus:quarkus-logging-json
- io.quarkiverse.loggingjson:quarkus-logging-json

@jsmrcka How is this gonna work when new branch is introduced?
When we for example introduce 3.7 branch, will it fetch list of extensions for 3.7 Quarkus stream and main will be using Quarkus latest?

@jsmrcka How is this gonna work when new branch is introduced?
When we for example introduce 3.7 branch, will it fetch list of extensions for 3.7 Quarkus stream and main will be using Quarkus latest?

@rsvoboda Extensions are being listed using this POM: https://github.com/quarkus-qe/quarkus-extensions-combinations/blob/main/src/main/resources/list-extensions.pom.xml, which imports a BOM based on root POM of the TS (or on mvn arguments, if provided).
Different branches usually have their own Quarkus version, so for each one, the list of extensions should correspond to the Quarkus stream.
This PR does not chage that.

So the command is operating on top of generated list-extensions.pom.xml, so the right stream gets picked from the bom defined there.
I still see some challenges:
Upstream:

once the upstream removes stream entries from registry, tests won't work

available streams: https://registry.quarkus.io/client/platforms
tbh, risk is pretty low

Downstream:

planning to use dedicated registry or using -DquarkusRegistryClient=false ?

Downstream:

planning to use dedicated registry or using -DquarkusRegistryClient=false ?

Yes, the  -DquarkusRegistryClient=false. See https://gitlab.cee.redhat.com/quarkus-qe/jenkins-jobs/-/merge_requests/747.

Triggered https://github.com/quarkus-qe/quarkus-extensions-combinations/actions/runs/6967176672 to see the longer run


app wont run after migration

Steps to Reproduce

I had cloned a project off of github and tried to open it
on running flutter packages get, i was told to migrate using some instructions which i have managed to do,
but after migration and sucessfully running flutter packages get, when i run my app, it still throws an exception in run console

Logs

[ +186 ms] executing: [C:\src\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +91 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +1 ms] f30b7f4db93ee747cd727df747941a28ead25ff5
[   +1 ms] executing: [C:\src\flutter/] git tag --points-at HEAD
[  +65 ms] Exit code 0 from: git tag --points-at HEAD
[        ] 1.22.0-12.4.pre
           1.22.1
[  +16 ms] executing: [C:\src\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[  +53 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/stable
[        ] executing: [C:\src\flutter/] git ls-remote --get-url origin
[  +42 ms] Exit code 0 from: git ls-remote --get-url origin
[   +1 ms] https://github.com/flutter/flutter.git
[ +125 ms] executing: [C:\src\flutter/] git rev-parse --abbrev-ref HEAD
[  +59 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[  +98 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +6 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +67 ms] executing: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[ +117 ms] List of devices attached
                    043911194R100252       device product:H624 model:Infinix_X627 device:Infinix-X627STU transport_id:1
[  +13 ms] C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe -s 043911194R100252 shell getprop
[ +159 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[   +7 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +4 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +409 ms] Generating C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[  +36 ms] ro.hardware = mt6761
[        ] ro.build.characteristics = default
[  +88 ms] Starting incremental build...
[   +4 ms] Initializing file store
[  +21 ms] Skipping target: gen_localizations
[  +14 ms] complete
[  +10 ms] Launching lib\main.dart on Infinix X627 in debug mode...
[   +8 ms] C:\src\flutter\bin\cache\dart-sdk\bin\dart.exe --disable-dart-dev C:\src\flutter\bin\cache\artifacts\engine\windows-x64\frontend_server.dart.snapshot --sdk-root
C:\src\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk/ --incremental --target=flutter --debugger-module-names --experimental-emit-debug-metadata
-Ddart.developer.causal_async_stacks=true --output-dill C:\Users\HP\AppData\Local\Temp\flutter_tools.d409d577\flutter_tool.dff591f1\app.dill --packages .packages -Ddart.vm.profile=false
-Ddart.vm.product=false --bytecode-options=source-positions,local-var-info,debugger-stops,instance-field-initializers,keep-unreachable-code,avoid-closure-call-instructions
--enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build\cache.dill.track.dill
[  +40 ms] executing: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe -s 043911194R100252 shell -x logcat -v time -t 1
[ +126 ms] Exit code 0 from: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe -s 043911194R100252 shell -x logcat -v time -t 1
[   +1 ms] --------- beginning of main
           11-28 00:25:19.556 D/pnpmgr  ( 1623): wl = 1,rt_time = 0,rt_data = 0,wt_time = 0,wt_data = 0,pid = 0,data = 0
[   +3 ms] executing: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe -s 043911194R100252 shell -x logcat -v time -t 1
[ +134 ms] Exit code 0 from: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe -s 043911194R100252 shell -x logcat -v time -t 1
[   +1 ms] --------- beginning of system
           11-28 00:25:19.866 I/MWN     (  974): write the value:0 to node successfully.
[  +25 ms] <- compile package:clima/main.dart
[ +142 ms] executing: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe version
[ +275 ms] Android Debug Bridge version 1.0.41
                    Version 30.0.4-6686687
                    Installed as C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe
[  +26 ms] executing: C:\Users\HP\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[ +201 ms] Building APK
[  +77 ms] Running Gradle task 'assembleDebug'...
[  +22 ms] gradle.properties already sets `android.enableR8`
[  +17 ms] Using gradle from C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android\gradlew.bat.
[   +2 ms] C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android\gradlew.bat mode: 33279 rwxrwxrwx.
[  +14 ms] executing: C:\Program Files\Android\Android Studio\jre\bin\java -version
[ +299 ms] Exit code 0 from: C:\Program Files\Android\Android Studio\jre\bin\java -version
[   +1 ms] openjdk version "1.8.0_242-release"
           OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
           OpenJDK 64-Bit Server VM (build 25.242-b01, mixed mode)
[   +6 ms] executing: [C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android/] C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android\gradlew.bat -Pverbose=true
-Ptarget-platform=android-arm -Ptarget=C:\Users\HP\AndroidStudioProjects\Clima-Flutter\lib\main.dart -Ptrack-widget-creation=true -Pfilesystem-scheme=org-dartlang-root assembleDebug
[+5622 ms] > Task :app:compileFlutterBuildDebug
[   +2 ms] [ +215 ms] executing: [C:\src\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +13 ms] [ +118 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +1 ms] [        ] f30b7f4db93ee747cd727df747941a28ead25ff5
[   +1 ms] [   +4 ms] executing: [C:\src\flutter/] git tag --points-at HEAD
[ +111 ms] [ +104 ms] Exit code 0 from: git tag --points-at HEAD
[   +2 ms] [        ] 1.22.0-12.4.pre
[   +1 ms]            1.22.1
[   +1 ms] [  +72 ms] executing: [C:\src\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[  +85 ms] [ +115 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[   +4 ms] [        ] origin/stable
[   +1 ms] [        ] executing: [C:\src\flutter/] git ls-remote --get-url origin
[ +103 ms] [  +67 ms] Exit code 0 from: git ls-remote --get-url origin
[   +2 ms] [        ] https://github.com/flutter/flutter.git
[ +215 ms] [ +149 ms] executing: [C:\src\flutter/] git rev-parse --abbrev-ref HEAD
[  +83 ms] [ +131 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[   +1 ms] [        ] stable
[  +95 ms] [  +74 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[   +2 ms] [   +1 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[   +1 ms] [   +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +1 ms] [   +6 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [  +42 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[ +124 ms] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[  +34 ms] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[  +94 ms] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +6 ms] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[   +3 ms] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[   +2 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +6 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +6 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[  +10 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[  +18 ms] [ +217 ms] Initializing file store
[   +9 ms] [  +45 ms] Done initializing file store
[  +73 ms] [  +91 ms] Skipping target: gen_localizations
[+1771 ms] [+1852 ms] Skipping target: kernel_snapshot
[   +2 ms] [  +10 ms] invalidated build due to missing files: C:\Users\HP\AndroidStudioProjects\Clima-Flutter\DOES_NOT_EXIST_RERUN_FOR_WILDCARD969988945
[ +697 ms] [ +624 ms] debug_android_application: Starting due to {InvalidatedReason.inputMissing}
[ +499 ms] [ +511 ms] Manifest contained wildcard assets. Inserting missing file into build graph to force rerun. for more information see #56466.
[   +1 ms] [  +48 ms] debug_android_application: Complete
[ +599 ms] [ +606 ms] Persisting file store
[  +99 ms] [  +17 ms] Done persisting file store
[   +2 ms] [   +7 ms] build succeeded.
[   +1 ms] [  +22 ms] "flutter assemble" took 4,135ms.
[        ] [   +7 ms] ensureAnalyticsSent: 0ms
[        ] [   +1 ms] Running shutdown hooks
[        ] [        ] Shutdown hooks complete
[        ] [   +5 ms] exiting with code 0
[ +398 ms] > Task :app:packLibsflutterBuildDebug UP-TO-DATE
[   +1 ms] > Task :app:preBuild UP-TO-DATE
[   +1 ms] > Task :app:preDebugBuild UP-TO-DATE
[   +1 ms] > Task :app:compileDebugAidl NO-SOURCE
[        ] > Task :app:checkDebugManifest UP-TO-DATE
[   +1 ms] > Task :app:generateDebugBuildConfig UP-TO-DATE
[   +1 ms] > Task :app:javaPreCompileDebug UP-TO-DATE
[   +1 ms] > Task :app:compileDebugRenderscript NO-SOURCE
[  +91 ms] > Task :app:cleanMergeDebugAssets
[   +5 ms] > Task :app:mergeDebugShaders UP-TO-DATE
[   +1 ms] > Task :app:compileDebugShaders UP-TO-DATE
[   +1 ms] > Task :app:generateDebugAssets UP-TO-DATE
[  +94 ms] > Task :app:mergeDebugAssets
[ +404 ms] > Task :app:copyFlutterAssetsDebug
[   +2 ms] > Task :app:mainApkListPersistenceDebug UP-TO-DATE
[  +92 ms] > Task :app:generateDebugResValues UP-TO-DATE
[   +2 ms] > Task :app:generateDebugResources UP-TO-DATE
[ +110 ms] > Task :app:mergeDebugResources UP-TO-DATE
[   +2 ms] > Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
[   +1 ms] > Task :app:processDebugManifest UP-TO-DATE
[+1178 ms] > Task :app:processDebugResources FAILED
[   +3 ms] FAILURE: Build failed with an exception.
[   +3 ms] * What went wrong:
[        ] Execution failed for task ':app:processDebugResources'.
[        ] > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
[        ]    > Android resource linking failed
[   +1 ms]      C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android\app\src\main\AndroidManifest.xml:25:13-28:19: AAPT: error: resource style/NormalTheme (aka
co.appbrewery.clima:style/NormalTheme) not found.
[   +2 ms] * Try:
[   +1 ms] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[   +1 ms] * Get more help at https://help.gradle.org
[   +1 ms] BUILD FAILED in 12s
[   +1 ms] 16 actionable tasks: 5 executed, 11 up-to-date
[ +495 ms] Running Gradle task 'assembleDebug'... (completed in 13.7s)
[  +59 ms] Exception: Gradle task assembleDebug failed with exit code 1
[   +4 ms] "flutter run" took 15,843ms.
[  +11 ms]
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:14:3)
           #1      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:607:7)
           <asynchronous suspension>
           #2      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:977:18)
           #3      _rootRunUnary (dart:async/zone.dart:1198:47)
           #4      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #5      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #6      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #7      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #8      Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #9      _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
           #10     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
           #11     RunCommand.usageValues (package:flutter_tools/src/commands/run.dart)
           #12     _rootRunUnary (dart:async/zone.dart:1198:47)
           #13     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #14     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #15     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #16     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #17     Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #18     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
           #19     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
           #20     AndroidDevice.isLocalEmulator (package:flutter_tools/src/android/android_device.dart)
           #21     _rootRunUnary (dart:async/zone.dart:1198:47)
           #22     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #23     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #24     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #25     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #26     Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #27     Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
           #28     _rootRun (dart:async/zone.dart:1190:13)
           #29     _CustomZone.run (dart:async/zone.dart:1093:19)
           #30     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
           #31     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
           #32     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
           #33     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
           #34     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
           #35     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

[ +259 ms] ensureAnalyticsSent: 255ms
[   +1 ms] Running shutdown hooks
[        ] Shutdown hook priority 4
[   +6 ms] Shutdown hooks complete
[   +1 ms] exiting with code 1

[√] Flutter (Channel stable, 1.22.1, on Microsoft Windows [Version 10.0.18363.1082], locale en-US)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[√] Android Studio (version 4.0)
[√] VS Code (version 1.50.1)
[√] Connected device (1 available)

• No issues found!

Hello @kelechiude
you can refer to this https://stackoverflow.com/questions/58084850/how-to-fix-this-error-a-failure-occurred-while-executing-com-android-build-grad and this https://stackoverflow.com/questions/52043792/resource-style-launchtheme-not-found
Thanks.

Hi @kelechiude

[   +1 ms]      C:\Users\HP\AndroidStudioProjects\Clima-Flutter\android\app\src\main\AndroidManifest.xml:25:13-28:19: AAPT: error: resource style/NormalTheme (aka
co.appbrewery.clima:style/NormalTheme) not found.

Looks like this some resources is missing, please open the android folder of the project in Android Studio, make sure it has no missing resources or error.
Also, it's a good idea to check if gradle is  classpath 'com.android.tools.build:gradle:3.5.0' cuz when loading old projects, it usually an outdated Gradle version in build.gradle. Create a new project in flutter then compared dependencies from cloned project with a new project, update whatever is needed
Hope this helps

@TahaTesser thanks, This worked perfectly


Sort pickmes

sort pickmes in this order: urgent, no-verify, seagull.

close this PR, cause this is a bad workflow.
I will create a new PR from my topic branch instead of my master branch.


AllTime values are no longer up to date

There is a bug in main.js, line 562, where all AllTime values are not updated since release v1.6.9
It is the following line of the async function insertAllTimeHistory(system, key, year, value, unit):
if (!isNaN(year) || !isNaN(value)) return; // Security fix
If this line is commented out, there are no issues with updating these values.

Fixed in 1.9.10

Works now, thank you!


Add check: Empty block of code

The following block of code should raise an issue for example:
if $a {}

Fixed in https://github.com/iwarapter/sonar-puppet/pull/172
Move to PuppetCheckVisitor once the PR containing this new visitor is merged.


unable to run openbazaar on windows 10 in any way

Tried to install openbazaar with both the 64-bit and 32-bit installer executables => installer crashed immediately as described here: https://github.com/OpenBazaar/OpenBazaar-Installer/issues/47
Tried to run the server in a docker container => [0mMakefile:14: recipe for target 'pycheck' failed
Tried to install using pip: miniupc failed to compile

Any suggestions what I could try next? I'm out of ideas

ok, I got the go implementation of the server to run. Now let's see if the desktop client will install...

Nope, the go client won't install because of a missing dependency 'npmlog'. Turns out to be an npm issue: https://github.com/npm/npm/issues/10409
I tried the things suggested in the thread, but they didn't work for me. I've tried it in the windows terminal and in the bash terminal on the windows subsystem for linux. Nothing works.

Please try on 1.1.8 release and re-open if necessary.

works now, nice!


vendor: upgrade cockroach-cloud-sdk-go to v1.8.0

There are breaking changes in the new cockroach-sdk version. This commit includes the required code changes.
Commit checklist

[ ] Changelog
[x] Doc gen (make generate)
[x] Integration test(s)
[ ] Acceptance test(s)
[ ] Example(s)

Acceptance tests for database resource passed.
$ COCKROACH_API_KEY=<KEY> COCKROACH_SERVER=https://management-staging.crdb.io TF_ACC=1 make test
go test ./... -run TestAccDatabaseResource -v  -timeout 20m
?   	github.com/cockroachdb/terraform-provider-cockroach	[no test files]
?   	github.com/cockroachdb/terraform-provider-cockroach/mock	[no test files]
=== RUN   TestAccDatabaseResource
=== PAUSE TestAccDatabaseResource
=== CONT  TestAccDatabaseResource
--- PASS: TestAccDatabaseResource (32.15s)
PASS
ok  	github.com/cockroachdb/terraform-provider-cockroach/internal/provider	32.547s

This is the serverless cluster created as part of that test
root@localhost:26257/management_console_production> select * from clusters where name = 'tftest-database-spun';
-[ RECORD 1 ]
id                                      | 7cc4e495-6f8b-420c-8a07-fb34ae15591a
organization_id                         | b8a9e812-9c29-4e30-ba28-ca3b83419438
name                                    | tftest-database-spun
environment                             | Staging
created_at                              | 2024-03-10 03:20:26.044685+00
updated_at                              | 2024-03-10 03:20:26.044685+00
creator_id                              | 0d7b5f3f-de40-4c85-8863-145f8177d56d
billing_plan                            | invoice
trial_duration                          | NULL
plan_option_id                          | 00000000-0000-0000-0000-000000000000
pricing_code                            | 2021-12-01
tier                                    | NULL
has_private_nodes                       | f
sso_enabled                             | f
cmek_key_strategy                       | MULTI_KEY
trusted_private_endpoint_owners_enabled | f

^ Doesn't really feel right to me. Will let someone from serverless take a look on Monday.

No CHANGELOG worthy changes IMO since nothing user-impacting.

Can you be more specific? What doesn't feel right?

That tier and plan option id were not set.

The tier is a computed property right now. I don't think the field is set in the clusters table. The plan option ID is old and deprecated. Probably both fields need to be dropped. @rgcase would know more.

Yep this is all true.


[FEATURE REQUEST] salt-cloud azure add availability zone as configuration setting

Copied from Salt issue 61425 opened by @Dantin1234
https://github.com/saltstack/salt/issues/61425#issue-1095458245
Hello,
Is your feature request related to a problem? Please describe.
I want to use the azure loadbalancer to loadbalance my traffic to my virtual machines created by salt-cloud and managed via salt. But it is not possible to configure an availability zone to an vm via salt. The azure loadbalancer is not usable with salt managed vms in azure until this feature is implemented
Describe the solution you'd like
Add availability zone as configuration setting in "cloud.profiles.d" or as setting usable in a mapping file.
Additional context
azure availability zone documentation
best regards

Also reported in https://github.com/saltstack/salt/issues/56154#issue-564646253


[Discuss]: document an example of how PubSubEngine or a GraphbackCrudService can be used to achieve async / event bound tasks

This builds on https://github.com/aerogear/graphback/issues/1896 but can be documented separately.
With the crud Event emission mechanism we've in place, once can achieve so many event based operations e.g
If we take the Meter business model from an IOT world
"""
@model
"""
type Meter {
  """
  @id
  """
  id: ID!
  address: String!
  latitude: String!
  longitude: String!
}

One usecase will be to send a notification once:

a new meter is up ("created"),
a meter is moved position "updated"
or a meter goes down / removed "deleted".

On top of being able to subscribe to these changes via GraphQL subscriptions (on-call engineers would see these),
one would also like to perform other business related tasks e.g

send an email to notify the admin or an on-call engineer (he might not be looking at the screen for the moment) etc etc

This can be achieved now by subscribing to the PubSub engine passed as an example but it requires one to have the knowledge of Graphback internals e.g

topicName for each operation and type,
the structure of the event/payload.

Code snippet:

interface Meter {
  id: number;
  address: string;
  latitude: string;
  longitude: string;
}

pubSubEngine.subscribe('CREATE_METER', (event: {
  newMeter: Meter
}) => {
  cons payload = event.newMeter
  // do business logic here after meter creation
})

pubSubEngine.subscribe('UPDATE_METER', (event: {
  updatedMeter: Meter
}) => {
  cons payload = event.updatedMeter
  // do business logic here after meter update
})

pubSubEngine.subscribe('DELETE_METER', (event: {
  deletedMeter: Meter
}) => {
  cons payload = event.deletedMeter
  // do business logic here after meter deletion
})

It will be useful to document the default topicName and especially the event structure things.
Optionally, we could provide a way to subscribe to these changes via the service.
services.Meter.subscribe('CREATE', (payload: Meter) => {
 // do business logic here
})

/cc @craicoverflow, @wtrocki
Automatically generated comment to notify maintainers

If we move to streaming platform use case we will naturally diverge from topic being implementation detail and changing it being advanced feature (https://graphback.dev/docs/subscriptions/intro#changing-subscription-topics) to topic creation method being required for each model (or even schema based)

topicName for each operation and type

Solved by extracting topic creation process to template (this is hackend on datasync starter and will require changes in API (or completely different service probably)

the structure of the event/payload.

Solved by strongly typed Meter service

Optionally, we could provide a way to subscribe to these changes via the service.

For me that is not optional but natural requirement once we get into this phase.


Installing Atom package does not work

Installing the Atom package takes forever and does not work. If you try to uninstall you get error message below.
On Ubuntu 15.10 64-bit, Windows 8.1 64-bit and Windows 2012 R2 64-bit and the latest Atom version.
Edit:
I installed from the GUI. If I install using the command line it works but I had to disable/enable the package first. Not sure what went wrong.

@kraades thanks for the feedback. It's going to be really hard for me to find out what went wrong. I can't reproduce the problem on any of my testing environments. Does it always happen when you try to uninstall and install again?


captini user workflow

Putting this on test.samromur.is

Has been tested by Ragnar on test.samromur.is


feat: Add network conditions cli args with sensible defaults

Adds network conditions cli args with sensible defaults

fix #284
--upload-throughput: default 5Mbps
--download-throughput: default 3Mbps
--latency: default 20ms
--offline: default false
--no-throttling: disables all throttling, including sensible defaults :

:broken_heart: Build Failed

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2021-09-23T16:00:31.356+0000

Duration: 4 min 36 sec

Commit: e358760c57b250190f42beae7ff73db60abe6b23

Steps errors
Expand to view the steps failures

Check out from version control

Took 0 min 10 sec . View more details here
Description: [2021-09-23T16:03:02.294Z] The recommended git tool is: NONE
[2021-09-23T16:03:08.875Z] using crede

Check out from version control

Took 0 min 2 sec . View more details here
Description: [2021-09-23T16:03:32.166Z] The recommended git tool is: NONE
[2021-09-23T16:03:32.179Z] using crede

Check out from version control

Took 0 min 2 sec . View more details here
Description: [2021-09-23T16:04:03.938Z] The recommended git tool is: NONE
[2021-09-23T16:04:03.951Z] using crede

:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

/test


Neovim freezes when opening an empty file

First of all, thanks for the great work!
I'm using csv.vim with neovim and I found it seems to freeze my neovim whenever I open an empty CSV:
$ touch empty.csv
$ nvim empty.csv

Then in the neovim status line shows "CSV: No delimiter found. See :h csv-delimiter to set it manually!" and I can't do anything except for killing neovim by force.

Does it happen with vim? If not, I believe this is a neovim issue (and I have never seen such issue with csv.vim)

BTW: Ctrl-C should always abort csv.vim

I don't know why, but the issue is gone after I update all my plugins. Thanks!


chore: fix update-docs workflow for forked PRs

Description
My update-docs.yml workflow breaks on PRs from forks (see #2490). Trying to fix this.
How Has This Been Tested?
According to this, the fix should work.
Checklist:

[x] The title of this PR complies with Conventional Commits.
[ ] I have edited the CHANGELOG accordingly.
[ ] I have made corresponding changes to the documentation.

shall we try this out? :)

It's trying in #2490 as we speak :)

@sesi200  looks like it's working now :)
fyi, in #2490 PR there was a new button in GHA/workflows section at the bottom of conversation tab, and it was something along these lines:
First-time contributors cannot run workflow before approval.
+--------------------+
|   Approve and run  |
+--------------------+

shame I didn't think about taking a screenshot, but it looked 👌

@smallstepman that had nothing to do with my changes, that's just something that appears on forks since they may contain malicious code


Use stat instead of extname when creating require

This PR will make use of fs.statSync instead of path.extname when creating the custom require function. The issue with the previous version is discussed in #4859. But to summarize the previous version creates issues when the folder the script is running from has a name ending with something that might be mistaken for a file extension – for example mysite.com (path.extname('mysite.com') === '.com').
One could argue if we even need to do the check since makeDefaultLoader is always passed context.cwd which I guess is always a directory? We could probably just do with from = path.join(from, '__fake.js'). Please let me know if you think I should remove the check completely.
Related #4859

Ran into the same issue and this PR fixed it.

This is great. Thank you @adambrgmn !

Would be great to have a release for this soon, so my colleagues don't need to relay on a local build of it.


BUG: Nested events not handled

Motivation and Resolution
Solves #1134 .
Cairo is now using a new concept : the components. Events can be nested in these components. To differentiate them, an event name can now be defined with more than one hash number ; so the number of felts to represent the hashed name in key[] can be greater than one (unless usage of the Cairo #[flat] attribute). See https://book.cairo-lang.org/ch14-03-contract-events.html?highlight=events#defining-events .
As the current code is not taking into account this case of nested events, the parse of a such event is returning an empty array.
This PR is solving this case.
Usage related changes

[!WARNING]
Breaking change:  Today, a parsed event is identified only by its name, without the complete path. As the same event name can now be present in several components in the same contract (one real example is used in tests, with 2 events called Deposit), to be able to differentiate them, the name is now the complete name : path + name.
Example :

was : Deposit
is now : kurosawa_akira::DepositComponent::deposit_component::Deposit

Development related changes

The abi includes a complete tree of the events of all components ; getAbiEvents() creates recursively a tree of events hashs. It will be used for the event parse.
events.parseEvents() is reading the event name hash in key[] ; if necessary, several numbers are read.
This PR is also the opportunity to fix a problem in the documentation site : the invitation link for Discord is valid only 7 days. So, it has been replaced by a link to the space in Starknet Discord.
tests : A big abi from an existing project deployed in Sepolia is used, with an add at the end from Openzeppelin contracts including a Flat Event. It includes normal events and nested events, with 2 events with the same name (Deposit). So there is no use of Devnet-rs ; inputs and outputs have been recovered from Sepolia real examples.

Checklist:

[x] Performed a self-review of the code
[x] Rebased to the last commit of the target branch (or merged it into my branch)
[x] Linked the issues which this PR resolves
[x] Documented the changes in code (API docs will be generated automatically)
[x] Updated the tests
[x] All tests are passing

I think I will first commit something to answer to @tabaktoni, and when it will be accepted, I will focus on @ivpavici  requests.

@tabaktoni
I have added the types from rpc 0.6 (as rpc 0.7 event types can't be imported with current libs used by SNJS) :
abi.ts :
import type { ENUM_EVENT, EVENT_FIELD, STRUCT_EVENT } from '../../api/rpcspec_0_6/contract';

I will move to 0.7 when exports available.
NOTA : I have now a huge quantity of commits listed in this PR, that appeared after merge to next-version branch. I don't know how to solve this. If it's a problem, if somebody can solve this ...


More accurate error message when re-exporting a type with --isolatedModules

Search Terms
--isolatedModules, re-export
Suggestion
Provide guidance to the user on what to do when they hit the "Cannot re-export a type when the '--isolatedModules' flag is provided" error message in cases like this:
export { Foo } from "./mod";

As-is, the error message:

doesn't tell the user what the (non-obvious) workarounds are
is incorrect because it is possible for re-export types - the user just needs to use alternative syntax

Here are some options for fixing:

"Try rewriting as export type Foo = import('./mod').Foo
"Try rewriting as import { Foo as FooAlias } from "./mod"; export type Foo = FooAlias;"

Use Cases
Currently, we've seen that users don't know what action to take when they hit this error message. Adding this additional information will provide clear guidance to the user on the preferred workaround.
Examples
Code:
export { Foo } from "./mod";

Full error message:
" Try rewriting as export type Foo = import('./mod').Foo. Reason: When the '--isolatedModules' flag is provided, TS must be able to distinguish types and values by looking at only the current file.`
Checklist
My suggestion meets these guidelines:

[x ] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

I feel like the right answer is to just make a Stack Overflow Q&A about this with more examples and explanation. The error message is very to-the-point and we don't typically dive super deep into the "why" or "what else should I do" unless we can deliver a one-line alternative.

Thanks for explaining.
Isn't the current error message incorrect, though? It says that re-exporting a type isn't permitted. But re-exporting a type is permitted, provided the user aliases or uses different syntax.

@mheiber I agree that this is a misleading error message. At the very least it should say Cannot export unaliased types when '--isolatedModules' flag is provided. That would at the very least give you the hint about aliasing.
We shouldn't have to go to SO just to decipher what every esoteric message typescript provides means when there are useful and friendly alternatives. It makes the language very inaccessible.

In TS 3.8 the message is Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'., so this issue can be closed?

In TS 3.8 the message is Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'., so this issue can be closed?

👍  thanks for the reminder, @vkrol


Adapt the binder-tests to interact with actual interceptors instead of relying on test channels

As a developer, I'd like to refactor the binder tests to use the actual interceptors, so we can validate the real functional abilities as opposed to merely relying on test channels for the message in/out.

Given that this issue has to be handled at the AbstractTestBinder.bindProducer/Consumer closing it in favor of https://github.com/spring-cloud/spring-cloud-stream/issues/1111


trap focus in modal

The trap focus behavior within the modal is mostly there, but there are some instances where fixes are needed.

this issue arises when there hyperlinks within the short and/or long captions

should be constrained within the modal now; fix found within trapFocus function. added helpers handleFocus and cleanup to facilitate


Build against JRuby

This is mostly about running the specs (especially integration specs) against JRuby to ensure Gemstash responds with the correct gems when you are using a different platform.
However, if we want to support a JRuby version of this gem, this PR includes support for that as well... it will just be a matter of building and pushing the gem under JRuby.
A few oddities I encountered:

Travis doesn't have full support for JRuby 9000 yet... hence the jruby-<IP_ADDRESS> version in .travis.yml. Anything else will not install the right version of JRuby
Process.spawn is broken under JRuby, I filed a ticket against JRuby for this, it affected us because it causes Bundler to think our Gemfile was the current working directory
JRuby was erroring out when checking that the test servers were ready to receive requests with an error that I hadn't seen on MRI (Errno::EBADF)
Bundler has an existing issue where there is a warning message being output when using JRuby 9000, I have this sectioned off in the helper so we can remove the code when Bundler gets updated
Travis is building JRuby 9000 in a weird way such that a separate warning message comes up (I don't see it running on my machine). I adapted the spec for this case like I did for the previous item, but I don't know when or how this might get fixed by Travis

:+1:


Appstudio update test-component-pac-lbul

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI/test-component-pac-lbul-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
8 seconds
init

✅ Succeeded
13 seconds
clone-repository

✅ Succeeded
1 minute
sast-snyk-check

✅ Succeeded
48 seconds
build-container

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
51 seconds
clamav-scan

✅ Succeeded
49 seconds
deprecated-base-image-check

✅ Succeeded
17 seconds
sbom-json-check

✅ Succeeded
46 seconds
inspect-image

✅ Succeeded
7 seconds
show-sbom

✅ Succeeded
6 seconds
show-summary

Pipelines as Code CI/test-component-pac-lbul-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
8 seconds
init

✅ Succeeded
13 seconds
clone-repository

✅ Succeeded
48 seconds
build-container

✅ Succeeded
1 minute
sast-snyk-check

✅ Succeeded
49 seconds
deprecated-base-image-check

✅ Succeeded
51 seconds
clamav-scan

✅ Succeeded
17 seconds
sbom-json-check

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
46 seconds
inspect-image

✅ Succeeded
7 seconds
show-sbom

✅ Succeeded
6 seconds
show-summary

Pipelines as Code CI/test-component-pac-lbul-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
5 seconds
init

✅ Succeeded
52 seconds
clone-repository

✅ Succeeded
21 seconds
build-container

✅ Succeeded
40 seconds
sast-snyk-check

✅ Succeeded
33 seconds
clamav-scan

✅ Succeeded
13 seconds
clair-scan

✅ Succeeded
18 seconds
inspect-image

✅ Succeeded
43 seconds
deprecated-base-image-check

✅ Succeeded
10 seconds
sbom-json-check

✅ Succeeded
8 seconds
show-sbom

✅ Succeeded
8 seconds
show-summary


Adds beanies to the WinterDrobe!

About the PR

Adds four red-and-white beanies to the winterdrobe, as well as room for more color combinations in the future.
Why / Balance

old:
I know the vendors are supposed to be frozen until uniform dying exists, but it's really really just an absolute shame I can't get my Space Canadian on. The original plan was multiple beanies of multiple color varieties, but I think a simple red-and-white beanie adds the charm that I and any other Space Canadians are looking for. It's also a very versatile color choice, compared to something like blue or green.
new:
Initially, I was aware of the freeze but didn't fully get why. The original plan was that I would sprite and code only one beanie - red and white. The scope shifted to making the sprite grayscale and changing the hex codes to get the colors I want, however I'm trying to avoid bloat to the vending machines (until uniform dying or whatever it is gets finished up) with the hopes that this PR has a higher chance of being merged now and I can figure out other colors later.
Is there a chance that something changes and the framework becomes redundant? Yes. Yes there is.
Media

Requirements

[X] I have read and am following the Pull Request and Changelog Guidelines.
[X] I have added media to this PR or it does not require an ingame showcase.

Changelog

:cl:

add: Beanies can now be found in WinterDrobes, don'tchaknow.

better to make it greyscale, so it can be dyed via prototypes in future

better to make it greyscale, so it can be dyed via prototypes in future

I know what you're talking about, but I just don't understand how I would go about that

I know what you're talking about, but I just don't understand how I would go about that
And since "the future" might be weeks from now, I'd like at least this beanie in the game for now. Please thank you. :)

Its really easy you just need to make the layer that is colored grayscale, and then set the color in ymal

I know what I have to do now, just gotta do it

I think there's a "check failed for unrelated reasons" virus spreading around...
cough cough
6 feet away please.

Unrelated test fail, I'm rerunning it for you.

failed again

pondering


Add dectest suite and regex parser

dectest suite from http://speleotrove.com/decimal/dectest.html
Currently testing only tests ddAdd.dectest (double decimal, 64 bits)
Testcases are for following functions:
http://speleotrove.com/decimal/dectest.html
in response to issues:
#17 and #1

@anzdaddy might know better, but I believe:
-- Copyright (c) Mike Cowlishaw,  1981, 2010.  All rights reserved.   --
-- Parts copyright (c) IBM Corporation, 1981, 2008.                   --

without any additional clauses on usage means we are not allowed to use it in this repo.

Agreed. We have to resolve this before the PR can be merged.

To keep this PR bounded, let's exclude tests that don't pass or are not executing, then bring them into subsequent PRs once they do.

To keep this PR bounded, let's exclude tests that don't pass or are not executing, then bring them into subsequent PRs once they do.

Going to coment out "TestFromSuite" function as a placeholder, already have a branch that passes all ddAdd operations, will bring in next PR


Avatar colors are wrong in comments

The background color of an avatarless user is always black (guest) on comments. It shows the right color for a second due to optimistic insertion of a new comment, but I guess the role is not transmitted properly through the events?

No close before verify!
:)

Verfied as fixed !
Client version	v1.2.91
API version	v0.4.35
IMG version	v0.1.10


test_pagination_per_day_answer.py:52: добавить тест для...

The puzzle 1213-bb7135db from #1213 has to be resolved:
https://github.com/blablatdinov/tg-quranbot/blob/3d156d0f62748d1a643d6ce7f8957b012f862f57/src/tests/it/handlers/test_pagination_per_day_answer.py#L52-L52
The puzzle was created by Ilaletdinov Almaz on 02-Sep-24.
Estimate: 30 minutes,  role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

The puzzle 1213-bb7135db has disappeared from the source code, that's why I closed this issue.


Document thread safety

I'm trying to work in C++. There is an example of a multithreaded echo server, but that never sends to a socket on another worker/server. Is it safe to call broadcast from one server thread to another?

The threading model is a bit busted and needs some work but yes, the idea is that if you pass WORKER to the EventSystem constructor, all sockets that are created from this Server that makes use of this EventSystem is safe to use from any other thread (at least sending). It is safe to use, but there is no guarantee that there will be no race condition if you are broadcasting using the same Server from two different threads at the same time.
Race condition is up to solve by the user, and you can attach your own mutex to any WebSocket via setData, or have on mutex for one entire Server.

Is there any change regarding threading model with 0.10 as well? or the above explanation is sufficient for it.

My current implementation has a per client lock immediately before the call
to send(),  since I make heavy use of the pattern you are describing.
That is not perfect, but I was in a rush to port to 0.10.x and needed to
guarantee stability.
I have a plan for eliminating that lock,  although the granularity of those
locks seem fine in production code for now.
Alex has a plan as well, although there are some optimizations that can be
better done at a higher level if you really understand your own flows
I really would like to see BoringSSL integrated into master. I think that
would also help a lot, but for now it is just fine.
On Oct 6, 2016 7:56 PM, "Abhinav Gauniyal"<EMAIL_ADDRESS>wrote:

Is there any change regarding threading model with 0.10 as well? or the
above explanation is sufficient for it.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/uWebSockets/uWebSockets/issues/244#issuecomment-252039828,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGQZ0vBBuWK2bOUeIvnPjUj4CiIwEZTcks5qxTZWgaJpZM4J50B-
.

With 0.10.0 the threading model is the same but you need to opt-in to threading by calling Group::addAsync(). Why this strange name? Well, it is kind of messed up but by adding an async (uv_async_t) you make the Hub capable of listening for connection transfers. You transfer a connection between groups with ws.transfer(group). This way you get to transfer connections between CPU cores ay any time. You no longer have the restriction of only transfering connections at onUpgrade. This makes it possible to use uS::REUSE_PORT as a flag when listening so that the Linux kernel will load balance your connections and then you get to even them out if you want to (for instance, you can have a timer go off every 1 hours and evenly distribute the connections over all CPU cores).

I will be writing a user manual at some point. It's really over due.

Yeah, only Node.js is tied to OpenSSL. Any C++ only solution can use other SSL's like wolfSSL and such if we integrate them. Should be simple enough. I'm all for that support.

Yes and there is that, which is very cool but it does take some effort to
make use of properly.
On Oct 6, 2016 8:19 PM, "Alex Hultman"<EMAIL_ADDRESS>wrote:
With 0.10.0 the threading model is the same but you need to opt-in to
threading by calling Group::addAsync(). Why this strange name? Well, it is
kind of messed up but by adding an async (uv_async_t) you make the Hub
capable of listening for connection transfers. You transfer a connection
between groups with ws.transfer(group). This way you get to transfer
connections between CPU cores ay any time. You no longer have the
restriction of only transfering connections at onUpgrade. This makes it
possible to use uS::REUSE_PORT as a flag when listening so that the Linux
kernel will load balance your connections and then you get to even them out
if you want to (for instance, you can have a timer go off every 1 hours and
evenly distribute the connections over all CPU cores).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/uWebSockets/uWebSockets/issues/244#issuecomment-252045961,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGQZ0hb5UJg22imIjjcuw5NyTOlSMypKks5qxTuogaJpZM4J50B-
.

I am using the reuse port stuff,  and it is really awesome
On Oct 6, 2016 8:23 PM, wrote:

Yes and there is that, which is very cool but it does take some effort to
make use of properly.
On Oct 6, 2016 8:19 PM, "Alex Hultman"<EMAIL_ADDRESS>wrote:
With 0.10.0 the threading model is the same but you need to opt-in to
threading by calling Group::addAsync(). Why this strange name? Well, it is
kind of messed up but by adding an async (uv_async_t) you make the Hub
capable of listening for connection transfers. You transfer a connection
between groups with ws.transfer(group). This way you get to transfer
connections between CPU cores ay any time. You no longer have the
restriction of only transfering connections at onUpgrade. This makes it
possible to use uS::REUSE_PORT as a flag when listening so that the Linux
kernel will load balance your connections and then you get to even them out
if you want to (for instance, you can have a timer go off every 1 hours and
evenly distribute the connections over all CPU cores).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/uWebSockets/uWebSockets/issues/244#issuecomment-252045961,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGQZ0hb5UJg22imIjjcuw5NyTOlSMypKks5qxTuogaJpZM4J50B-
.

Group::addAsync should be renamed to something like Group::listen(ASYNC); Where ASYNC is some negative number to differ it from port.

ASYNC should be renamed to TRANSFERS. The concept is that you listen to a transfer instead of a port.

if not provide thread safe, how can i use

If you need absolute thread safety you need to attach a mutex to your socket with setData and lock/unlock it before/after any use of the socket. You can get the sockets mutex with getData.

@alexhultman, what's the threading model used in the default example? Is it safe to assume it uses one single thread for sending, receiving, connecting, etc?

Yes it will only use 1 thread unless you create more. 1 Hub per thread.

Thank you.

I've been playing around with this library some (in C++) and have some questions about thread safety in the latest version and have not been able to find an answer in the existing issues.
I need to run the websocket server in a separate thread to be able to handle other types of requests, such as udp receives, http requests, etc.
So given the following scenario: (pseudo)
this->hub.onConnection... // handle a new client, store it in a thread safe list
this->hub.onDisconnection... // remove it safely from the list
this->hub.onMessage... // add to a thread safe message queue

this->webSocketServerThread = std::thread([this] () {
    this->hub.run(); // my uwebsocket hub instance
});

this->receiveOtherTypeOfMessage(message) {
    // safely, for every client, send message
   for client in clients
       client.ws.send(message); // is this safe?
}

I want to send messages to all the clients in my thread safe list from main thread. Can this be done safely?
I will not send to a client or close a connection based on an event from the uwebsocket thread. I will only send from the main thread.
What happens if I try to send data to a client during an internal uwebsocket "websocket termination" or similar? For earlier versions of the lib, you mention that it's possible using libuv. But after the major rewrite it seems it works differently.
I hope you can give some hints on how this could be done.
PS. You've done a great job building this 👍 DS

as long as you lock before you remove the socket from your list, and also lock before you traverse the list you should be fine. you also need to call Group::addAsync to groups you want to control from different threads

There is now initial thread-safety in place that should document the problem better (You lock the Node which also documents the potential performance loss - you don't want to lock Nodes from different threads all the time so use transfer to group things where you need them). I'm closing this, future versions will have very clear documentation of what is thread safe or not. There is a macro THREADSAFE_FUNCTION in all functions that are thread safe (nice documentation).


Add a 'bin' reaction option using a Message#createReactionCollector()…

This PR submits a new addition to the djsCommand, so if users don't get the right result back, they have a 10 second window to react in order to delete both their and the bot's message.
[ x ] Changes have been tested and were successful.
[ ] There were changes to typings.
[ x ] Changes have been done to commands, events, handlers, and other core parts of the Project.
In this case, the only changes prompted were in the djsCommand.ts file under DiscordServerBot/src/commands/djsCommand.ts.

Thanks Sin!