@flatjs/evolve 1.8.1-next.92 → 1.8.1-next.94

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @flatjs/evolve
2
2
 
3
+ ## 1.8.1-next.94
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [3a97bf4]
8
+ - Updated dependencies [c97d12e]
9
+ - @flatjs/mock@1.8.1-next.72
10
+ - @flatjs/graph@1.8.1-next.50
11
+ - @flatjs/common@1.8.1-next.35
12
+ - @flatjs/evolve-preset-babel@1.8.1-next.17
13
+
14
+ ## 1.8.1-next.93
15
+
16
+ ### Patch Changes
17
+
18
+ - b70ff50: bump version
19
+ - 76ffa17: Add `Circular` dependencies check plugin in `development` phase
20
+ - ea10e66: bump version
21
+ - Updated dependencies [b70ff50]
22
+ - Updated dependencies [ea10e66]
23
+ - Updated dependencies [ba80b25]
24
+ - @flatjs/forge-postcss-plugin-pixel@1.8.1-next.35
25
+ - @flatjs/evolve-preset-babel@1.8.1-next.17
26
+ - @flatjs/common@1.8.1-next.35
27
+ - @flatjs/graph@1.8.1-next.49
28
+ - @flatjs/mock@1.8.1-next.71
29
+
3
30
  ## 1.8.1-next.92
4
31
 
5
32
  ### Patch Changes
@@ -1 +1 @@
1
- import{logger}from"@flatjs/common";import ReactRefreshWebpackPlugin from"@pmmmwh/react-refresh-webpack-plugin";import CaseSensitivePathsPlugin from"case-sensitive-paths-webpack-plugin";import ForkTsCheckerWebpackPlugin from"fork-ts-checker-webpack-plugin";import MiniCssExtractPlugin from"mini-css-extract-plugin";import webpack from"webpack";import{BundleAnalyzerPlugin}from"webpack-bundle-analyzer";import{enableBundleHashNameForModule}from"../helpers/enable-bundle-hashname-for-module.js";import{getBundleFileName}from"../helpers/get-bundle-file-name.js";import{shouldEnableReactFastRefresh}from"../helpers/should-enable-react-fast-refresh.js";import{createCleanWebpackPlugin}from"../plugins/clean-webpack/index.js";import{createBuiltinDefineVariables}from"../plugins/define-variable/index.js";import{createModuleFederationPlugin}from"../plugins/module-federation/index.js";import{createHtmlPlugins}from"../plugins/multi-html/index.js";export const createPlugins=async(e,n,a)=>{const[r,i]=n,t=enableBundleHashNameForModule(a,i?.options),l=[new webpack.WatchIgnorePlugin({paths:[/\.d\.[cm]ts$/]}),new CaseSensitivePathsPlugin,new MiniCssExtractPlugin({filename:`[name]/${getBundleFileName("css",e,t)}`,chunkFilename:"[id].[contenthash].css"}),...await createBuiltinDefineVariables(e,a),...createCleanWebpackPlugin(e,n,a),...createModuleFederationPlugin(e,n,a),...createHtmlPlugins(e,n,a)],{analyzer:s,loaderOptions:o}=a,c=(n[1].entry||[]).find((e=>/.vue$/.test(e)));o.runTsChecker&&!c&&l.push(new ForkTsCheckerWebpackPlugin({async:e,typescript:{context:a.projectCwd,memoryLimit:8192}})),s&&l.push(new BundleAnalyzerPlugin({analyzerPort:"auto",analyzerMode:"server",...s}));const u=shouldEnableReactFastRefresh(e,n,a);u&&l.push(new ReactRefreshWebpackPlugin({overlay:!1})),!u&&e&&logger.warn(`The HMR has disabled cause of \`"${r}":"moduleFederation"\``);const m=a.webpack?.plugins||[];return l.concat(m)};
1
+ import{logger}from"@flatjs/common";import ReactRefreshWebpackPlugin from"@pmmmwh/react-refresh-webpack-plugin";import CaseSensitivePathsPlugin from"case-sensitive-paths-webpack-plugin";import ForkTsCheckerWebpackPlugin from"fork-ts-checker-webpack-plugin";import MiniCssExtractPlugin from"mini-css-extract-plugin";import webpack from"webpack";import{BundleAnalyzerPlugin}from"webpack-bundle-analyzer";import{enableBundleHashNameForModule}from"../helpers/enable-bundle-hashname-for-module.js";import{getBundleFileName}from"../helpers/get-bundle-file-name.js";import{shouldEnableReactFastRefresh}from"../helpers/should-enable-react-fast-refresh.js";import{createCircularDependencyPlugin}from"../plugins/circular-dependency/index.js";import{createCleanWebpackPlugin}from"../plugins/clean-webpack/index.js";import{createBuiltinDefineVariables}from"../plugins/define-variable/index.js";import{createModuleFederationPlugin}from"../plugins/module-federation/index.js";import{createHtmlPlugins}from"../plugins/multi-html/index.js";export const createPlugins=async(e,n,a)=>{const[r,i]=n,l=enableBundleHashNameForModule(a,i?.options),t=[new webpack.WatchIgnorePlugin({paths:[/\.d\.[cm]ts$/]}),new CaseSensitivePathsPlugin,...createCircularDependencyPlugin(e,a),new MiniCssExtractPlugin({filename:`[name]/${getBundleFileName("css",e,l)}`,chunkFilename:"[id].[contenthash].css"}),...await createBuiltinDefineVariables(e,a),...createCleanWebpackPlugin(e,n,a),...createModuleFederationPlugin(e,n,a),...createHtmlPlugins(e,n,a)],{analyzer:s,loaderOptions:o}=a,c=(n[1].entry||[]).find((e=>/.vue$/.test(e)));o.runTsChecker&&!c&&t.push(new ForkTsCheckerWebpackPlugin({async:e,typescript:{context:a.projectCwd,memoryLimit:8192}})),s&&t.push(new BundleAnalyzerPlugin({analyzerPort:"auto",analyzerMode:"server",...s}));const u=shouldEnableReactFastRefresh(e,n,a);u&&t.push(new ReactRefreshWebpackPlugin({overlay:!1})),!u&&e&&logger.warn(`The HMR has disabled cause of \`"${r}":"moduleFederation"\``);const p=a.webpack?.plugins||[];return t.concat(p)};
@@ -0,0 +1,54 @@
1
+ import { type Compilation, type Compiler } from 'webpack';
2
+ export interface Options {
3
+ /**
4
+ * The project root.
5
+ */
6
+ projectCwd?: string;
7
+ /**
8
+ * exclude detection of files based on a RegExp
9
+ * @default /node_modules/
10
+ */
11
+ exclude?: RegExp;
12
+ /**
13
+ * include specific files based on a RegExp
14
+ * @default `new RegExp('.*')`
15
+ */
16
+ include?: RegExp;
17
+ /**
18
+ * add errors to webpack instead of warnings
19
+ * @default false
20
+ */
21
+ failOnError?: boolean;
22
+ /**
23
+ * allow import cycles that include an asynchronous import,
24
+ * e.g. via via import(/* webpackMode: "weak" *\/ './file.js')
25
+ * @default false
26
+ */
27
+ allowAsyncCycles?: boolean;
28
+ /**
29
+ * `onStart` is called before the cycle detection starts
30
+ */
31
+ onStart?: (options: {
32
+ compilation: Compilation;
33
+ }) => void;
34
+ /**
35
+ * `onDetected` is called for each module that is cyclical
36
+ * `paths` will be an Array of the relative module paths that make up the cycle
37
+ */
38
+ onDetected?: (options: {
39
+ paths: string[];
40
+ compilation: Compilation;
41
+ }) => void;
42
+ /**
43
+ * `onEnd` is called before the cycle detection ends
44
+ */
45
+ onEnd?: (options: {
46
+ compilation: Compilation;
47
+ }) => void;
48
+ }
49
+ export declare class CircularDependencyPlugin {
50
+ private options;
51
+ constructor(options?: Options);
52
+ apply(compiler: Compiler): void;
53
+ private isCyclic;
54
+ }
@@ -0,0 +1 @@
1
+ import{relative}from"node:path";import{mergeOptions}from"@flatjs/common";import Graph from"tarjan-graph";import webpack from"webpack";const BASE_ERROR="Circular dependency detected:\r\n",PLUGIN_TITLE="CircularDependencyPlugin";export class CircularDependencyPlugin{constructor(o={}){this.options=mergeOptions({exclude:/node_modules/,include:/.*/,failOnError:!1,allowAsyncCycles:!1,projectCwd:process.cwd()},o)}apply(o){const e=this.options.projectCwd;o.hooks.compilation.tap(PLUGIN_TITLE,(o=>{o.hooks.optimizeModules.tap(PLUGIN_TITLE,(t=>{this.options.onStart&&this.options.onStart({compilation:o});const n=new(Graph.default||Graph);for(const e of t){const t=[];for(const n of e.dependencies){if(n.constructor&&"CommonJsSelfReferenceDependency"===n.constructor.name)continue;let r=null;r=o.moduleGraph?o.moduleGraph.getModule(n):n.module,r&&(r instanceof webpack.NormalModule&&r.resource&&(this.options.allowAsyncCycles&&n.weak||e!==r&&t.push(r.identifier())))}n.add(e.identifier(),t)}const r=n.getCycles();this.isCyclic(r,o,e),this.options.onEnd&&this.options.onEnd({compilation:o})}))}))}isCyclic(o,e,t){o.forEach((o=>{const n=o.slice().reverse().map((o=>{const t=e.findModule(o.name);return t instanceof webpack.NormalModule&&t.resource||null}));if(n.every((o=>!o||this.options.exclude.test(o)||!this.options.include.test(o))))return;const r=n.map((o=>relative(t,o)));if(this.options.onDetected){try{this.options.onDetected({paths:r.concat([r[0]]),compilation:e})}catch(o){e.errors.push(o)}return}const s=new Error(BASE_ERROR.concat(r.concat([r[0]]).join(" -> ")));this.options.failOnError?e.errors.push(s):e.warnings.push(s)}))}}
@@ -0,0 +1,7 @@
1
+ import { type WebpackPlugin } from '../../create-webpack/types.js';
2
+ import { type FlatEvolveOptions } from '../../types/types-options.js';
3
+ /**
4
+ * Detect modules with circular dependencies when bundling with webpack for `development` mode.
5
+ * @returns
6
+ */
7
+ export declare const createCircularDependencyPlugin: (serveMode: boolean, evolveOptions: FlatEvolveOptions) => WebpackPlugin[];
@@ -0,0 +1 @@
1
+ import{CircularDependencyPlugin}from"./circular-dependency-plugin.js";export const createCircularDependencyPlugin=(e,n)=>e?[new CircularDependencyPlugin({projectCwd:n.projectCwd})]:[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatjs/evolve",
3
- "version": "1.8.1-next.92",
3
+ "version": "1.8.1-next.94",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -37,29 +37,29 @@
37
37
  "typecheck": "tsc --project ./tsconfig.json --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "@armit/config-loader": "^0.0.50",
41
- "@armit/file-utility": "^0.0.27",
42
- "@armit/git": "^0.0.35",
43
- "@armit/package": "^0.0.44",
44
- "@armit/worker-threads": "^0.0.4",
40
+ "@armit/config-loader": "^0.0.51",
41
+ "@armit/file-utility": "^0.0.28",
42
+ "@armit/git": "^0.0.36",
43
+ "@armit/package": "^0.0.45",
44
+ "@armit/worker-threads": "^0.0.5",
45
45
  "@babel/core": "7.22.9",
46
- "@flatjs/common": "1.8.1-next.34",
47
- "@flatjs/evolve-preset-babel": "1.8.1-next.16",
48
- "@flatjs/forge-postcss-plugin-pixel": "1.8.1-next.34",
49
- "@flatjs/graph": "1.8.1-next.48",
50
- "@flatjs/mock": "1.8.1-next.70",
46
+ "@flatjs/common": "1.8.1-next.35",
47
+ "@flatjs/evolve-preset-babel": "1.8.1-next.17",
48
+ "@flatjs/forge-postcss-plugin-pixel": "1.8.1-next.35",
49
+ "@flatjs/graph": "1.8.1-next.50",
50
+ "@flatjs/mock": "1.8.1-next.72",
51
51
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
52
52
  "@types/babel__core": "7.20.1",
53
53
  "babel-loader": "9.1.3",
54
54
  "babel-merge": "3.0.0",
55
- "babel-plugin-import": "1.13.6",
55
+ "babel-plugin-import": "1.13.8",
56
56
  "better-opn": "3.0.2",
57
57
  "case-sensitive-paths-webpack-plugin": "2.4.0",
58
58
  "css-loader": "6.8.1",
59
59
  "cssnano": "6.0.1",
60
60
  "express": "4.18.2",
61
61
  "fork-ts-checker-webpack-plugin": "8.0.0",
62
- "happy-dom": "10.5.2",
62
+ "happy-dom": "10.6.3",
63
63
  "html-webpack-plugin": "5.5.3",
64
64
  "image-minimizer-webpack-plugin": "3.8.3",
65
65
  "less": "4.1.3",
@@ -71,24 +71,25 @@
71
71
  "postcss-loader": "7.3.3",
72
72
  "react-refresh": "0.14.0",
73
73
  "svgo": "3.0.2",
74
+ "tarjan-graph": "3.0.0",
74
75
  "terser-webpack-plugin": "5.3.9",
75
76
  "tsconfig-paths-webpack-plugin": "4.1.0",
76
- "type-fest": "^4.0.0",
77
+ "type-fest": "^4.1.0",
77
78
  "webpack": "5.88.2",
78
79
  "webpack-bundle-analyzer": "4.9.0",
79
80
  "webpack-dev-server": "4.15.1",
80
81
  "webpack-sources": "3.2.3"
81
82
  },
82
83
  "devDependencies": {
83
- "@armit/eslint-config-bases": "^0.0.22",
84
- "@flatjs/testing": "1.8.1-next.35",
85
- "@swc/core": "1.3.70",
84
+ "@armit/eslint-config-bases": "^0.0.23",
85
+ "@flatjs/testing": "1.8.1-next.37",
86
+ "@swc/core": "1.3.74",
86
87
  "@types/express": "4.17.17",
87
88
  "@types/listr": "0.14.4",
88
- "@types/node": "20.4.4",
89
- "@vitest/coverage-istanbul": "0.33.0",
90
- "@vitest/ui": "0.33.0",
91
- "eslint": "8.45.0",
89
+ "@types/node": "20.4.6",
90
+ "@vitest/coverage-istanbul": "0.34.1",
91
+ "@vitest/ui": "0.34.1",
92
+ "eslint": "8.46.0",
92
93
  "imagemin-gifsicle": "7.0.0",
93
94
  "imagemin-jpegtran": "7.0.0",
94
95
  "imagemin-pngquant": "9.0.2",
@@ -100,7 +101,7 @@
100
101
  "swc-unplugin-ts": "1.0.2",
101
102
  "ts-node": "10.9.1",
102
103
  "vite-tsconfig-paths": "4.2.0",
103
- "vitest": "0.33.0",
104
+ "vitest": "0.34.1",
104
105
  "vue-loader": "17.2.2"
105
106
  },
106
107
  "peerDependencies": {