with-zephyr 0.1.0-next.1 → 0.1.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,13 +34,14 @@ bunx with-zephyr
34
34
 
35
35
  ## Supported Bundlers
36
36
 
37
- This codemod supports **11+ bundlers** with their respective Zephyr plugins:
37
+ This codemod supports **12+ bundlers** with their respective Zephyr plugins:
38
38
 
39
39
  - **Webpack** ([`zephyr-webpack-plugin`](https://www.npmjs.com/package/zephyr-webpack-plugin))
40
40
  - **Rspack** ([`zephyr-rspack-plugin`](https://www.npmjs.com/package/zephyr-rspack-plugin))
41
41
  - **Vite** ([`vite-plugin-zephyr`](https://www.npmjs.com/package/vite-plugin-zephyr))
42
42
  - **Rollup** ([`rollup-plugin-zephyr`](https://www.npmjs.com/package/rollup-plugin-zephyr))
43
43
  - **Rolldown** ([`zephyr-rolldown-plugin`](https://www.npmjs.com/package/zephyr-rolldown-plugin))
44
+ - **Astro** ([`zephyr-astro-integration`](https://www.npmjs.com/package/zephyr-astro-integration))
44
45
  - **Modern.js** ([`zephyr-modernjs-plugin`](https://www.npmjs.com/package/zephyr-modernjs-plugin))
45
46
  - **RSPress** ([`zephyr-rspress-plugin`](https://www.npmjs.com/package/zephyr-rspress-plugin))
46
47
  - **Parcel** ([`parcel-reporter-zephyr`](https://www.npmjs.com/package/parcel-reporter-zephyr))
@@ -241,6 +242,7 @@ The codemod automatically detects and processes these configuration files:
241
242
  - `vite.config.js/ts/mjs`
242
243
  - `rollup.config.js/ts/mjs`
243
244
  - `rolldown.config.js/ts/mjs`
245
+ - `astro.config.js/ts/mjs/mts`
244
246
  - `modern.config.js/ts/mjs`
245
247
  - `rspress.config.js/ts/mjs`
246
248
  - `rsbuild.config.js/ts/mjs`
package/dist/index.js CHANGED
@@ -47910,280 +47910,302 @@ const esm_glob = Object.assign(glob_, {
47910
47910
  unescape: unescape_unescape
47911
47911
  });
47912
47912
  esm_glob.glob = esm_glob;
47913
- const BUNDLER_CONFIGS = {
47914
- webpack: {
47915
- files: [
47916
- 'webpack.config.js',
47917
- 'webpack.config.ts',
47918
- 'webpack.config.mjs'
47919
- ],
47920
- plugin: 'zephyr-webpack-plugin',
47921
- importName: 'withZephyr',
47922
- patterns: [
47923
- {
47924
- type: 'compose-plugins',
47925
- matcher: /composePlugins\s*\(/,
47926
- transform: 'addToComposePlugins'
47927
- },
47928
- {
47929
- type: 'plugins-array',
47930
- matcher: /plugins\s*:\s*\[/,
47931
- transform: 'addToPluginsArray'
47932
- },
47933
- {
47934
- type: 'module-exports',
47935
- matcher: /module\.exports\s*=/,
47936
- transform: 'wrapModuleExports'
47937
- }
47938
- ]
47939
- },
47940
- rspack: {
47941
- files: [
47942
- 'rspack.config.js',
47943
- 'rspack.config.ts',
47944
- 'rspack.config.mjs'
47945
- ],
47946
- plugin: 'zephyr-rspack-plugin',
47947
- importName: 'withZephyr',
47948
- patterns: [
47949
- {
47950
- type: 'export-wrapped-call',
47951
- matcher: /export\s+default\s+withZephyr\s*\(\s*\)\s*\(/,
47952
- transform: 'skipAlreadyWrapped'
47953
- },
47954
- {
47955
- type: 'compose-plugins',
47956
- matcher: /composePlugins\s*\(/,
47957
- transform: 'addToComposePlugins'
47958
- },
47959
- {
47960
- type: 'export-default-object',
47961
- matcher: /export\s+default\s+\{/,
47962
- transform: 'wrapExportDefault'
47963
- },
47964
- {
47965
- type: 'plugins-array',
47966
- matcher: /plugins\s*:\s*\[/,
47967
- transform: 'addToPluginsArray'
47968
- },
47969
- {
47970
- type: 'module-exports',
47971
- matcher: /module\.exports\s*=/,
47972
- transform: 'wrapModuleExports'
47973
- }
47974
- ]
47975
- },
47976
- vite: {
47977
- files: [
47978
- 'vite.config.js',
47979
- 'vite.config.ts',
47980
- 'vite.config.mjs',
47981
- 'vite.config.mts'
47982
- ],
47983
- plugin: 'vite-plugin-zephyr',
47984
- importName: 'withZephyr',
47985
- patterns: [
47986
- {
47987
- type: 'define-config-function',
47988
- matcher: /defineConfig\s*\(\s*\(\s*\)\s*=>\s*\(\s*\{/,
47989
- transform: 'addToVitePluginsInFunction'
47990
- },
47991
- {
47992
- type: 'define-config',
47993
- matcher: /defineConfig\s*\(\s*\{/,
47994
- transform: 'addToVitePlugins'
47995
- },
47996
- {
47997
- type: 'export-default',
47998
- matcher: /export\s+default\s+\{/,
47999
- transform: 'addToVitePlugins'
48000
- }
48001
- ]
48002
- },
48003
- rollup: {
48004
- files: [
48005
- 'rollup.config.js',
48006
- 'rollup.config.ts',
48007
- 'rollup.config.mjs'
48008
- ],
48009
- plugin: 'rollup-plugin-zephyr',
48010
- importName: 'withZephyr',
48011
- patterns: [
48012
- {
48013
- type: 'export-array',
48014
- matcher: /export\s+default\s+\[/,
48015
- transform: 'addToRollupArrayConfig'
48016
- },
48017
- {
48018
- type: 'module-exports-function',
48019
- matcher: /module\.exports\s*=\s*\(\s*config\s*\)\s*=>/,
48020
- transform: 'addToRollupFunction'
48021
- },
48022
- {
48023
- type: 'plugins-array',
48024
- matcher: /plugins\s*:\s*\[/,
48025
- transform: 'addToPluginsArray'
48026
- }
48027
- ]
48028
- },
48029
- rolldown: {
48030
- files: [
48031
- 'rolldown.config.js',
48032
- 'rolldown.config.ts',
48033
- 'rolldown.config.mjs'
48034
- ],
48035
- plugin: 'zephyr-rolldown-plugin',
48036
- importName: 'withZephyr',
48037
- patterns: [
48038
- {
48039
- type: 'define-config',
48040
- matcher: /defineConfig\s*\(\s*\{/,
48041
- transform: 'addToRolldownPlugins'
48042
- },
48043
- {
48044
- type: 'plugins-array',
48045
- matcher: /plugins\s*:\s*\[/,
48046
- transform: 'addToPluginsArray'
48047
- }
48048
- ]
48049
- },
48050
- modernjs: {
48051
- files: [
48052
- 'modern.config.js',
48053
- 'modern.config.ts',
48054
- 'modern.config.mjs'
48055
- ],
48056
- plugin: 'zephyr-modernjs-plugin',
48057
- importName: 'withZephyr',
48058
- patterns: [
48059
- {
48060
- type: 'define-config',
48061
- matcher: /defineConfig\s*\(\s*\{/,
48062
- transform: 'addToModernJSPlugins'
48063
- },
48064
- {
48065
- type: 'plugins-array',
48066
- matcher: /plugins\s*:\s*\[/,
48067
- transform: 'addToPluginsArray'
48068
- }
48069
- ]
48070
- },
48071
- rspress: {
48072
- files: [
48073
- 'rspress.config.js',
48074
- 'rspress.config.ts',
48075
- 'rspress.config.mjs'
48076
- ],
48077
- plugin: 'zephyr-rspress-plugin',
48078
- importName: 'withZephyr',
48079
- patterns: [
48080
- {
48081
- type: 'define-config',
48082
- matcher: /defineConfig\s*\(\s*\{/,
48083
- transform: 'addToRSPressPlugins'
48084
- },
48085
- {
48086
- type: 'plugins-array',
48087
- matcher: /plugins\s*:\s*\[/,
48088
- transform: 'addToPluginsArray'
48089
- }
48090
- ]
48091
- },
48092
- parcel: {
48093
- files: [
48094
- '.parcelrc',
48095
- '.parcelrc.json'
48096
- ],
48097
- plugin: 'parcel-reporter-zephyr',
48098
- importName: null,
48099
- patterns: [
48100
- {
48101
- type: 'parcel-reporters',
48102
- matcher: /"reporters"\s*:\s*\[/,
48103
- transform: 'addToParcelReporters'
48104
- }
48105
- ]
48106
- },
48107
- repack: {
48108
- files: [
48109
- 'rspack.config.js',
48110
- 'rspack.config.ts',
48111
- 'rspack.config.mjs'
48112
- ],
48113
- plugin: 'zephyr-repack-plugin',
48114
- importName: 'withZephyr',
48115
- patterns: [
48116
- {
48117
- type: 'export-conditional-withzephyr',
48118
- matcher: /export\s+default\s+.*\?\s*withZephyr\s*\(\s*\)\s*\(/,
48119
- transform: 'skipAlreadyWrapped'
48120
- },
48121
- {
48122
- type: 'export-function-variable',
48123
- matcher: /export\s+default\s+(\w+)\s*;?\s*$/,
48124
- transform: 'wrapExportedFunction'
48125
- },
48126
- {
48127
- type: 'const-function-export',
48128
- matcher: /const\s+\w+\s*=\s*\w+\s*=>/,
48129
- transform: 'wrapExportedFunction'
48130
- }
48131
- ]
48132
- },
48133
- rsbuild: {
48134
- files: [
48135
- 'rsbuild.config.js',
48136
- 'rsbuild.config.ts',
48137
- 'rsbuild.config.mjs'
48138
- ],
48139
- plugin: 'zephyr-rsbuild-plugin',
48140
- importName: 'withZephyr',
48141
- patterns: [
48142
- {
48143
- type: 'zephyr-rsbuild-plugin-exists',
48144
- matcher: /zephyrRSbuildPlugin/,
48145
- transform: 'skipAlreadyWrapped'
48146
- },
48147
- {
48148
- type: 'define-config',
48149
- matcher: /defineConfig\s*\(\s*\{/,
48150
- transform: 'addZephyrRSbuildPlugin'
48151
- },
48152
- {
48153
- type: 'plugins-array',
48154
- matcher: /plugins\s*:\s*\[/,
48155
- transform: 'addZephyrRSbuildPlugin'
48156
- }
48157
- ]
48158
- },
48159
- rslib: {
48160
- files: [
48161
- 'rslib.config.js',
48162
- 'rslib.config.ts',
48163
- 'rslib.config.mjs'
48164
- ],
48165
- plugin: 'zephyr-rsbuild-plugin',
48166
- importName: 'withZephyr',
48167
- patterns: [
48168
- {
48169
- type: 'zephyr-rsbuild-plugin-exists',
48170
- matcher: /zephyrRSbuildPlugin/,
48171
- transform: 'skipAlreadyWrapped'
48172
- },
48173
- {
48174
- type: 'define-config',
48175
- matcher: /defineConfig\s*\(\s*\{/,
48176
- transform: 'addZephyrRSbuildPlugin'
48177
- },
48178
- {
48179
- type: 'plugins-array',
48180
- matcher: /plugins\s*:\s*\[/,
48181
- transform: 'addZephyrRSbuildPlugin'
48182
- }
48183
- ]
48184
- }
47913
+ const astro_astroConfig = {
47914
+ files: [
47915
+ 'astro.config.js',
47916
+ 'astro.config.ts',
47917
+ 'astro.config.mjs',
47918
+ 'astro.config.mts'
47919
+ ],
47920
+ plugin: 'zephyr-astro-integration',
47921
+ importName: 'withZephyr',
47922
+ patterns: [
47923
+ {
47924
+ type: 'define-config-function',
47925
+ matcher: /defineConfig\s*\(\s*\(\s*\)\s*=>\s*\(\s*\{/,
47926
+ transform: 'addToAstroIntegrationsInFunction'
47927
+ },
47928
+ {
47929
+ type: 'define-config',
47930
+ matcher: /defineConfig\s*\(\s*\{/,
47931
+ transform: 'addToAstroIntegrations'
47932
+ },
47933
+ {
47934
+ type: 'export-default',
47935
+ matcher: /export\s+default\s+\{/,
47936
+ transform: 'addToAstroIntegrations'
47937
+ }
47938
+ ]
47939
+ };
47940
+ const modernjs_modernjsConfig = {
47941
+ files: [
47942
+ 'modern.config.js',
47943
+ 'modern.config.ts',
47944
+ 'modern.config.mjs'
47945
+ ],
47946
+ plugin: 'zephyr-modernjs-plugin',
47947
+ importName: 'withZephyr',
47948
+ patterns: [
47949
+ {
47950
+ type: 'define-config',
47951
+ matcher: /defineConfig\s*\(\s*\{/,
47952
+ transform: 'addToPluginsArrayOrCreate'
47953
+ },
47954
+ {
47955
+ type: 'plugins-array',
47956
+ matcher: /plugins\s*:\s*\[/,
47957
+ transform: 'addToPluginsArray'
47958
+ }
47959
+ ]
47960
+ };
47961
+ const parcel_parcelConfig = {
47962
+ files: [
47963
+ '.parcelrc',
47964
+ '.parcelrc.json'
47965
+ ],
47966
+ plugin: 'parcel-reporter-zephyr',
47967
+ importName: null,
47968
+ patterns: [
47969
+ {
47970
+ type: 'parcel-reporters',
47971
+ matcher: /"reporters"\s*:\s*\[/,
47972
+ transform: 'addToParcelReporters'
47973
+ }
47974
+ ]
47975
+ };
47976
+ const repack_repackConfig = {
47977
+ files: [
47978
+ 'rspack.config.js',
47979
+ 'rspack.config.ts',
47980
+ 'rspack.config.mjs'
47981
+ ],
47982
+ plugin: 'zephyr-repack-plugin',
47983
+ importName: 'withZephyr',
47984
+ patterns: [
47985
+ {
47986
+ type: 'export-conditional-withzephyr',
47987
+ matcher: /export\s+default\s+.*\?\s*withZephyr\s*\(\s*\)\s*\(/,
47988
+ transform: 'skipAlreadyWrapped'
47989
+ },
47990
+ {
47991
+ type: 'export-function-variable',
47992
+ matcher: /export\s+default\s+(\w+)\s*;?\s*$/,
47993
+ transform: 'wrapExportedFunction'
47994
+ },
47995
+ {
47996
+ type: 'const-function-export',
47997
+ matcher: /const\s+\w+\s*=\s*\w+\s*=>/,
47998
+ transform: 'wrapExportedFunction'
47999
+ }
48000
+ ]
48001
+ };
48002
+ const rolldown_rolldownConfig = {
48003
+ files: [
48004
+ 'rolldown.config.js',
48005
+ 'rolldown.config.ts',
48006
+ 'rolldown.config.mjs'
48007
+ ],
48008
+ plugin: 'zephyr-rolldown-plugin',
48009
+ importName: 'withZephyr',
48010
+ patterns: [
48011
+ {
48012
+ type: 'define-config',
48013
+ matcher: /defineConfig\s*\(\s*\{/,
48014
+ transform: 'addToPluginsArrayOrCreate'
48015
+ },
48016
+ {
48017
+ type: 'plugins-array',
48018
+ matcher: /plugins\s*:\s*\[/,
48019
+ transform: 'addToPluginsArray'
48020
+ }
48021
+ ]
48022
+ };
48023
+ const rollup_rollupConfig = {
48024
+ files: [
48025
+ 'rollup.config.js',
48026
+ 'rollup.config.ts',
48027
+ 'rollup.config.mjs'
48028
+ ],
48029
+ plugin: 'rollup-plugin-zephyr',
48030
+ importName: 'withZephyr',
48031
+ patterns: [
48032
+ {
48033
+ type: 'export-array',
48034
+ matcher: /export\s+default\s+\[/,
48035
+ transform: 'addToRollupArrayConfig'
48036
+ },
48037
+ {
48038
+ type: 'module-exports-function',
48039
+ matcher: /module\.exports\s*=\s*\(\s*config\s*\)\s*=>/,
48040
+ transform: 'addToRollupFunction'
48041
+ },
48042
+ {
48043
+ type: 'plugins-array',
48044
+ matcher: /plugins\s*:\s*\[/,
48045
+ transform: 'addToPluginsArray'
48046
+ }
48047
+ ]
48048
+ };
48049
+ const rsbuild_rsbuildConfig = {
48050
+ files: [
48051
+ 'rsbuild.config.js',
48052
+ 'rsbuild.config.ts',
48053
+ 'rsbuild.config.mjs'
48054
+ ],
48055
+ plugin: 'zephyr-rsbuild-plugin',
48056
+ importName: 'withZephyr',
48057
+ patterns: [
48058
+ {
48059
+ type: 'define-config',
48060
+ matcher: /defineConfig\s*\(\s*\{/,
48061
+ transform: 'addToPluginsArray'
48062
+ },
48063
+ {
48064
+ type: 'plugins-array',
48065
+ matcher: /plugins\s*:\s*\[/,
48066
+ transform: 'addToPluginsArray'
48067
+ }
48068
+ ]
48069
+ };
48070
+ const rslib_rslibConfig = {
48071
+ files: [
48072
+ 'rslib.config.js',
48073
+ 'rslib.config.ts',
48074
+ 'rslib.config.mjs'
48075
+ ],
48076
+ plugin: 'zephyr-rsbuild-plugin',
48077
+ importName: 'withZephyr',
48078
+ patterns: [
48079
+ {
48080
+ type: 'define-config',
48081
+ matcher: /defineConfig\s*\(\s*\{/,
48082
+ transform: 'addToPluginsArray'
48083
+ },
48084
+ {
48085
+ type: 'plugins-array',
48086
+ matcher: /plugins\s*:\s*\[/,
48087
+ transform: 'addToPluginsArray'
48088
+ }
48089
+ ]
48090
+ };
48091
+ const rspack_rspackConfig = {
48092
+ files: [
48093
+ 'rspack.config.js',
48094
+ 'rspack.config.ts',
48095
+ 'rspack.config.mjs'
48096
+ ],
48097
+ plugin: 'zephyr-rspack-plugin',
48098
+ importName: 'withZephyr',
48099
+ patterns: [
48100
+ {
48101
+ type: 'export-wrapped-call',
48102
+ matcher: /export\s+default\s+withZephyr\s*\(\s*\)\s*\(/,
48103
+ transform: 'skipAlreadyWrapped'
48104
+ },
48105
+ {
48106
+ type: 'compose-plugins',
48107
+ matcher: /composePlugins\s*\(/,
48108
+ transform: 'addToComposePlugins'
48109
+ },
48110
+ {
48111
+ type: 'export-default-object',
48112
+ matcher: /export\s+default\s+\{/,
48113
+ transform: 'wrapExportDefault'
48114
+ },
48115
+ {
48116
+ type: 'plugins-array',
48117
+ matcher: /plugins\s*:\s*\[/,
48118
+ transform: 'addToPluginsArray'
48119
+ },
48120
+ {
48121
+ type: 'module-exports',
48122
+ matcher: /module\.exports\s*=/,
48123
+ transform: 'wrapModuleExports'
48124
+ }
48125
+ ]
48126
+ };
48127
+ const rspress_rspressConfig = {
48128
+ files: [
48129
+ 'rspress.config.js',
48130
+ 'rspress.config.ts',
48131
+ 'rspress.config.mjs'
48132
+ ],
48133
+ plugin: 'zephyr-rspress-plugin',
48134
+ importName: 'withZephyr',
48135
+ patterns: [
48136
+ {
48137
+ type: 'define-config',
48138
+ matcher: /defineConfig\s*\(\s*\{/,
48139
+ transform: 'addToPluginsArrayOrCreate'
48140
+ },
48141
+ {
48142
+ type: 'plugins-array',
48143
+ matcher: /plugins\s*:\s*\[/,
48144
+ transform: 'addToPluginsArray'
48145
+ }
48146
+ ]
48147
+ };
48148
+ const vite_viteConfig = {
48149
+ files: [
48150
+ 'vite.config.js',
48151
+ 'vite.config.ts',
48152
+ 'vite.config.mjs',
48153
+ 'vite.config.mts'
48154
+ ],
48155
+ plugin: 'vite-plugin-zephyr',
48156
+ importName: 'withZephyr',
48157
+ patterns: [
48158
+ {
48159
+ type: 'define-config-function',
48160
+ matcher: /defineConfig\s*\(\s*\(\s*\)\s*=>\s*\(\s*\{/,
48161
+ transform: 'addToVitePluginsInFunction'
48162
+ },
48163
+ {
48164
+ type: 'define-config',
48165
+ matcher: /defineConfig\s*\(\s*\{/,
48166
+ transform: 'addToVitePlugins'
48167
+ },
48168
+ {
48169
+ type: 'export-default',
48170
+ matcher: /export\s+default\s+\{/,
48171
+ transform: 'addToVitePlugins'
48172
+ }
48173
+ ]
48174
+ };
48175
+ const webpack_webpackConfig = {
48176
+ files: [
48177
+ 'webpack.config.js',
48178
+ 'webpack.config.ts',
48179
+ 'webpack.config.mjs'
48180
+ ],
48181
+ plugin: 'zephyr-webpack-plugin',
48182
+ importName: 'withZephyr',
48183
+ patterns: [
48184
+ {
48185
+ type: 'compose-plugins',
48186
+ matcher: /composePlugins\s*\(/,
48187
+ transform: 'addToComposePlugins'
48188
+ },
48189
+ {
48190
+ type: 'plugins-array',
48191
+ matcher: /plugins\s*:\s*\[/,
48192
+ transform: 'addToPluginsArray'
48193
+ },
48194
+ {
48195
+ type: 'module-exports',
48196
+ matcher: /module\.exports\s*=/,
48197
+ transform: 'wrapModuleExports'
48198
+ }
48199
+ ]
48185
48200
  };
48186
48201
  function detectPackageManager(directory = process.cwd()) {
48202
+ if (process.env.npm_config_user_agent) {
48203
+ const userAgent = process.env.npm_config_user_agent.toLowerCase();
48204
+ if (userAgent.includes('pnpm')) return 'pnpm';
48205
+ if (userAgent.includes('yarn')) return 'yarn';
48206
+ if (userAgent.includes('bun')) return 'bun';
48207
+ if (userAgent.includes('npm')) return 'npm';
48208
+ }
48187
48209
  const lockFiles = {
48188
48210
  'pnpm-lock.yaml': 'pnpm',
48189
48211
  'yarn.lock': 'yarn',
@@ -48216,12 +48238,6 @@ function detectPackageManager(directory = process.cwd()) {
48216
48238
  if (fs_0.existsSync(path_0.join(rootDir, 'lerna.json')) || fs_0.existsSync(path_0.join(rootDir, 'yarn.lock')) && rootDir === directory) return 'yarn';
48217
48239
  }
48218
48240
  } catch {}
48219
- if (process.env.npm_config_user_agent) {
48220
- const userAgent = process.env.npm_config_user_agent.toLowerCase();
48221
- if (userAgent.includes('pnpm')) return 'pnpm';
48222
- if (userAgent.includes('yarn')) return 'yarn';
48223
- if (userAgent.includes('bun')) return 'bun';
48224
- }
48225
48241
  return 'npm';
48226
48242
  }
48227
48243
  function isPackageInstalled(packageName, directory = process.cwd()) {
@@ -48257,8 +48273,8 @@ function installPackage(directory, packageName, packageManager, isDev = true) {
48257
48273
  }
48258
48274
  }
48259
48275
  var lib = __webpack_require__("../../node_modules/.pnpm/@babel+parser@7.28.4/node_modules/@babel/parser/lib/index.js");
48260
- var traverse_lib = __webpack_require__("../../node_modules/.pnpm/@babel+traverse@7.28.4_supports-color@5.5.0/node_modules/@babel/traverse/lib/index.js");
48261
48276
  var generator_lib = __webpack_require__("../../node_modules/.pnpm/@babel+generator@7.28.3/node_modules/@babel/generator/lib/index.js");
48277
+ var traverse_lib = __webpack_require__("../../node_modules/.pnpm/@babel+traverse@7.28.4_supports-color@5.5.0/node_modules/@babel/traverse/lib/index.js");
48262
48278
  var types_lib = __webpack_require__("../../node_modules/.pnpm/@babel+types@7.28.4/node_modules/@babel/types/lib/index.js");
48263
48279
  function parseFile(filePath) {
48264
48280
  const content = fs_0.readFileSync(filePath, 'utf8');
@@ -48300,6 +48316,18 @@ function writeFile(filePath, ast) {
48300
48316
  });
48301
48317
  fs_0.writeFileSync(filePath, output.code);
48302
48318
  }
48319
+ function hasZephyrPlugin(ast) {
48320
+ let hasPlugin = false;
48321
+ (0, traverse_lib["default"])(ast, {
48322
+ CallExpression (path) {
48323
+ if (types_lib.isIdentifier(path.node.callee, {
48324
+ name: 'withZephyr'
48325
+ })) hasPlugin = true;
48326
+ }
48327
+ });
48328
+ return hasPlugin;
48329
+ }
48330
+ function skipAlreadyWrapped(_ast) {}
48303
48331
  function addZephyrImport(ast, pluginName, importName) {
48304
48332
  if (!importName) return;
48305
48333
  let hasImport = false;
@@ -48348,19 +48376,44 @@ function addZephyrRequire(ast, pluginName, importName) {
48348
48376
  });
48349
48377
  }
48350
48378
  }
48351
- function transformers_hasZephyrPlugin(ast) {
48352
- let hasPlugin = false;
48379
+ function addToPluginsArray(ast) {
48380
+ (0, traverse_lib["default"])(ast, {
48381
+ ObjectProperty (path) {
48382
+ if (types_lib.isIdentifier(path.node.key, {
48383
+ name: 'plugins'
48384
+ }) && types_lib.isArrayExpression(path.node.value)) path.node.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48385
+ }
48386
+ });
48387
+ }
48388
+ function addToPluginsArrayOrCreate(ast) {
48389
+ let pluginAdded = false;
48353
48390
  (0, traverse_lib["default"])(ast, {
48354
48391
  CallExpression (path) {
48355
48392
  if (types_lib.isIdentifier(path.node.callee, {
48356
- name: 'withZephyr'
48357
- })) hasPlugin = true;
48358
- },
48359
- Identifier (path) {
48360
- if ('withZephyr' === path.node.name && types_lib.isCallExpression(path.parent) && path.parent.callee === path.node) hasPlugin = true;
48393
+ name: 'defineConfig'
48394
+ }) && 1 === path.node.arguments.length && types_lib.isObjectExpression(path.node.arguments[0])) {
48395
+ const configObject = path.node.arguments[0];
48396
+ let pluginsProperty = null;
48397
+ for (const prop of configObject.properties)if (types_lib.isObjectProperty(prop) && types_lib.isIdentifier(prop.key, {
48398
+ name: 'plugins'
48399
+ }) && types_lib.isArrayExpression(prop.value)) {
48400
+ pluginsProperty = prop;
48401
+ break;
48402
+ }
48403
+ if (pluginsProperty && types_lib.isArrayExpression(pluginsProperty.value)) {
48404
+ pluginsProperty.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48405
+ pluginAdded = true;
48406
+ } else if (!pluginsProperty) {
48407
+ const newPluginsProperty = types_lib.objectProperty(types_lib.identifier('plugins'), types_lib.arrayExpression([
48408
+ types_lib.callExpression(types_lib.identifier('withZephyr'), [])
48409
+ ]));
48410
+ configObject.properties.push(newPluginsProperty);
48411
+ pluginAdded = true;
48412
+ }
48413
+ }
48361
48414
  }
48362
48415
  });
48363
- return hasPlugin;
48416
+ if (!pluginAdded) addToPluginsArray(ast);
48364
48417
  }
48365
48418
  function addToComposePlugins(ast) {
48366
48419
  (0, traverse_lib["default"])(ast, {
@@ -48376,15 +48429,6 @@ function addToComposePlugins(ast) {
48376
48429
  }
48377
48430
  });
48378
48431
  }
48379
- function addToPluginsArray(ast) {
48380
- (0, traverse_lib["default"])(ast, {
48381
- ObjectProperty (path) {
48382
- if (types_lib.isIdentifier(path.node.key, {
48383
- name: 'plugins'
48384
- }) && types_lib.isArrayExpression(path.node.value)) path.node.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48385
- }
48386
- });
48387
- }
48388
48432
  function addToVitePlugins(ast) {
48389
48433
  addToPluginsArray(ast);
48390
48434
  }
@@ -48410,13 +48454,47 @@ function addToVitePluginsInFunction(ast) {
48410
48454
  }
48411
48455
  });
48412
48456
  }
48457
+ function addToAstroIntegrations(ast) {
48458
+ (0, traverse_lib["default"])(ast, {
48459
+ ObjectExpression (path) {
48460
+ for (const prop of path.node.properties)if (types_lib.isObjectProperty(prop) && types_lib.isIdentifier(prop.key, {
48461
+ name: 'integrations'
48462
+ }) && types_lib.isArrayExpression(prop.value)) {
48463
+ prop.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48464
+ path.stop();
48465
+ return;
48466
+ }
48467
+ }
48468
+ });
48469
+ }
48470
+ function addToAstroIntegrationsInFunction(ast) {
48471
+ (0, traverse_lib["default"])(ast, {
48472
+ CallExpression (path) {
48473
+ if (types_lib.isIdentifier(path.node.callee, {
48474
+ name: 'defineConfig'
48475
+ }) && 1 === path.node.arguments.length && types_lib.isArrowFunctionExpression(path.node.arguments[0])) {
48476
+ const arrowFunc = path.node.arguments[0];
48477
+ let objExpr = null;
48478
+ if (types_lib.isParenthesizedExpression(arrowFunc.body) && types_lib.isObjectExpression(arrowFunc.body.expression)) objExpr = arrowFunc.body.expression;
48479
+ else if (types_lib.isObjectExpression(arrowFunc.body)) objExpr = arrowFunc.body;
48480
+ if (objExpr) {
48481
+ for (const prop of objExpr.properties)if (types_lib.isObjectProperty(prop) && types_lib.isIdentifier(prop.key, {
48482
+ name: 'integrations'
48483
+ }) && types_lib.isArrayExpression(prop.value)) {
48484
+ prop.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48485
+ break;
48486
+ }
48487
+ }
48488
+ }
48489
+ }
48490
+ });
48491
+ }
48413
48492
  function addToRollupFunction(ast) {
48414
48493
  (0, traverse_lib["default"])(ast, {
48415
48494
  ArrowFunctionExpression (path) {
48416
- if (1 === path.node.params.length && types_lib.isIdentifier(path.node.params[0], {
48417
- name: 'config'
48418
- })) {
48419
- const pushStatement = types_lib.expressionStatement(types_lib.callExpression(types_lib.memberExpression(types_lib.memberExpression(types_lib.identifier('config'), types_lib.identifier('plugins')), types_lib.identifier('push')), [
48495
+ if (1 === path.node.params.length && types_lib.isIdentifier(path.node.params[0])) {
48496
+ const paramName = path.node.params[0].name;
48497
+ const pushStatement = types_lib.expressionStatement(types_lib.callExpression(types_lib.memberExpression(types_lib.memberExpression(types_lib.identifier(paramName), types_lib.identifier('plugins')), types_lib.identifier('push')), [
48420
48498
  types_lib.callExpression(types_lib.identifier('withZephyr'), [])
48421
48499
  ]));
48422
48500
  if (types_lib.isBlockStatement(path.node.body)) {
@@ -48428,21 +48506,18 @@ function addToRollupFunction(ast) {
48428
48506
  }
48429
48507
  });
48430
48508
  }
48431
- function addToRolldownPlugins(ast) {
48432
- addToPluginsArray(ast);
48433
- }
48434
- function addToModernJSPlugins(ast) {
48435
- addToPluginsArray(ast);
48436
- }
48437
- function addToRSPressPlugins(ast) {
48438
- addToPluginsArray(ast);
48439
- }
48440
- function addToParcelReporters(filePath, pluginName) {
48441
- const content = fs_0.readFileSync(filePath, 'utf8');
48442
- const config = JSON.parse(content);
48443
- if (!config.reporters) config.reporters = [];
48444
- if (!config.reporters.includes(pluginName)) config.reporters.push(pluginName);
48445
- fs_0.writeFileSync(filePath, JSON.stringify(config, null, 2));
48509
+ function addToRollupArrayConfig(ast) {
48510
+ (0, traverse_lib["default"])(ast, {
48511
+ ExportDefaultDeclaration (path) {
48512
+ if (types_lib.isArrayExpression(path.node.declaration)) {
48513
+ for (const element of path.node.declaration.elements)if (types_lib.isObjectExpression(element)) {
48514
+ for (const prop of element.properties)if (types_lib.isObjectProperty(prop) && types_lib.isIdentifier(prop.key, {
48515
+ name: 'plugins'
48516
+ }) && types_lib.isArrayExpression(prop.value)) return void prop.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48517
+ }
48518
+ }
48519
+ }
48520
+ });
48446
48521
  }
48447
48522
  function wrapModuleExports(ast) {
48448
48523
  (0, traverse_lib["default"])(ast, {
@@ -48451,7 +48526,9 @@ function wrapModuleExports(ast) {
48451
48526
  name: 'module'
48452
48527
  }) && types_lib.isIdentifier(path.node.left.property, {
48453
48528
  name: 'exports'
48454
- })) path.node.right = types_lib.callExpression(types_lib.identifier('withZephyr'), []);
48529
+ })) path.node.right = types_lib.callExpression(types_lib.callExpression(types_lib.identifier('withZephyr'), []), [
48530
+ path.node.right
48531
+ ]);
48455
48532
  }
48456
48533
  });
48457
48534
  }
@@ -48464,20 +48541,6 @@ function wrapExportDefault(ast) {
48464
48541
  }
48465
48542
  });
48466
48543
  }
48467
- function addToRollupArrayConfig(ast) {
48468
- (0, traverse_lib["default"])(ast, {
48469
- ExportDefaultDeclaration (path) {
48470
- if (types_lib.isArrayExpression(path.node.declaration)) {
48471
- for (const element of path.node.declaration.elements)if (types_lib.isObjectExpression(element)) {
48472
- for (const prop of element.properties)if (types_lib.isObjectProperty(prop) && types_lib.isIdentifier(prop.key, {
48473
- name: 'plugins'
48474
- }) && types_lib.isArrayExpression(prop.value)) return void prop.value.elements.push(types_lib.callExpression(types_lib.identifier('withZephyr'), []));
48475
- }
48476
- }
48477
- }
48478
- });
48479
- }
48480
- function skipAlreadyWrapped(_ast) {}
48481
48544
  function wrapExportedFunction(ast) {
48482
48545
  (0, traverse_lib["default"])(ast, {
48483
48546
  ExportDefaultDeclaration (path) {
@@ -48498,122 +48561,48 @@ function wrapExportedFunction(ast) {
48498
48561
  }
48499
48562
  });
48500
48563
  }
48501
- function addZephyrRSbuildPlugin(ast) {
48502
- let hasWithZephyrImport = false;
48503
- (0, traverse_lib["default"])(ast, {
48504
- ImportDeclaration (path) {
48505
- if ('zephyr-rspack-plugin' === path.node.source.value) {
48506
- const specifiers = path.node.specifiers;
48507
- for (const spec of specifiers)if (types_lib.isImportSpecifier(spec) && types_lib.isIdentifier(spec.imported, {
48508
- name: 'withZephyr'
48509
- })) hasWithZephyrImport = true;
48510
- }
48511
- }
48512
- });
48513
- if (!hasWithZephyrImport) {
48514
- const importDeclaration = types_lib.importDeclaration([
48515
- types_lib.importSpecifier(types_lib.identifier('withZephyr'), types_lib.identifier('withZephyr'))
48516
- ], types_lib.stringLiteral('zephyr-rspack-plugin'));
48517
- (0, traverse_lib["default"])(ast, {
48518
- Program (path) {
48519
- const firstImportIndex = path.node.body.findIndex((node)=>types_lib.isImportDeclaration(node));
48520
- if (firstImportIndex >= 0) path.node.body.splice(firstImportIndex + 1, 0, importDeclaration);
48521
- else path.node.body.unshift(importDeclaration);
48522
- path.stop();
48523
- }
48524
- });
48525
- }
48526
- let hasZephyrPlugin = false;
48527
- (0, traverse_lib["default"])(ast, {
48528
- VariableDeclarator (path) {
48529
- if (types_lib.isIdentifier(path.node.id, {
48530
- name: 'zephyrRSbuildPlugin'
48531
- })) hasZephyrPlugin = true;
48532
- }
48533
- });
48534
- if (!hasZephyrPlugin) {
48535
- const zephyrPluginFunction = types_lib.variableDeclaration('const', [
48536
- types_lib.variableDeclarator(types_lib.identifier('zephyrRSbuildPlugin'), types_lib.arrowFunctionExpression([], types_lib.objectExpression([
48537
- types_lib.objectProperty(types_lib.identifier('name'), types_lib.stringLiteral('zephyr-rsbuild-plugin')),
48538
- types_lib.objectMethod('method', types_lib.identifier('setup'), [
48539
- types_lib.identifier('api')
48540
- ], types_lib.blockStatement([
48541
- types_lib.expressionStatement(types_lib.callExpression(types_lib.memberExpression(types_lib.identifier('api'), types_lib.identifier('modifyRspackConfig')), [
48542
- types_lib.arrowFunctionExpression([
48543
- types_lib.identifier('config')
48544
- ], types_lib.blockStatement([
48545
- types_lib.variableDeclaration('const', [
48546
- types_lib.variableDeclarator(types_lib.identifier('zephyrConfig'), types_lib.awaitExpression(types_lib.callExpression(types_lib.callExpression(types_lib.identifier('withZephyr'), []), [
48547
- types_lib.identifier('config')
48548
- ])))
48549
- ]),
48550
- types_lib.expressionStatement(types_lib.assignmentExpression('=', types_lib.identifier('config'), types_lib.identifier('zephyrConfig')))
48551
- ]), true)
48552
- ]))
48553
- ]))
48554
- ])))
48555
- ]);
48556
- (0, traverse_lib["default"])(ast, {
48557
- Program (path) {
48558
- let insertIndex = 0;
48559
- for(let i = 0; i < path.node.body.length; i++)if (types_lib.isImportDeclaration(path.node.body[i])) insertIndex = i + 1;
48560
- else break;
48561
- path.node.body.splice(insertIndex, 0, zephyrPluginFunction);
48562
- path.stop();
48563
- }
48564
- });
48565
- let hasRsbuildPluginImport = false;
48566
- (0, traverse_lib["default"])(ast, {
48567
- ImportDeclaration (path) {
48568
- if ('@rsbuild/core' === path.node.source.value) {
48569
- const specifiers = path.node.specifiers;
48570
- for (const spec of specifiers)if (types_lib.isImportSpecifier(spec) && types_lib.isIdentifier(spec.imported, {
48571
- name: 'RsbuildPlugin'
48572
- })) hasRsbuildPluginImport = true;
48573
- if (!hasRsbuildPluginImport) specifiers.push(types_lib.importSpecifier(types_lib.identifier('RsbuildPlugin'), types_lib.identifier('RsbuildPlugin')));
48574
- }
48575
- }
48576
- });
48577
- }
48578
- (0, traverse_lib["default"])(ast, {
48579
- ObjectProperty (path) {
48580
- if (types_lib.isIdentifier(path.node.key, {
48581
- name: 'plugins'
48582
- }) && types_lib.isArrayExpression(path.node.value)) {
48583
- let hasZephyrInPlugins = false;
48584
- for (const element of path.node.value.elements)if (types_lib.isCallExpression(element) && types_lib.isIdentifier(element.callee, {
48585
- name: 'zephyrRSbuildPlugin'
48586
- })) {
48587
- hasZephyrInPlugins = true;
48588
- break;
48589
- }
48590
- if (!hasZephyrInPlugins) path.node.value.elements.push(types_lib.callExpression(types_lib.identifier('zephyrRSbuildPlugin'), []));
48591
- }
48592
- }
48593
- });
48564
+ function addToParcelReporters(filePath, pluginName) {
48565
+ const content = fs_0.readFileSync(filePath, 'utf8');
48566
+ const config = JSON.parse(content);
48567
+ if (!config.reporters) config.reporters = [];
48568
+ if (!config.reporters.includes(pluginName)) config.reporters.push(pluginName);
48569
+ fs_0.writeFileSync(filePath, JSON.stringify(config, null, 2));
48594
48570
  }
48571
+ const src_BUNDLER_CONFIGS = {
48572
+ webpack: webpack_webpackConfig,
48573
+ rspack: rspack_rspackConfig,
48574
+ vite: vite_viteConfig,
48575
+ rollup: rollup_rollupConfig,
48576
+ rolldown: rolldown_rolldownConfig,
48577
+ rsbuild: rsbuild_rsbuildConfig,
48578
+ rslib: rslib_rslibConfig,
48579
+ parcel: parcel_parcelConfig,
48580
+ astro: astro_astroConfig,
48581
+ modernjs: modernjs_modernjsConfig,
48582
+ rspress: rspress_rspressConfig,
48583
+ repack: repack_repackConfig
48584
+ };
48595
48585
  const TRANSFORMERS = {
48596
48586
  addToComposePlugins: addToComposePlugins,
48597
48587
  addToPluginsArray: addToPluginsArray,
48588
+ addToPluginsArrayOrCreate: addToPluginsArrayOrCreate,
48598
48589
  addToVitePlugins: addToVitePlugins,
48599
48590
  addToVitePluginsInFunction: addToVitePluginsInFunction,
48591
+ addToAstroIntegrations: addToAstroIntegrations,
48592
+ addToAstroIntegrationsInFunction: addToAstroIntegrationsInFunction,
48600
48593
  addToRollupFunction: addToRollupFunction,
48601
48594
  addToRollupArrayConfig: addToRollupArrayConfig,
48602
- addToRolldownPlugins: addToRolldownPlugins,
48603
- addToModernJSPlugins: addToModernJSPlugins,
48604
- addToRSPressPlugins: addToRSPressPlugins,
48605
48595
  wrapModuleExports: wrapModuleExports,
48606
48596
  wrapExportDefault: wrapExportDefault,
48607
48597
  skipAlreadyWrapped: skipAlreadyWrapped,
48608
- wrapExportedFunction: wrapExportedFunction,
48609
- addZephyrRSbuildPlugin: addZephyrRSbuildPlugin
48598
+ wrapExportedFunction: wrapExportedFunction
48610
48599
  };
48611
48600
  function normalizePathForOutput(filePath) {
48612
48601
  return filePath.replace(/\\/g, '/');
48613
48602
  }
48614
48603
  function findConfigFiles(directory) {
48615
48604
  const configFiles = [];
48616
- for (const [bundlerName, config] of Object.entries(BUNDLER_CONFIGS))for (const fileName of config.files){
48605
+ for (const [bundlerName, config] of Object.entries(src_BUNDLER_CONFIGS))for (const fileName of config.files){
48617
48606
  const pattern = `${directory}/**/${fileName}`.replace(/\\/g, '/');
48618
48607
  const matches = esm_glob.sync(pattern, {
48619
48608
  ignore: [
@@ -48656,7 +48645,7 @@ function checkHasZephyr(filePath, config) {
48656
48645
  }
48657
48646
  {
48658
48647
  const ast = parseFile(filePath);
48659
- return transformers_hasZephyrPlugin(ast);
48648
+ return hasZephyrPlugin(ast);
48660
48649
  }
48661
48650
  } catch (error) {
48662
48651
  console.warn(source.yellow(`Warning: Could not parse ${normalizePathForOutput(filePath)}: ${error.message}`));
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "timestamp": "2025-10-23T11:49:09.325Z",
4
+ "dependencies": {},
5
+ "zeVars": {}
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "with-zephyr",
3
- "version": "0.1.0-next.1",
3
+ "version": "0.1.1-next.1",
4
4
  "description": "A codemod to automatically add withZephyr plugin to bundler configurations",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "@types/node": "^24.5.2",
39
39
  "@rslib/core": "^0.13.3",
40
40
  "typescript": "^5.9.2",
41
- "zephyr-rsbuild-plugin": "0.1.0-next.1"
41
+ "zephyr-rsbuild-plugin": "0.1.1-next.1"
42
42
  },
43
43
  "keywords": [
44
44
  "zephyr",
@@ -50,6 +50,7 @@
50
50
  "rspack",
51
51
  "rsbuild",
52
52
  "rslib",
53
+ "astro",
53
54
  "modernjs",
54
55
  "rolldown",
55
56
  "rspress"