The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.
Inspired by SwiftGen .
Motivation
Using asset path string directly is not safe.
# pubspec.yaml
flutter:
assets:
- assets/images/profile.jpg
Bad What would happen if you made a typo?
Widget build(BuildContext context) {
return Image.asset('assets/images/profile.jpeg');
}
// The following assertion was thrown resolving an image codec:
// Unable to load asset: assets/images/profile.jpeg
Good We want to use it safely.
Widget build(BuildContext context) {
return Assets.images.profile.image();
}
Installation
Homebrew
Works with MacOS and Linux.
$ brew install FlutterGen/tap/fluttergen
Pub Global
Works with MacOS, Linux and Windows.
$ dart pub global activate flutter_gen
You might need to set up your path .
As a part of build_runner
Add build_runner and FlutterGen to your package’s pubspec.yaml file:
dev_dependencies:
build_runner:
flutter_gen_runner:
Install FlutterGen
$ flutter pub get
Use FlutterGen
$ flutter packages pub run build_runner build
Usage
Run fluttergen after the configuration pubspec.yaml .
$ fluttergen -h
$ fluttergen -c example/pubspec.yaml
Configuration file
FlutterGen generates dart files based on the key flutter and flutter_gen of pubspec.yaml . Default configuration can be found here .
# pubspec.yaml
# ...
flutter_gen:
output: lib/gen/ # Optional (default: lib/gen/)
line_length: 80 # Optional (default: 80)
# Optional
integrations:
flutter_svg: true
flare_flutter: true
colors:
inputs:
- assets/color/colors.xml
flutter:
uses-material-design: true
assets:
- assets/images/
fonts:
- family: Raleway
fonts:
- asset: assets/fonts/Raleway-Regular.ttf
- asset: assets/fonts/Raleway-Italic.ttf
style: italic
Available Parsers
Assets
Just follow the doc Adding assets and images#Specifying assets to specify assets, then FlutterGen will generate related dart files. No other specific configuration is required.Ignore duplicated.
# pubspec.yaml
flutter:
assets:
- assets/images/
- assets/images/chip3/chip.jpg
- assets/images/chip4/chip.jpg
- assets/images/icons/paint.svg
- assets/json/fruits.json
- assets/flare/Penguin.flr
- pictures/ocean_view.jpg
These configurations will generate assets.gen.dart under the lib/gen/ directory by default.
Usage Example
FlutterGen generates Image class if the asset is Flutter supported image format.
Example results of assets/images/chip.jpg:
Assets.images.chip is an implementation of AssetImage class .Assets.images.chip.image(...) returns Image class .Assets.images.chip.path just returns the path string.
Widget build(BuildContext context) {
return Image(image: Assets.images.chip);
}
Widget build(BuildContext context) {
return Assets.images.chip.image(
width: 120,
height: 120,
fit: BoxFit.scaleDown,
);
Widget build(BuildContext context) {
// Assets.images.chip.path = 'assets/images/chip3/chip3.jpg'
return Image.asset(Assets.images.chip.path);
}
If you are using SVG images with flutter_svg you can use the integration feature.
# pubspec.yaml
flutter_gen:
integrations:
flutter_svg: true
flutter:
assets:
- assets/images/icons/paint.svg
Widget build(BuildContext context) {
return Assets.images.icons.paint.svg(
width: 120,
height: 120
);
}
Available Integrations
Packages File extension Setting Usage flutter_svg .svg flutter_svg: trueAssets.images.icons.paint.svg() flare_flutter .flr flare_flutter: trueAssets.flare.penguin.flare()
In other cases, the asset is generated as String class.
// If don't use the Integrations.
final svg = SvgPicture.asset(Assets.images.icons.paint);
final json = await rootBundle.loadString(Assets.json.fruits);
FlutterGen also support generating other style of Assets class:
# pubspec.yaml
flutter_gen:
assets:
# Assets.imagesChip
# style: camel-case
# Assets.images_chip
# style: snake-case
# Assets.images.chip (default style)
# style: dot-delimiter
flutter:
assets:
- assets/images/chip.png
The root directory will be omitted if it is either assets or asset .
assets/images/chip3/chip.jpg => Assets.images.chip3.chip
assets/images/chip4/chip.jpg => Assets.images.chip4.chip
assets/images/icons/paint.svg => Assets.images.icons.paint
assets/json/fruits.json => Assets.json.fruits
pictures/ocean_view.jpg => Assets.pictures.oceanView
Example of code generated by FlutterGen
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************
import 'package:flutter/widgets.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter/services.dart';
import 'package:flare_flutter/flare_actor.dart';
import 'package:flare_flutter/flare_controller.dart';
class $PicturesGen {
const $PicturesGen();
AssetGenImage get chip5 => const AssetGenImage('pictures/chip5.jpg');
}
class $AssetsFlareGen {
const $AssetsFlareGen();
FlareGenImage get penguin => const FlareGenImage('assets/flare/Penguin.flr');
}
class $AssetsImagesGen {
const $AssetsImagesGen();
AssetGenImage get chip1 => const AssetGenImage('assets/images/chip1.jpg');
AssetGenImage get chip2 => const AssetGenImage('assets/images/chip2.jpg');
$AssetsImagesChip3Gen get chip3 => const $AssetsImagesChip3Gen();
$AssetsImagesChip4Gen get chip4 => const $AssetsImagesChip4Gen();
$AssetsImagesIconsGen get icons => const $AssetsImagesIconsGen();
AssetGenImage get logo => const AssetGenImage('assets/images/logo.png');
AssetGenImage get profile => const AssetGenImage('assets/images/profile.jpg');
}
class $AssetsJsonGen {
const $AssetsJsonGen();
String get fruits => 'assets/json/fruits.json';
}
class $AssetsMovieGen {
const $AssetsMovieGen();
String get theEarth => 'assets/movie/the_earth.mp4';
}
class $AssetsUnknownGen {
const $AssetsUnknownGen();
String get unknownMimeType => 'assets/unknown/unknown_mime_type.bk';
}
class $AssetsImagesChip3Gen {
const $AssetsImagesChip3Gen();
AssetGenImage get chip3 =>
const AssetGenImage('assets/images/chip3/chip3.jpg');
}
class $AssetsImagesChip4Gen {
const $AssetsImagesChip4Gen();
AssetGenImage get chip4 =>
const AssetGenImage('assets/images/chip4/chip4.jpg');
}
class $AssetsImagesIconsGen {
const $AssetsImagesIconsGen();
SvgGenImage get fuchsia =>
const SvgGenImage('assets/images/icons/fuchsia.svg');
SvgGenImage get kmm => const SvgGenImage('assets/images/icons/kmm.svg');
SvgGenImage get paint => const SvgGenImage('assets/images/icons/paint.svg');
}
class Assets {
Assets._();
static const $AssetsFlareGen flare = $AssetsFlareGen();
static const $AssetsImagesGen images = $AssetsImagesGen();
static const $AssetsJsonGen json = $AssetsJsonGen();
static const $AssetsMovieGen movie = $AssetsMovieGen();
static const $AssetsUnknownGen unknown = $AssetsUnknownGen();
static const $PicturesGen pictures = $PicturesGen();
}
class AssetGenImage extends AssetImage {
const AssetGenImage(String assetName)
: _assetName = assetName,
super(assetName);
final String _assetName;
Image image({
Key key,
ImageFrameBuilder frameBuilder,
ImageLoadingBuilder loadingBuilder,
ImageErrorWidgetBuilder errorBuilder,
String semanticLabel,
bool excludeFromSemantics = false,
double width,
double height,
Color color,
BlendMode colorBlendMode,
BoxFit fit,
AlignmentGeometry alignment = Alignment.center,
ImageRepeat repeat = ImageRepeat.noRepeat,
Rect centerSlice,
bool matchTextDirection = false,
bool gaplessPlayback = false,
bool isAntiAlias = false,
FilterQuality filterQuality = FilterQuality.low,
}) {
return Image(
key: key,
image: this,
frameBuilder: frameBuilder,
loadingBuilder: loadingBuilder,
errorBuilder: errorBuilder,
semanticLabel: semanticLabel,
excludeFromSemantics: excludeFromSemantics,
width: width,
height: height,
color: color,
colorBlendMode: colorBlendMode,
fit: fit,
alignment: alignment,
repeat: repeat,
centerSlice: centerSlice,
matchTextDirection: matchTextDirection,
gaplessPlayback: gaplessPlayback,
isAntiAlias: isAntiAlias,
filterQuality: filterQuality,
);
}
String get path => _assetName;
}
class SvgGenImage {
const SvgGenImage(this._assetName);
final String _assetName;
SvgPicture svg({
Key key,
bool matchTextDirection = false,
AssetBundle bundle,
String package,
double width,
double height,
BoxFit fit = BoxFit.contain,
AlignmentGeometry alignment = Alignment.center,
bool allowDrawingOutsideViewBox = false,
WidgetBuilder placeholderBuilder,
Color color,
BlendMode colorBlendMode = BlendMode.srcIn,
String semanticsLabel,
bool excludeFromSemantics = false,
Clip clipBehavior = Clip.hardEdge,
}) {
return SvgPicture.asset(
_assetName,
key: key,
matchTextDirection: matchTextDirection,
bundle: bundle,
package: package,
width: width,
height: height,
fit: fit,
alignment: alignment,
allowDrawingOutsideViewBox: allowDrawingOutsideViewBox,
placeholderBuilder: placeholderBuilder,
color: color,
colorBlendMode: colorBlendMode,
semanticsLabel: semanticsLabel,
excludeFromSemantics: excludeFromSemantics,
clipBehavior: clipBehavior,
);
}
String get path => _assetName;
}
class FlareGenImage {
const FlareGenImage(this._assetName);
final String _assetName;
FlareActor flare({
String boundsNode,
String animation,
BoxFit fit = BoxFit.contain,
Alignment alignment = Alignment.center,
bool isPaused = false,
bool snapToEnd = false,
FlareController controller,
FlareCompletedCallback callback,
Color color,
bool shouldClip = true,
bool sizeFromArtboard = false,
String artboard,
bool antialias = true,
}) {
return FlareActor(
_assetName,
boundsNode: boundsNode,
animation: animation,
fit: fit,
alignment: alignment,
isPaused: isPaused,
snapToEnd: snapToEnd,
controller: controller,
callback: callback,
color: color,
shouldClip: shouldClip,
sizeFromArtboard: sizeFromArtboard,
artboard: artboard,
antialias: antialias,
);
}
String get path => _assetName;
}
Fonts
Just follow the doc Use a custom font to specify fonts, then FlutterGen will generate related dart files. No other specific configuration is required.Ignore duplicated.
# pubspec.yaml
flutter:
fonts:
- family: Raleway
fonts:
- asset: assets/fonts/Raleway-Regular.ttf
- asset: assets/fonts/Raleway-Italic.ttf
style: italic
- family: RobotoMono
fonts:
- asset: assets/fonts/RobotoMono-Regular.ttf
- asset: assets/fonts/RobotoMono-Bold.ttf
weight: 700
These configurations will generate fonts.gen.dart under the lib/gen/ directory by default.
Usage Example
Text(
'Hi there, I\'m FlutterGen',
style: TextStyle(
fontFamily: FontFamily.robotoMono,
fontFamilyFallback: const [FontFamily.raleway],
),
Example of code generated by FlutterGen
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************
class FontFamily {
FontFamily._();
static const String raleway = 'Raleway';
static const String robotoMono = 'RobotoMono';
}
Colors
FlutterGen supports generating colors from XML format files.Ignore duplicated.
# pubspec.yaml
flutter_gen:
colors:
inputs:
- assets/color/colors.xml
- assets/color/colors2.xml
FlutterGen can generate a Color class based on the name attribute and the color hex value. If the element has the attribute type, then a specially color will be generated.
Currently supported special color types:
Noticed that there is no official material color generation algorithm. The implementation is based on the mcg project.
<color name="milk_tea">#F5CB84</color>
<color name="cinnamon" type="material">#955E1C</color>
<color name="yellow_ocher" type="material material-accent">#DF9527</color>
These configurations will generate colors.gen.dart under the lib/gen/ directory by default.
Usage Example
Text(
'Hi there, I\'m FlutterGen',
style: TextStyle(
color: ColorName.denim,
),
Example of code generated by FlutterGen
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************
import 'package:flutter/painting.dart';
import 'package:flutter/material.dart';
class ColorName {
ColorName._();
static const Color black = Color(0xFF000000);
static const Color black30 = Color(0x4D000000);
static const Color black40 = Color(0x66000000);
static const Color black50 = Color(0x80000000);
static const Color black60 = Color(0x99000000);
static const MaterialColor crimsonRed = MaterialColor(
0xFFCF2A2A,
<int, Color>{
50: Color(0xFFF9E5E5),
100: Color(0xFFF1BFBF),
200: Color(0xFFE79595),
300: Color(0xFFDD6A6A),
400: Color(0xFFD64A4A),
500: Color(0xFFCF2A2A),
600: Color(0xFFCA2525),
700: Color(0xFFC31F1F),
800: Color(0xFFBD1919),
900: Color(0xFFB20F0F),
},
);
static const Color gray410 = Color(0xFF979797);
static const Color gray70 = Color(0xFFEEEEEE);
static const Color white = Color(0xFFFFFFFF);
static const MaterialColor yellowOcher = MaterialColor(
0xFFDF9527,
<int, Color>{
50: Color(0xFFFBF2E5),
100: Color(0xFFF5DFBE),
200: Color(0xFFEFCA93),
300: Color(0xFFE9B568),
400: Color(0xFFE4A547),
500: Color(0xFFDF9527),
600: Color(0xFFDB8D23),
700: Color(0xFFD7821D),
800: Color(0xFFD27817),
900: Color(0xFFCA670E),
},
);
static const MaterialAccentColor yellowOcherAccent = MaterialAccentColor(
0xFFFFBCA3,
<int, Color>{
100: Color(0xFFFFE8E0),
200: Color(0xFFFFBCA3),
400: Color(0xFFFFA989),
700: Color(0xFFFF9E7A),
},
);
}
Default Configuration
The following are the default settings. The options you set in pubspec.yaml will override the corresponding default options.
flutter_gen:
output: lib/gen/
line_length: 80
null_safety: true
integrations:
flutter_svg: false
flare_flutter: false
assets:
enabled: true
package_parameter_enabled: false
style: dot-delimiter
fonts:
enabled: true
colors:
enabled: true
inputs: []
flutter:
assets: []
fonts: []
Credits
The material color generation implementation is based on mcg and TinyColor .
Issues
Please file FlutterGen specific issues, bugs, or feature requests in our issue tracker .
Plugin issues that are not specific to FlutterGen can be filed in the Flutter issue tracker .
Contributing
We are looking for co-developers.
If you wish to contribute a change to any of the existing plugins in this repo, please review our contribution guide and open a pull request .
Download Flutter code generator source code on GitHub
The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs. https://github.com/FlutterGen/flutter_gen 174 forks. 1,568 stars. 30 open issues. Recent commits: upgrade: update node.js to v22.21.1 (#719)This PR contains the following updates:| Package | Update | Change ||—|—|—|| [node](https://nodejs.org)([source](https://redirect.github.com/nodejs/node)) | minor | `22.20.0`-> `22.21.1` |—### Release Notes<details><summary>nodejs/node (node)</summary>###[`v22.21.1`](https://redirect.github.com/nodejs/node/releases/tag/v22.21.1):2025-10-28, Version 22.21.1 'Jod' (LTS), @aduh95[CompareSource](https://redirect.github.com/nodejs/node/compare/v22.21.0…v22.21.1)##### Commits-[[`af33e8e668`](https://redirect.github.com/nodejs/node/commit/af33e8e668)]- **benchmark**: remove unused variable from util/priority-queue (BrunoRodrigues)[#59872](https://redirect.github.com/nodejs/node/pull/59872)-[[`6764ce8756`](https://redirect.github.com/nodejs/node/commit/6764ce8756)]- **benchmark**: update count to n in permission startup (BrunoRodrigues)[#59872](https://redirect.github.com/nodejs/node/pull/59872)-[[`4e8d99f0dc`](https://redirect.github.com/nodejs/node/commit/4e8d99f0dc)]- **benchmark**: update num to n in dgram offset-length (BrunoRodrigues)[#59872](https://redirect.github.com/nodejs/node/pull/59872)-[[`af0a8ba7f8`](https://redirect.github.com/nodejs/node/commit/af0a8ba7f8)]- **benchmark**: adjust dgram offset-length len values (Bruno Rodrigues)[#59708](https://redirect.github.com/nodejs/node/pull/59708)-[[`78efd1be4a`](https://redirect.github.com/nodejs/node/commit/78efd1be4a)]- **benchmark**: update num to n in dgram offset-length (BrunoRodrigues)[#59708](https://redirect.github.com/nodejs/node/pull/59708)-[[`df72dc96e9`](https://redirect.github.com/nodejs/node/commit/df72dc96e9)]- **console,util**: improve array inspection performance (RubenBridgewater)[#60037](https://redirect.github.com/nodejs/node/pull/60037)-[[`ef67d09f50`](https://redirect.github.com/nodejs/node/commit/ef67d09f50)]- **http**: improve writeEarlyHints by avoiding for-of loop (HaramJeong)[#59958](https://redirect.github.com/nodejs/node/pull/59958)-[[`23468fd76b`](https://redirect.github.com/nodejs/node/commit/23468fd76b)]- **http2**: fix allowHttp1+Upgrade, broken by shouldUpgradeCallback(Tim Perry)[#59924](https://redirect.github.com/nodejs/node/pull/59924)-[[`56abc4ac76`](https://redirect.github.com/nodejs/node/commit/56abc4ac76)]- **lib**: optimize priority queue (Gürgün Dayıoğlu)[#60039](https://redirect.github.com/nodejs/node/pull/60039)-[[`ea5cfd98c5`](https://redirect.github.com/nodejs/node/commit/ea5cfd98c5)]- **lib**: implement passive listener behavior per spec (BCD1me)[#59995](https://redirect.github.com/nodejs/node/pull/59995)-[[`c2dd6eed2f`](https://redirect.github.com/nodejs/node/commit/c2dd6eed2f)]- **process**: fix wrong asyncContext under unhandled-rejections=strict(Shima Ryuhei)[#60103](https://redirect.github.com/nodejs/node/pull/60103)-[[`81a3055710`](https://redirect.github.com/nodejs/node/commit/81a3055710)]- **process**: fix default `env` for `process.execve` (Richard Lau)[#60029](https://redirect.github.com/nodejs/node/pull/60029)-[[`fe492c7ace`](https://redirect.github.com/nodejs/node/commit/fe492c7ace)]- **process**: fix hrtime fast call signatures (Renegade334)[#59600](https://redirect.github.com/nodejs/node/pull/59600)-[[`76b4cab8fc`](https://redirect.github.com/nodejs/node/commit/76b4cab8fc)]- **src**: bring permissions macros in line with general C/C++ standards(Anna Henningsen)[#60053](https://redirect.github.com/nodejs/node/pull/60053)-[[`21970970c7`](https://redirect.github.com/nodejs/node/commit/21970970c7)]- **src**: remove `AnalyzeTemporaryDtors` option from .clang-tidy(iknoom)[#60008](https://redirect.github.com/nodejs/node/pull/60008)-[[`609c063e81`](https://redirect.github.com/nodejs/node/commit/609c063e81)]- **src**: remove unused variables from report (Moonki Choi)[#60047](https://redirect.github.com/nodejs/node/pull/60047)-[[`987841a773`](https://redirect.github.com/nodejs/node/commit/987841a773)]- **src**: avoid unnecessary string allocations in SPrintF impl (AnnaHenningsen)[#60052](https://redirect.github.com/nodejs/node/pull/60052)-[[`6e386c0632`](https://redirect.github.com/nodejs/node/commit/6e386c0632)]- **src**: make ToLower/ToUpper input args more flexible (AnnaHenningsen)[#60052](https://redirect.github.com/nodejs/node/pull/60052)-[[`c3be1226c7`](https://redirect.github.com/nodejs/node/commit/c3be1226c7)]- **src**: allow `std::string_view` arguments to `SPrintF()` and friends(Anna Henningsen)[#60058](https://redirect.github.com/nodejs/node/pull/60058)-[[`764d35647d`](https://redirect.github.com/nodejs/node/commit/764d35647d)]- **src**: remove unnecessary `std::string` error messages (AnnaHenningsen)[#60057](https://redirect.github.com/nodejs/node/pull/60057)-[[`1289ef89ec`](https://redirect.github.com/nodejs/node/commit/1289ef89ec)]- **src**: remove unnecessary shadowed functions on Utf8Value &BufferValue (Anna Henningsen)[#60056](https://redirect.github.com/nodejs/node/pull/60056)-[[`d1fb8a538d`](https://redirect.github.com/nodejs/node/commit/d1fb8a538d)]- **src**: avoid unnecessary string -> `char*` -> string round trips(Anna Henningsen)[#60055](https://redirect.github.com/nodejs/node/pull/60055)-[[`54b439fb5a`](https://redirect.github.com/nodejs/node/commit/54b439fb5a)]- **src**: fill `options_args`, `options_env` after vectors arefinalized (iknoom)[#59945](https://redirect.github.com/nodejs/node/pull/59945)-[[`c7c597e2ca`](https://redirect.github.com/nodejs/node/commit/c7c597e2ca)]- **src**: use RAII for uv_process_options_t (iknoom)[#59945](https://redirect.github.com/nodejs/node/pull/59945)-[[`b928ea9716`](https://redirect.github.com/nodejs/node/commit/b928ea9716)]- **test**: ensure that the message event is fired (Luigi Pinca)[#59952](https://redirect.github.com/nodejs/node/pull/59952)-[[`e4b95a5158`](https://redirect.github.com/nodejs/node/commit/e4b95a5158)]- **test**: replace diagnostics_channel stackframe in output snapshots(Chengzhong Wu)[#60024](https://redirect.github.com/nodejs/node/pull/60024)-[[`4206406694`](https://redirect.github.com/nodejs/node/commit/4206406694)]- **test**: mark test-web-locks skip on IBM i (SRAVANI GUNDEPALLI)[#59996](https://redirect.github.com/nodejs/node/pull/59996)-[[`26394cd5bf`](https://redirect.github.com/nodejs/node/commit/26394cd5bf)]- **test**: expand tls-check-server-identity coverage (Diango Gavidia)[#60002](https://redirect.github.com/nodejs/node/pull/60002)-[[`b58df47995`](https://redirect.github.com/nodejs/node/commit/b58df47995)]- **test**: fix typo of test-benchmark-readline.js (Deokjin Kim)[#59993](https://redirect.github.com/nodejs/node/pull/59993)-[[`af3a59dba8`](https://redirect.github.com/nodejs/node/commit/af3a59dba8)]- **test**: verify tracing channel doesn't swallow unhandledRejection(Gerhard Stöbich)[#59974](https://redirect.github.com/nodejs/node/pull/59974)-[[`cee362242b`](https://redirect.github.com/nodejs/node/commit/cee362242b)]- **timers**: fix binding fast call signatures (Renegade334)[#59600](https://redirect.github.com/nodejs/node/pull/59600)-[[`40fea57fdd`](https://redirect.github.com/nodejs/node/commit/40fea57fdd)]- **tools**: add message on auto-fixing js lint issues in gh workflow(Dario Piotrowicz)[#59128](https://redirect.github.com/nodejs/node/pull/59128)-[[`aac90d351b`](https://redirect.github.com/nodejs/node/commit/aac90d351b)]- **tools**: verify signatures when updating nghttp* (Antoine du Hamel)[#60113](https://redirect.github.com/nodejs/node/pull/60113)-[[`9fae03c7d9`](https://redirect.github.com/nodejs/node/commit/9fae03c7d9)]- **tools**: use dependabot cooldown and move tools/doc (Rafael Gonzaga)[#59978](https://redirect.github.com/nodejs/node/pull/59978)-[[`81548abdf6`](https://redirect.github.com/nodejs/node/commit/81548abdf6)]- **wasi**: fix WasiFunction fast call signature (Renegade334)[#59600](https://redirect.github.com/nodejs/node/pull/59600)###[`v22.21.0`](https://redirect.github.com/nodejs/node/releases/tag/v22.21.0):2025-10-20, Version 22.21.0 'Jod' (LTS), @aduh95[CompareSource](https://redirect.github.com/nodejs/node/compare/v22.20.0…v22.21.0)##### Notable Changes-[[`1486fedea1`](https://redirect.github.com/nodejs/node/commit/1486fedea1)]- **(SEMVER-MINOR)** **cli**: add `–use-env-proxy` (Joyee Cheung)[#59151](https://redirect.github.com/nodejs/node/pull/59151)-[[`bedaaa11fc`](https://redirect.github.com/nodejs/node/commit/bedaaa11fc)]- **(SEMVER-MINOR)** **http**: support http proxy for fetch under`NODE_USE_ENV_PROXY` (Joyee Cheung)[#57165](https://redirect.github.com/nodejs/node/pull/57165)-[[`af8b5fa29d`](https://redirect.github.com/nodejs/node/commit/af8b5fa29d)]- **(SEMVER-MINOR)** **http**: add `shouldUpgradeCallback` to letservers control HTTP upgrades (Tim Perry)[#59824](https://redirect.github.com/nodejs/node/pull/59824)-[[`42102594b1`](https://redirect.github.com/nodejs/node/commit/42102594b1)]- **(SEMVER-MINOR)** **http,https**: add built-in proxy support in`http`/`https.request` and `Agent` (Joyee Cheung)[#58980](https://redirect.github.com/nodejs/node/pull/58980)-[[`686ac49b82`](https://redirect.github.com/nodejs/node/commit/686ac49b82)]- **(SEMVER-MINOR)** **src**: add percentage support to`–max-old-space-size` (Asaf Federman)[#59082](https://redirect.github.com/nodejs/node/pull/59082)##### Commits-[[`a71dd592e3`](https://redirect.github.com/nodejs/node/commit/a71dd592e3)]- **benchmark**: calibrate config dgram multi-buffer (Bruno Rodrigues)[#59696](https://redirect.github.com/nodejs/node/pull/59696)-[[`16c4b466f4`](https://redirect.github.com/nodejs/node/commit/16c4b466f4)]- **benchmark**: calibrate config cluster/echo.js (Nam Yooseong)[#59836](https://redirect.github.com/nodejs/node/pull/59836)-[[`53cb9f3b6c`](https://redirect.github.com/nodejs/node/commit/53cb9f3b6c)]- **build**: add the missing macro definitions for OpenHarmony (hqzing)[#59804](https://redirect.github.com/nodejs/node/pull/59804)-[[`ec5290fe01`](https://redirect.github.com/nodejs/node/commit/ec5290fe01)]- **build**: do not include custom ESLint rules testing in tarball(Antoine du Hamel)[#59809](https://redirect.github.com/nodejs/node/pull/59809)-[[`1486fedea1`](https://redirect.github.com/nodejs/node/commit/1486fedea1)]- **(SEMVER-MINOR)** **cli**: add –use-env-proxy (Joyee Cheung)[#59151](https://redirect.github.com/nodejs/node/pull/59151)-[[`1f93913446`](https://redirect.github.com/nodejs/node/commit/1f93913446)]- **crypto**: use `return await` when returning Promises from asyncfunctions (Renegade334)[#59841](https://redirect.github.com/nodejs/node/pull/59841)-[[`f488b2ff73`](https://redirect.github.com/nodejs/node/commit/f488b2ff73)]- **crypto**: use async functions for non-stub Promise-returningfunctions (Renegade334)[#59841](https://redirect.github.com/nodejs/node/pull/59841)-[[`aed9fd5ac4`](https://redirect.github.com/nodejs/node/commit/aed9fd5ac4)]- **crypto**: avoid calls to `promise.catch()` (Renegade334)[#59841](https://redirect.github.com/nodejs/node/pull/59841)-[[`37c2d186f0`](https://redirect.github.com/nodejs/node/commit/37c2d186f0)]- **deps**: update amaro to 1.1.4 (pmarchini)[#60044](https://redirect.github.com/nodejs/node/pull/60044)-[[`28aea13419`](https://redirect.github.com/nodejs/node/commit/28aea13419)]- **deps**: update archs files for openssl-3.5.4 (Node.js GitHub Bot)[#60101](https://redirect.github.com/nodejs/node/pull/60101)-[[`ddbc1aa0bb`](https://redirect.github.com/nodejs/node/commit/ddbc1aa0bb)]- **deps**: upgrade openssl sources to openssl-3.5.4 (Node.js GitHubBot) [#60101](https://redirect.github.com/nodejs/node/pull/60101)-[[`badbba2da9`](https://redirect.github.com/nodejs/node/commit/badbba2da9)]- **deps**: update googletest to[`50b8600`](https://redirect.github.com/nodejs/node/commit/50b8600)(Node.js GitHub Bot)[#59955](https://redirect.github.com/nodejs/node/pull/59955)-[[`48aaf98a08`](https://redirect.github.com/nodejs/node/commit/48aaf98a08)]- **deps**: update archs files for openssl-3.5.3 (Node.js GitHub Bot)[#59901](https://redirect.github.com/nodejs/node/pull/59901)-[[`e02a562ea6`](https://redirect.github.com/nodejs/node/commit/e02a562ea6)]- **deps**: upgrade openssl sources to openssl-3.5.3 (Node.js GitHubBot) [#59901](https://redirect.github.com/nodejs/node/pull/59901)-[[`7e0e86cb92`](https://redirect.github.com/nodejs/node/commit/7e0e86cb92)]- **deps**: upgrade npm to 10.9.4 (npm team)[#60074](https://redirect.github.com/nodejs/node/pull/60074)-[[`91dda5facf`](https://redirect.github.com/nodejs/node/commit/91dda5facf)]- **deps**: update undici to 6.22.0 (Matteo Collina)[#60112](https://redirect.github.com/nodejs/node/pull/60112)-[[`3a3220a2f0`](https://redirect.github.com/nodejs/node/commit/3a3220a2f0)]- **dgram**: restore buffer optimization in fixBufferList (Yoo)[#59934](https://redirect.github.com/nodejs/node/pull/59934)-[[`09bdcce6b8`](https://redirect.github.com/nodejs/node/commit/09bdcce6b8)]- **diagnostics_channel**: fix race condition with diagnostics_channeland GC (Ugaitz Urien)[#59910](https://redirect.github.com/nodejs/node/pull/59910)-[[`b3eeb3bd13`](https://redirect.github.com/nodejs/node/commit/b3eeb3bd13)]- **doc**: provide alternative to `url.parse()` using WHATWG URL(Steven)[#59736](https://redirect.github.com/nodejs/node/pull/59736)-[[`1ddaab1904`](https://redirect.github.com/nodejs/node/commit/1ddaab1904)]- **doc**: mention reverse proxy and include simple example (Steven)[#59736](https://redirect.github.com/nodejs/node/pull/59736)-[[`3b3b71e99c`](https://redirect.github.com/nodejs/node/commit/3b3b71e99c)]- **doc**: mark `.env` files support as stable (Santeri Hiltunen)[#59925](https://redirect.github.com/nodejs/node/pull/59925)-[[`d37f67d1bd`](https://redirect.github.com/nodejs/node/commit/d37f67d1bd)]- **doc**: remove optional title prefixes (Aviv Keller)[#60087](https://redirect.github.com/nodejs/node/pull/60087)-[[`ca2dff63f9`](https://redirect.github.com/nodejs/node/commit/ca2dff63f9)]- **doc**: fix typo on child_process.md (Angelo Gazzola)[#60114](https://redirect.github.com/nodejs/node/pull/60114)-[[`3fca564a05`](https://redirect.github.com/nodejs/node/commit/3fca564a05)]- **doc**: add automated migration info to deprecations (AugustinMauroy)[#60022](https://redirect.github.com/nodejs/node/pull/60022)-[[`4bc366fc16`](https://redirect.github.com/nodejs/node/commit/4bc366fc16)]- **doc**: use "WebAssembly" instead of "Web Assembly" (Tobias Nießen)[#59954](https://redirect.github.com/nodejs/node/pull/59954)-[[`4808dbdd9a`](https://redirect.github.com/nodejs/node/commit/4808dbdd9a)]- **doc**: fix typo in section on microtask order (Tobias Nießen)[#59932](https://redirect.github.com/nodejs/node/pull/59932)-[[`d6e303d645`](https://redirect.github.com/nodejs/node/commit/d6e303d645)]- **doc**: update V8 fast API guidance (René)[#58999](https://redirect.github.com/nodejs/node/pull/58999)-[[`0a3a3f729e`](https://redirect.github.com/nodejs/node/commit/0a3a3f729e)]- **doc**: add security escalation policy (Ulises Gascón)[#59806](https://redirect.github.com/nodejs/node/pull/59806)-[[`8fd669c70d`](https://redirect.github.com/nodejs/node/commit/8fd669c70d)]- **doc**: type improvement of file `http.md` (yusheng chen)[#58189](https://redirect.github.com/nodejs/node/pull/58189)-[[`9833dc6060`](https://redirect.github.com/nodejs/node/commit/9833dc6060)]- **doc**: rephrase dynamic import() description (Nam Yooseong)[#59224](https://redirect.github.com/nodejs/node/pull/59224)-[[`2870a73681`](https://redirect.github.com/nodejs/node/commit/2870a73681)]- **doc,crypto**: update subtle.generateKey and subtle.importKey (FilipSkokan)[#59851](https://redirect.github.com/nodejs/node/pull/59851)-[[`85818db93c`](https://redirect.github.com/nodejs/node/commit/85818db93c)]- **fs,win**: do not add a second trailing slash in readdir (GerhardStöbich)[#59847](https://redirect.github.com/nodejs/node/pull/59847)-[[`bedaaa11fc`](https://redirect.github.com/nodejs/node/commit/bedaaa11fc)]- **(SEMVER-MINOR)** **http**: support http proxy for fetch underNODE_USE_ENV_PROXY (Joyee Cheung)[#57165](https://redirect.github.com/nodejs/node/pull/57165)-[[`af8b5fa29d`](https://redirect.github.com/nodejs/node/commit/af8b5fa29d)]- **(SEMVER-MINOR)** **http**: add shouldUpgradeCallback to let serverscontrol HTTP upgrades (Tim Perry)[#59824](https://redirect.github.com/nodejs/node/pull/59824)-[[`758271ae66`](https://redirect.github.com/nodejs/node/commit/758271ae66)]- **http**: optimize checkIsHttpToken for short strings (방진혁)[#59832](https://redirect.github.com/nodejs/node/pull/59832)-[[`42102594b1`](https://redirect.github.com/nodejs/node/commit/42102594b1)]- **(SEMVER-MINOR)** **http,https**: add built-in proxy support inhttp/https.request and Agent (Joyee Cheung)[#58980](https://redirect.github.com/nodejs/node/pull/58980)-[[`a33ed9bf96`](https://redirect.github.com/nodejs/node/commit/a33ed9bf96)]- **inspector**: ensure adequate memory allocation for`Binary::toBase64` (René)[#59870](https://redirect.github.com/nodejs/node/pull/59870)-[[`34c686be2b`](https://redirect.github.com/nodejs/node/commit/34c686be2b)]- **lib**: update inspect output format for subclasses (Miguel MarcondesFilho)[#59687](https://redirect.github.com/nodejs/node/pull/59687)-[[`12e553529c`](https://redirect.github.com/nodejs/node/commit/12e553529c)]- **lib**: add source map support for assert messages (Chengzhong Wu)[#59751](https://redirect.github.com/nodejs/node/pull/59751)-[[`d2a70571f8`](https://redirect.github.com/nodejs/node/commit/d2a70571f8)]- **lib,src**: refactor assert to load error source from memory(Chengzhong Wu)[#59751](https://redirect.github.com/nodejs/node/pull/59751)-[[`20a9e86b5d`](https://redirect.github.com/nodejs/node/commit/20a9e86b5d)]- **meta**: move Michael to emeritus (Michael Dawson)[#60070](https://redirect.github.com/nodejs/node/pull/60070)-[[`c591cca15c`](https://redirect.github.com/nodejs/node/commit/c591cca15c)]- **meta**: bump github/codeql-action from 3.30.0 to 3.30.5(dependabot[bot])[#60089](https://redirect.github.com/nodejs/node/pull/60089)-[[`090ba141b1`](https://redirect.github.com/nodejs/node/commit/090ba141b1)]- **meta**: bump codecov/codecov-action from 5.5.0 to 5.5.1(dependabot[bot])[#60091](https://redirect.github.com/nodejs/node/pull/60091)-[[`a0ba6884a5`](https://redirect.github.com/nodejs/node/commit/a0ba6884a5)]- **meta**: bump actions/stale from 9.1.0 to 10.0.0 (dependabot[bot])[#60092](https://redirect.github.com/nodejs/node/pull/60092)-[[`0feca0c541`](https://redirect.github.com/nodejs/node/commit/0feca0c541)]- **meta**: bump actions/setup-node from 4.4.0 to 5.0.0(dependabot[bot])[#60093](https://redirect.github.com/nodejs/node/pull/60093)-[[`7cd2b42d18`](https://redirect.github.com/nodejs/node/commit/7cd2b42d18)]- **meta**: bump step-security/harden-runner from 2.12.2 to 2.13.1(dependabot[bot])[#60094](https://redirect.github.com/nodejs/node/pull/60094)-[[`1f3b9d66ac`](https://redirect.github.com/nodejs/node/commit/1f3b9d66ac)]- **meta**: bump actions/cache from 4.2.4 to 4.3.0 (dependabot[bot])[#60095](https://redirect.github.com/nodejs/node/pull/60095)-[[`0fedbb3de7`](https://redirect.github.com/nodejs/node/commit/0fedbb3de7)]- **meta**: bump ossf/scorecard-action from 2.4.2 to 2.4.3(dependabot[bot])[#60096](https://redirect.github.com/nodejs/node/pull/60096)-[[`04590b8267`](https://redirect.github.com/nodejs/node/commit/04590b8267)]- **meta**: bump actions/setup-python from 5.6.0 to 6.0.0(dependabot[bot])[#60090](https://redirect.github.com/nodejs/node/pull/60090)-[[`2bf0a9318f`](https://redirect.github.com/nodejs/node/commit/2bf0a9318f)]- **meta**: add .npmrc with ignore-scripts=true (Joyee Cheung)[#59914](https://redirect.github.com/nodejs/node/pull/59914)-[[`e10dc7b81c`](https://redirect.github.com/nodejs/node/commit/e10dc7b81c)]- **module**: allow overriding linked requests for a ModuleWrap(Chengzhong Wu)[#59527](https://redirect.github.com/nodejs/node/pull/59527)-[[`2237142369`](https://redirect.github.com/nodejs/node/commit/2237142369)]- **module**: link module with a module request record (Chengzhong Wu)[#58886](https://redirect.github.com/nodejs/node/pull/58886)-[[`6d24b88fbc`](https://redirect.github.com/nodejs/node/commit/6d24b88fbc)]- **node-api**: added SharedArrayBuffer api (Mert Can Altin)[#59071](https://redirect.github.com/nodejs/node/pull/59071)-[[`4cc84c96f4`](https://redirect.github.com/nodejs/node/commit/4cc84c96f4)]- **node-api**: make napi_delete_reference use node_api_basic_env(Jeetu Suthar)[#59684](https://redirect.github.com/nodejs/node/pull/59684)-[[`e790eb6b50`](https://redirect.github.com/nodejs/node/commit/e790eb6b50)]- **repl**: fix cpu overhead pasting big strings to the REPL (RubenBridgewater)[#59857](https://redirect.github.com/nodejs/node/pull/59857)-[[`99ea08dc43`](https://redirect.github.com/nodejs/node/commit/99ea08dc43)]- **repl**: add isValidParentheses check before wrap input (Xuguang Mei)[#59607](https://redirect.github.com/nodejs/node/pull/59607)-[[`e4a4f63019`](https://redirect.github.com/nodejs/node/commit/e4a4f63019)]- **sqlite**: fix crash session extension callbacks with workers (BartLouwers)[#59848](https://redirect.github.com/nodejs/node/pull/59848)-[[`42c5544b97`](https://redirect.github.com/nodejs/node/commit/42c5544b97)]- **src**: assert memory calc for max-old-space-size-percentage (AsafFederman)[#59460](https://redirect.github.com/nodejs/node/pull/59460)-[[`686ac49b82`](https://redirect.github.com/nodejs/node/commit/686ac49b82)]- **(SEMVER-MINOR)** **src**: add percentage support to–max-old-space-size (Asaf Federman)[#59082](https://redirect.github.com/nodejs/node/pull/59082)-[[`84701ff668`](https://redirect.github.com/nodejs/node/commit/84701ff668)]- **src**: clear all linked module caches once instantiated (ChengzhongWu) [#59117](https://redirect.github.com/nodejs/node/pull/59117)-[[`8e182e561f`](https://redirect.github.com/nodejs/node/commit/8e182e561f)]- **src**: remove unnecessary `Environment::GetCurrent()` calls (MoonkiChoi)[#59814](https://redirect.github.com/nodejs/node/pull/59814)-[[`c9cde35c4d`](https://redirect.github.com/nodejs/node/commit/c9cde35c4d)]- **src**: simplify is_callable by making it a concept (Tobias Nießen)[#58169](https://redirect.github.com/nodejs/node/pull/58169)-[[`892b425ee1`](https://redirect.github.com/nodejs/node/commit/892b425ee1)]- **src**: rename private fields to follow naming convention (MoonkiChoi)[#59923](https://redirect.github.com/nodejs/node/pull/59923)-[[`36b68db7f5`](https://redirect.github.com/nodejs/node/commit/36b68db7f5)]- **src**: reduce the nearest parent package JSON cache size (MichaelSmith)[#59888](https://redirect.github.com/nodejs/node/pull/59888)-[[`26b40bad02`](https://redirect.github.com/nodejs/node/commit/26b40bad02)]- **src**: replace FIXED_ONE_BYTE_STRING with Environment-cachedstrings (Moonki Choi)[#59891](https://redirect.github.com/nodejs/node/pull/59891)-[[`34dcb7dc32`](https://redirect.github.com/nodejs/node/commit/34dcb7dc32)]- **src**: create strings in `FIXED_ONE_BYTE_STRING` as internalized(Anna Henningsen)[#59826](https://redirect.github.com/nodejs/node/pull/59826)-[[`4d748add05`](https://redirect.github.com/nodejs/node/commit/4d748add05)]- **src**: remove `std::array` overload of `FIXED_ONE_BYTE_STRING` (AnnaHenningsen)[#59826](https://redirect.github.com/nodejs/node/pull/59826)-[[`bb6fd7c2d1`](https://redirect.github.com/nodejs/node/commit/bb6fd7c2d1)]- **src**: ensure `v8::Eternal` is empty before setting it (AnnaHenningsen)[#59825](https://redirect.github.com/nodejs/node/pull/59825)-[[`7a91282bf9`](https://redirect.github.com/nodejs/node/commit/7a91282bf9)]- **src**: use simdjson::pad (0hm☘️)[#59391](https://redirect.github.com/nodejs/node/pull/59391)-[[`ba00875f01`](https://redirect.github.com/nodejs/node/commit/ba00875f01)]- **stream**: use new AsyncResource instead of bind (Matteo Collina)[#59867](https://redirect.github.com/nodejs/node/pull/59867)-[[`ebec3ef68b`](https://redirect.github.com/nodejs/node/commit/ebec3ef68b)]- **(SEMVER-MINOR)** **test**: move http proxy tests totest/client-proxy (Joyee Cheung)[#58980](https://redirect.github.com/nodejs/node/pull/58980)-[[`7067d79fb3`](https://redirect.github.com/nodejs/node/commit/7067d79fb3)]- **test**: mark sea tests flaky on macOS x64 (Richard Lau)[#60068](https://redirect.github.com/nodejs/node/pull/60068)-[[`ca1942c9d5`](https://redirect.github.com/nodejs/node/commit/ca1942c9d5)]- **test**: testcase demonstrating issue 59541 (Eric Rannaud)[#59801](https://redirect.github.com/nodejs/node/pull/59801)-[[`660d57355e`](https://redirect.github.com/nodejs/node/commit/660d57355e)]- **test,doc**: skip –max-old-space-size-percentage on 32-bit platforms(Asaf Federman)[#60144](https://redirect.github.com/nodejs/node/pull/60144)-[[`19a7b1ef26`](https://redirect.github.com/nodejs/node/commit/19a7b1ef26)]- **tls**: load bundled and extra certificates off-thread (Joyee Cheung)[#59856](https://redirect.github.com/nodejs/node/pull/59856)-[[`095e7a81fc`](https://redirect.github.com/nodejs/node/commit/095e7a81fc)]- **tls**: only do off-thread certificate loading on loading tls (JoyeeCheung)[#59856](https://redirect.github.com/nodejs/node/pull/59856)-[[`c42c1204c7`](https://redirect.github.com/nodejs/node/commit/c42c1204c7)]- **tools**: fix `tools/make-v8.sh` for clang (Richard Lau)[#59893](https://redirect.github.com/nodejs/node/pull/59893)-[[`b632a1d98d`](https://redirect.github.com/nodejs/node/commit/b632a1d98d)]- **tools**: skip test-internet workflow for draft PRs (Michaël Zasso)[#59817](https://redirect.github.com/nodejs/node/pull/59817)-[[`6021c3ac76`](https://redirect.github.com/nodejs/node/commit/6021c3ac76)]- **tools**: copyedit `build-tarball.yml` (Antoine du Hamel)[#59808](https://redirect.github.com/nodejs/node/pull/59808)-[[`ef005d0c9b`](https://redirect.github.com/nodejs/node/commit/ef005d0c9b)]- **typings**: update 'types' binding (René)[#59692](https://redirect.github.com/nodejs/node/pull/59692)-[[`28ef564ecd`](https://redirect.github.com/nodejs/node/commit/28ef564ecd)]- **typings**: remove unused imports (Nam Yooseong)[#59880](https://redirect.github.com/nodejs/node/pull/59880)-[[`f88752ddb6`](https://redirect.github.com/nodejs/node/commit/f88752ddb6)]- **url**: replaced slice with at (Mikhail)[#59181](https://redirect.github.com/nodejs/node/pull/59181)-[[`24c224960c`](https://redirect.github.com/nodejs/node/commit/24c224960c)]- **url**: add type checking to urlToHttpOptions() (simon-id)[#59753](https://redirect.github.com/nodejs/node/pull/59753)-[[`f2fbcc576d`](https://redirect.github.com/nodejs/node/commit/f2fbcc576d)]- **util**: fix debuglog.enabled not being present with callback logger(Ruben Bridgewater)[#59858](https://redirect.github.com/nodejs/node/pull/59858)-[[`6277058e43`](https://redirect.github.com/nodejs/node/commit/6277058e43)]- **vm**: sync-ify SourceTextModule linkage (Chengzhong Wu)[#59000](https://redirect.github.com/nodejs/node/pull/59000)-[[`5bf21a4309`](https://redirect.github.com/nodejs/node/commit/5bf21a4309)]- **vm**: explain how to share promises between contexts w/afterEvaluate (Eric Rannaud)[#59801](https://redirect.github.com/nodejs/node/pull/59801)-[[`312b33a083`](https://redirect.github.com/nodejs/node/commit/312b33a083)]- **vm**: "afterEvaluate", evaluate() return a promise from the outercontext (Eric Rannaud)[#59801](https://redirect.github.com/nodejs/node/pull/59801)-[[`1eadab863c`](https://redirect.github.com/nodejs/node/commit/1eadab863c)]- **win,tools**: add description to signature (Martin Costello)[#59877](https://redirect.github.com/nodejs/node/pull/59877)-[[`816e1befb1`](https://redirect.github.com/nodejs/node/commit/816e1befb1)]- **zlib**: reduce code duplication (jhofstee)[#57810](https://redirect.github.com/nodejs/node/pull/57810)</details>—### Configuration📅 **Schedule**: Branch creation – Only on Wednesday ( * * * * 3 ) intimezone Asia/Tokyo, Automerge – At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once youare satisfied.♻ **Rebasing**: Whenever PR is behind base branch, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.—- [ ] <!– rebase-check –>If you want to rebase/retry this PR, checkthis box—This PR was generated by [Mend Renovate](https://mend.io/renovate/).View the [repository joblog](https://developer.mend.io/github/FlutterGen/flutter_gen).<!–renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119–>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> , GitHub upgrade: update pnpm to v10.22.0 (#720)This PR contains the following updates:| Package | Change | Age | Confidence ||—|—|—|—|| [pnpm](https://pnpm.io)([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) |[`10.18.1` ->`10.22.0`](https://renovatebot.com/diffs/npm/pnpm/10.18.1/10.22.0) |[](https://docs.renovatebot.com/merge-confidence/)|[](https://docs.renovatebot.com/merge-confidence/)|—### Release Notes<details><summary>pnpm/pnpm (pnpm)</summary>###[`v10.22.0`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.22.0):pnpm 10.22[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.21.0…v10.22.0)#### Minor Changes- Added support for `trustPolicyExclude`[#10164](https://redirect.github.com/pnpm/pnpm/issues/10164).You can now list one or more specific packages or versions that pnpmshould allow to install, even if those packages don't satisfy the trustpolicy requirement. For example: “`yaml trustPolicy: no-downgrade trustPolicyExclude: – chokidar@4.0.3 – webpack@4.47.0 || 5.102.1 “`- Allow to override the `engines` field on publish by the`publishConfig.engines` field.#### Patch Changes- Don't crash when two processes of pnpm are hardlinking the contents ofa directory to the same destination simultaneously[#10179](https://redirect.github.com/pnpm/pnpm/issues/10179).#### Platinum Sponsors<table> <tbody> <tr> <td align="center" valign="middle"><a href="https://bit.dev/?utm_source=pnpm&utm_medium=release_notes"target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80"alt="Bit"></a> </td> </tr> </tbody></table>#### Gold Sponsors<table> <tbody> <tr> <td align="center" valign="middle"><a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes"target="_blank"> <picture><source media="(prefers-color-scheme: light)"srcset="https://pnpm.io/img/users/discord.svg" /><source media="(prefers-color-scheme: dark)"srcset="https://pnpm.io/img/users/discord_light.svg" /><img src="https://pnpm.io/img/users/discord.svg" width="220"alt="Discord" /> </picture> </a> </td> <td align="center" valign="middle"><ahref="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes"target="_blank"> <picture><source media="(prefers-color-scheme: light)"srcset="https://pnpm.io/img/users/coderabbit.svg" /><source media="(prefers-color-scheme: dark)"srcset="https://pnpm.io/img/users/coderabbit_light.svg" /><img src="https://pnpm.io/img/users/coderabbit.svg" width="220"alt="CodeRabbit" /> </picture> </a> </td> <td align="center" valign="middle"><a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes"target="_blank"> <picture><source media="(prefers-color-scheme: light)"srcset="https://pnpm.io/img/users/workleap.svg" /><source media="(prefers-color-scheme: dark)"srcset="https://pnpm.io/img/users/workleap_light.svg" /><img src="https://pnpm.io/img/users/workleap.svg" width="190"alt="Workleap" /> </picture> </a> </td> </tr> <tr> <td align="center" valign="middle"><ahref="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes"target="_blank"> <picture><source media="(prefers-color-scheme: light)"srcset="https://pnpm.io/img/users/stackblitz.svg" /><source media="(prefers-color-scheme: dark)"srcset="https://pnpm.io/img/users/stackblitz_light.svg" /><img src="https://pnpm.io/img/users/stackblitz.svg" width="190"alt="Stackblitz" /> </picture> </a> </td> <td align="center" valign="middle"><a href="https://vite.dev/?utm_source=pnpm&utm_medium=release_notes"target="_blank"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"> </a> </td> </tr> </tbody></table>###[`v10.21.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.20.0…v10.21.0)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.20.0…v10.21.0)###[`v10.20.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10200)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.19.0…v10.20.0)##### Minor Changes- Support `–all` option in `pnpm –help` to list all commands[#8628](https://redirect.github.com/pnpm/pnpm/pull/8628).##### Patch Changes- When the `latest` version doesn't satisfy the maturity requirementconfigured by `minimumReleaseAge`, pick the highest version that ismature enough, even if it has a different major version[#10100](https://redirect.github.com/pnpm/pnpm/issues/10100).- `create` command should not verify patch info.- Set `managePackageManagerVersions` to `false`, when switching to adifferent version of pnpm CLI, in order to avoid subsequent switches[#10063](https://redirect.github.com/pnpm/pnpm/issues/10063).###[`v10.19.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10190)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.18.3…v10.19.0)##### Minor Changes- You can now allow specific versions of dependencies to run postinstallscripts. `onlyBuiltDependencies` now accepts package names with lists oftrusted versions. For example: “`yaml onlyBuiltDependencies: – nx@21.6.4 || 21.6.5 – esbuild@0.25.1 “`Related PR:[#10104](https://redirect.github.com/pnpm/pnpm/pull/10104).- Added support for exact versions in `minimumReleaseAgeExclude`[#9985](https://redirect.github.com/pnpm/pnpm/issues/9985).You can now list one or more specific versions that pnpm should allow toinstall, even if those versions don’t satisfy the maturity requirementset by `minimumReleaseAge`. For example: “`yaml minimumReleaseAge: 1440 minimumReleaseAgeExclude: – nx@21.6.5 – webpack@4.47.0 || 5.102.1 “`###[`v10.18.3`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10183)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.18.2…v10.18.3)##### Patch Changes- Fix a bug where pnpm would infinitely recurse when using`verifyDepsBeforeInstall: install` and pre/post install scripts thatcalled other pnpm scripts[#10060](https://redirect.github.com/pnpm/pnpm/issues/10060).- Fixed scoped registry keys (e.g., `@scope:registry`) being parsed asproperty paths in `pnpm config get` when `–location=project` is used[#9362](https://redirect.github.com/pnpm/pnpm/issues/9362).- Remove pnpm-specific CLI options before passing to npm publish toprevent "Unknown cli config" warnings[#9646](https://redirect.github.com/pnpm/pnpm/issues/9646).- Fixed EISDIR error when bin field points to a directory[#9441](https://redirect.github.com/pnpm/pnpm/issues/9441).- Preserve version and hasBin for variations packages[#10022](https://redirect.github.com/pnpm/pnpm/issues/10022).- Fixed `pnpm config set –location=project` incorrectly handling keyswith slashes (auth tokens, registry settings)[#9884](https://redirect.github.com/pnpm/pnpm/issues/9884).- When both `pnpm-workspace.yaml` and `.npmrc` exist, `pnpm config set–location=project` now writes to `pnpm-workspace.yaml` (matching readpriority)[#10072](https://redirect.github.com/pnpm/pnpm/issues/10072).- Prevent a table width error in `pnpm outdated –long`[#10040](https://redirect.github.com/pnpm/pnpm/issues/10040).- Sync bin links after injected dependencies are updated by buildscripts. This ensures that binaries created during build processes areproperly linked and accessible to consuming projects[#10057](https://redirect.github.com/pnpm/pnpm/issues/10057).###[`v10.18.2`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10182)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.18.1…v10.18.2)##### Patch Changes- `pnpm outdated –long` should work[#10040](https://redirect.github.com/pnpm/pnpm/issues/10040).- Replace ndjson with split2. Reduce the bundle size of pnpm CLI[#10054](https://redirect.github.com/pnpm/pnpm/pull/10054).- `pnpm dlx` should request the full metadata of packages, when`minimumReleaseAge` is set[#9963](https://redirect.github.com/pnpm/pnpm/issues/9963).- pnpm version switching should work when the pnpm home directory is ina symlinked directory[#9715](https://redirect.github.com/pnpm/pnpm/issues/9715).- Fix `EPIPE` errors when piping output to other commands[#10027](https://redirect.github.com/pnpm/pnpm/issues/10027).</details>—### Configuration📅 **Schedule**: Branch creation – Only on Wednesday ( * * * * 3 ) intimezone Asia/Tokyo, Automerge – At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once youare satisfied.♻ **Rebasing**: Whenever PR is behind base branch, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.—- [ ] <!– rebase-check –>If you want to rebase/retry this PR, checkthis box—This PR was generated by [Mend Renovate](https://mend.io/renovate/).View the [repository joblog](https://developer.mend.io/github/FlutterGen/flutter_gen).<!–renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQyLjE5LjkiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=–>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> , GitHub upgrade: update pnpm to v10.18.1 (#718)This PR contains the following updates:| Package | Change | Age | Confidence ||—|—|—|—|| [pnpm](https://pnpm.io)([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) |[`10.17.1` ->`10.18.1`](https://renovatebot.com/diffs/npm/pnpm/10.17.1/10.18.1) |[](https://docs.renovatebot.com/merge-confidence/)|[](https://docs.renovatebot.com/merge-confidence/)|—### Release Notes<details><summary>pnpm/pnpm (pnpm)</summary>###[`v10.18.1`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10181)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.18.0…v10.18.1)##### Patch Changes- Don't print a warning, when `–lockfile-only` is used[#8320](https://redirect.github.com/pnpm/pnpm/issues/8320).- `pnpm setup` creates a command shim to the pnpm executable. This isneeded to be able to run `pnpm self-update` on Windows[#5700](https://redirect.github.com/pnpm/pnpm/issues/5700).- When using pnpm catalogs and running a normal `pnpm install`, pnpmproduced false positive warnings for "*skip adding to the defaultcatalog because it already exists*". This warning now only prints whenusing `pnpm add –save-catalog` as originally intended.###[`v10.18.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10180)[CompareSource](https://redirect.github.com/pnpm/pnpm/compare/v10.17.1…v10.18.0)##### Minor Changes- Added network performance monitoring to pnpm by implementing warningsfor slow network requests, including both metadata fetches and tarballdownloads.Added configuration options for warning thresholds: `fetchWarnTimeoutMs`and `fetchMinSpeedKiBps`.Warning messages are displayed when requests exceed time thresholds orfall below speed minimumsRelated PR:[#10025](https://redirect.github.com/pnpm/pnpm/pull/10025).##### Patch Changes- Retry filesystem operations on EAGAIN errors[#9959](https://redirect.github.com/pnpm/pnpm/pull/9959).- Outdated command respects `minimumReleaseAge` configuration[#10030](https://redirect.github.com/pnpm/pnpm/pull/10030).- Correctly apply the `cleanupUnusedCatalogs` configuration whenremoving dependent packages.- Don't fail with a meaningless error when `scriptShell` is set to`false`[#8748](https://redirect.github.com/pnpm/pnpm/issues/8748).- `pnpm dlx` should not fail when `minimumReleaseAge` is set[#10037](https://redirect.github.com/pnpm/pnpm/issues/10037).</details>—### Configuration📅 **Schedule**: Branch creation – Only on Wednesday ( * * * * 3 ) intimezone Asia/Tokyo, Automerge – At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once youare satisfied.♻ **Rebasing**: Whenever PR is behind base branch, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.—- [ ] <!– rebase-check –>If you want to rebase/retry this PR, checkthis box—This PR was generated by [Mend Renovate](https://mend.io/renovate/).View the [repository joblog](https://developer.mend.io/github/FlutterGen/flutter_gen).<!–renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTYuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE1Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119–>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> , GitHub upgrade: update node.js to v22.20.0 (#717)This PR contains the following updates:| Package | Update | Change ||—|—|—|| [node](https://nodejs.org)([source](https://redirect.github.com/nodejs/node)) | minor | `22.19.0`-> `22.20.0` |—### Release Notes<details><summary>nodejs/node (node)</summary>###[`v22.20.0`](https://redirect.github.com/nodejs/node/compare/v22.19.0…v22.20.0)[CompareSource](https://redirect.github.com/nodejs/node/compare/v22.19.0…v22.20.0)</details>—### Configuration📅 **Schedule**: Branch creation – Only on Wednesday ( * * * * 3 ) intimezone Asia/Tokyo, Automerge – At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once youare satisfied.♻ **Rebasing**: Whenever PR is behind base branch, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.—- [ ] <!– rebase-check –>If you want to rebase/retry this PR, checkthis box—This PR was generated by [Mend Renovate](https://mend.io/renovate/).View the [repository joblog](https://developer.mend.io/github/FlutterGen/flutter_gen).<!–renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzEuOSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119–>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> , GitHub upgrade: update dependency lint-staged to v16.2.0 (#715)This PR contains the following updates:| Package | Change | Age | Confidence ||—|—|—|—|| [lint-staged](https://redirect.github.com/lint-staged/lint-staged) |[`16.1.2` ->`16.2.0`](https://renovatebot.com/diffs/npm/lint-staged/16.1.2/16.2.0) |[](https://docs.renovatebot.com/merge-confidence/)|[](https://docs.renovatebot.com/merge-confidence/)|—### Release Notes<details><summary>lint-staged/lint-staged (lint-staged)</summary>###[`v16.2.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1620)[CompareSource](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.6…v16.2.0)##### Minor Changes-[#1615](https://redirect.github.com/lint-staged/lint-staged/pull/1615)[`99eb742`](https://redirect.github.com/lint-staged/lint-staged/commit/99eb74200e8db69e72dba45314025953b8b0794e)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Added a newoption `–fail-on-changes` to make *lint-staged* exit with code 1 whentasks modify any files, making the `precommit` hook fail. This issimilar to the `git diff –exit-code` option. Using this flag alsoimplies the `–no-revert` flag which means any changes made my taskswill be left in the working tree after failing, so that they can bemanually staged and the commit tried again.-[#1611](https://redirect.github.com/lint-staged/lint-staged/pull/1611)[`cd05fd3`](https://redirect.github.com/lint-staged/lint-staged/commit/cd05fd349594baf586fbafb05588ff07d86060b7)Thanks [@rlorenzo](https://redirect.github.com/rlorenzo)! – Addeda new option `–continue-on-error` so that *lint-staged* will run alltasks to completion even if some of them fail. By default, *lint-staded*will exit early on the first failure.-[#1637](https://redirect.github.com/lint-staged/lint-staged/pull/1637)[`82fcc07`](https://redirect.github.com/lint-staged/lint-staged/commit/82fcc0789c17bf6b2ea2649147abec77fa619375)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Internal*lint-staged* errors are now thrown and visible in the console output.Previously they were caught with the process exit code set to 1, but notlogged. This happens when, for example, there's a syntax error in the*lint-staged* configuration file.-[#1647](https://redirect.github.com/lint-staged/lint-staged/pull/1647)[`a5ecc06`](https://redirect.github.com/lint-staged/lint-staged/commit/a5ecc0605d52756167417c84cb0007ea7bceaaa3)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Remove[debug](https://redirect.github.com/debug-js/debug) as a dependency dueto recent malware issue; read more at[debug-js/debug#1005](https://redirect.github.com/debug-js/debug/issues/1005).Because of this, the `DEBUG` environment variable is no longer supported— use the `–debug` to enable debugging-[#1636](https://redirect.github.com/lint-staged/lint-staged/pull/1636)[`8db2717`](https://redirect.github.com/lint-staged/lint-staged/commit/8db2717574ebfa2b80e0fc4eb0b24d705fd264fc)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Added a newoption `–hide-unstaged` so that *lint-staged* will hide all unstagedchanges to tracked files before running tasks. The changes will beapplied back after running the tasks. Note that the combination of flags`–hide-unstaged –no-hide-partially-staged` isn't meaningful andbehaves the same as just `–hide-unstaged`.Thanks to[@ItsNickBarry](https://redirect.github.com/ItsNickBarry) for theidea and initial implementation in[#1552](https://redirect.github.com/lint-staged/lint-staged/pull/1552).-[#1648](https://redirect.github.com/lint-staged/lint-staged/pull/1648)[`7900b3b`](https://redirect.github.com/lint-staged/lint-staged/commit/7900b3b79c5e2e69662cb8b1bcbcae79c3549421)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Remove[lilconfig](https://redirect.github.com/antonk52/lilconfig) to reducereliance on third-party dependencies. It was used to find possibleconfig files outside of those tracked in Git, including from the parentdirectories. This behavior has been moved directly into *lint-staged*and should work about the same.##### Patch Changes-[#1633](https://redirect.github.com/lint-staged/lint-staged/pull/1633)[`7f9e485`](https://redirect.github.com/lint-staged/lint-staged/commit/7f9e485a981707897e0d417f6a62008f0c098e00)Thanks[@dependabot](https://redirect.github.com/apps/dependabot)! -Bumps [listr2](https://redirect.github.com/listr2/listr2) from 9.0.3 to9.0.4.-[#1626](https://redirect.github.com/lint-staged/lint-staged/pull/1626)[`99d5a9b`](https://redirect.github.com/lint-staged/lint-staged/commit/99d5a9b0ddcba7d471d39ff3969d37988f1e2705)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Due torecent phishing attacks, for example[chalk@5.6.1](https://redirect.github.com/chalk/chalk/issues/656) wasreleased with malware. To avoid *lint-staged*'s users being at risk the**direct dependencies are pinned to exact versions**, instead ofallowing future patch versions with the [caret (`^`)range](https://docs.npmjs.com/cli/v6/using-npm/semver#caret-ranges-123-025-004).-[#1588](https://redirect.github.com/lint-staged/lint-staged/pull/1588)[`035bbf2`](https://redirect.github.com/lint-staged/lint-staged/commit/035bbf268ac47bbaf2cfa737c3b2240d38feb22e)Thanks [@outslept](https://redirect.github.com/outslept)! -Increase performance by listing staged files and searching forconfiguration concurrently.-[#1645](https://redirect.github.com/lint-staged/lint-staged/pull/1645)[`deba3ad`](https://redirect.github.com/lint-staged/lint-staged/commit/deba3ad83581938dd71b86b563e62827b5fc2a0a)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Remove[chalk](https://redirect.github.com/chalk/chalk) as a dependency due torecent malware issue; read more at[chalk/chalk#656](https://redirect.github.com/chalk/chalk/issues/656).If you are having trouble with ANSI color codes when using*lint-staged*, you can try setting either `FORCE_COLOR=true` or`NO_COLOR=true` env variables.###[`v16.1.6`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1616)[CompareSource](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.5…v16.1.6)##### Patch Changes-[#1610](https://redirect.github.com/lint-staged/lint-staged/pull/1610)[`e93578e`](https://redirect.github.com/lint-staged/lint-staged/commit/e93578e265a69ed6b02fcaa11486078c1bdbdaaa)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Try toimprove terminating of subprocess of tasks by using `SIGKILL`, and onlycalling `pidtree` when the the main task process has a known pid.###[`v16.1.5`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1615)[CompareSource](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.4…v16.1.5)##### Patch Changes-[#1608](https://redirect.github.com/lint-staged/lint-staged/pull/1608)[`4e3ce22`](https://redirect.github.com/lint-staged/lint-staged/commit/4e3ce225b33f759f78a84d156189dc38e536cdc6)Thanks [@srsatt](https://redirect.github.com/srsatt)! – Detectthe git repo's top-level directory correctly when in a worktree.###[`v16.1.4`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1614)[CompareSource](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.3…v16.1.4)##### Patch Changes-[#1604](https://redirect.github.com/lint-staged/lint-staged/pull/1604)[`90b37b0`](https://redirect.github.com/lint-staged/lint-staged/commit/90b37b00c2c30b9cacf6c080f6a0885e1151eb7a)Thanks [@iiroj](https://redirect.github.com/iiroj)! – Add another`types` field to `package.json` to make even more sure NPM detects that*lint-staged* includes built-in TypeScript type definitions.###[`v16.1.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1613)[CompareSource](https://redirect.github.com/lint-staged/lint-staged/compare/v16.1.2…v16.1.3)##### Patch Changes-[#1602](https://redirect.github.com/lint-staged/lint-staged/pull/1602)[`7ea700b`](https://redirect.github.com/lint-staged/lint-staged/commit/7ea700bcf3d0078a01720a9c8dc13a271387afbd)Thanks [@dword-design](https://redirect.github.com/dword-design)!- Add the `types` field to `package.json` to make sure NPM detects*lint-staged* includes built-in TypeScript type definitions.</details>—### Configuration📅 **Schedule**: Branch creation – Only on Wednesday ( * * * * 3 ) intimezone Asia/Tokyo, Automerge – At any time (no schedule defined).🚦 **Automerge**: Disabled by config. Please merge this manually once youare satisfied.♻ **Rebasing**: Whenever PR is behind base branch, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.—- [ ] <!– rebase-check –>If you want to rebase/retry this PR, checkthis box—This PR was generated by [Mend Renovate](https://mend.io/renovate/).View the [repository joblog](https://developer.mend.io/github/FlutterGen/flutter_gen).<!–renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzEuOSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119–>Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> , GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.