knip 6.41.0 → 6.42.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.
Files changed (71) hide show
  1. package/README.md +1 -1
  2. package/dist/ConfigurationChief.d.ts +18 -0
  3. package/dist/WorkspaceWorker.js +1 -0
  4. package/dist/binaries/bash-parser.js +16 -39
  5. package/dist/binaries/resolvers/bun.js +1 -0
  6. package/dist/compilers/scss.js +2 -22
  7. package/dist/compilers/shared.d.ts +1 -1
  8. package/dist/compilers/shared.js +24 -1
  9. package/dist/constants.js +1 -0
  10. package/dist/graph-explorer/operations/is-referenced.js +8 -2
  11. package/dist/manifest/index.js +2 -3
  12. package/dist/plugins/_component-style-urls/component-style-urls-visitor.d.ts +2 -0
  13. package/dist/plugins/_component-style-urls/component-style-urls-visitor.js +40 -0
  14. package/dist/plugins/angular/index.js +7 -1
  15. package/dist/plugins/biome/index.js +2 -2
  16. package/dist/plugins/bun/index.js +13 -0
  17. package/dist/plugins/commitlint/index.js +2 -2
  18. package/dist/plugins/eslint/helpers.js +1 -1
  19. package/dist/plugins/filesystem-routing/index.d.ts +3 -0
  20. package/dist/plugins/filesystem-routing/index.js +57 -0
  21. package/dist/plugins/github-actions/index.js +1 -1
  22. package/dist/plugins/index.d.ts +3 -0
  23. package/dist/plugins/index.js +6 -0
  24. package/dist/plugins/jest/index.js +16 -7
  25. package/dist/plugins/jest/visitors/mock.d.ts +2 -0
  26. package/dist/plugins/jest/visitors/mock.js +91 -0
  27. package/dist/plugins/mise/scripts.js +55 -97
  28. package/dist/plugins/next/index.js +33 -1
  29. package/dist/plugins/nx/index.js +46 -8
  30. package/dist/plugins/nx/types.d.ts +8 -0
  31. package/dist/plugins/oxlint/index.js +1 -1
  32. package/dist/plugins/react-router/index.d.ts +3 -0
  33. package/dist/plugins/react-router/index.js +3 -0
  34. package/dist/plugins/rstest/index.js +1 -1
  35. package/dist/plugins/semantic-release/index.js +32 -3
  36. package/dist/plugins/semantic-release/types.d.ts +1 -0
  37. package/dist/plugins/solidjs-vite-plugin/index.d.ts +6 -0
  38. package/dist/plugins/solidjs-vite-plugin/index.js +17 -0
  39. package/dist/plugins/solidjs-vite-plugin/resolveFromAST.d.ts +3 -0
  40. package/dist/plugins/solidjs-vite-plugin/resolveFromAST.js +76 -0
  41. package/dist/plugins/sst/resolveFromAST.js +1 -1
  42. package/dist/plugins/stencil/index.js +2 -39
  43. package/dist/plugins/storybook/index.js +2 -4
  44. package/dist/plugins/sveltejs-package/helpers.js +2 -2
  45. package/dist/plugins/tailwind/compiler.js +10 -2
  46. package/dist/plugins/taskfile/index.js +3 -6
  47. package/dist/plugins/tsrs/index.d.ts +3 -0
  48. package/dist/plugins/tsrs/index.js +15 -0
  49. package/dist/plugins/typescript/index.d.ts +12 -1
  50. package/dist/plugins/typescript/index.js +5 -7
  51. package/dist/plugins/vite/helpers.d.ts +1 -0
  52. package/dist/plugins/vite/helpers.js +15 -1
  53. package/dist/plugins/vitest/index.js +4 -4
  54. package/dist/schema/configuration.d.ts +45 -0
  55. package/dist/schema/plugins.d.ts +15 -0
  56. package/dist/schema/plugins.js +3 -0
  57. package/dist/types/PluginNames.d.ts +2 -2
  58. package/dist/types/PluginNames.js +3 -0
  59. package/dist/types/config.d.ts +1 -0
  60. package/dist/typescript/visitors/imports.js +11 -0
  61. package/dist/typescript/visitors/jsdoc.js +27 -22
  62. package/dist/util/create-options.d.ts +30 -0
  63. package/dist/util/create-options.js +2 -3
  64. package/dist/util/path.d.ts +1 -0
  65. package/dist/util/path.js +1 -0
  66. package/dist/util/scripts.d.ts +3 -2
  67. package/dist/util/scripts.js +32 -72
  68. package/dist/version.d.ts +1 -1
  69. package/dist/version.js +1 -1
  70. package/package.json +5 -5
  71. package/schema.json +12 -0
@@ -44,5 +44,5 @@ export const resolveFromAST = (program, options) => {
44
44
  visitor.visit(program);
45
45
  }
46
46
  catch { }
47
- return Array.from(entries).map(specifier => toDeferResolveProductionEntry(specifier, { containingFilePath: options.configFilePath }));
47
+ return Array.from(entries).map(specifier => toDeferResolveProductionEntry(specifier));
48
48
  };
@@ -1,8 +1,6 @@
1
1
  import scss from '../../compilers/scss.js';
2
- import { IMPORT_FLAGS } from '../../constants.js';
3
- import { getPropertyValues } from '../../typescript/ast-helpers.js';
4
- import { dirname, join } from '../../util/path.js';
5
2
  import { hasDependency } from '../../util/plugin.js';
3
+ import { createComponentStyleUrlsVisitor } from '../_component-style-urls/component-style-urls-visitor.js';
6
4
  import { createCustomElementVisitor } from '../_custom-elements/custom-element-visitor.js';
7
5
  import { entry, resolveFromAST } from './resolveFromAST.js';
8
6
  const title = 'Stencil';
@@ -18,42 +16,7 @@ const registerCompilers = ({ hasDependency, registerCompiler }) => {
18
16
  };
19
17
  const registerVisitors = ({ ctx, registerVisitor }) => {
20
18
  registerVisitor(createCustomElementVisitor(ctx, isStencilSpecifier, { decoratorName: 'Component' }));
21
- const componentNames = new Set();
22
- registerVisitor({
23
- Program() {
24
- componentNames.clear();
25
- },
26
- ImportDeclaration(node) {
27
- if (!isStencilSpecifier(node.source?.value))
28
- return;
29
- for (const spec of node.specifiers ?? []) {
30
- if (spec.type === 'ImportSpecifier' &&
31
- spec.imported.type === 'Identifier' &&
32
- spec.imported.name === 'Component')
33
- componentNames.add(spec.local.name);
34
- }
35
- },
36
- ClassDeclaration(node) {
37
- resolveStyleUrls(node);
38
- },
39
- });
40
- function resolveStyleUrls(node) {
41
- const dir = dirname(ctx.filePath);
42
- for (const decorator of node.decorators ?? []) {
43
- const expr = decorator.expression;
44
- if (expr?.type !== 'CallExpression')
45
- continue;
46
- if (expr.callee?.type !== 'Identifier' || !componentNames.has(expr.callee.name))
47
- continue;
48
- const arg = expr.arguments?.[0];
49
- if (arg?.type !== 'ObjectExpression')
50
- continue;
51
- for (const url of getPropertyValues(arg, 'styleUrl'))
52
- ctx.addImport(join(dir, url), arg.start, IMPORT_FLAGS.NONE);
53
- for (const url of getPropertyValues(arg, 'styleUrls'))
54
- ctx.addImport(join(dir, url), arg.start, IMPORT_FLAGS.NONE);
55
- }
56
- }
19
+ registerVisitor(createComponentStyleUrlsVisitor(ctx, isStencilSpecifier));
57
20
  };
58
21
  const plugin = {
59
22
  title,
@@ -12,7 +12,7 @@ const restEntry = ['.{storybook,rnstorybook}/{manager,preview,index,vitest.setup
12
12
  const entry = [...restEntry, ...stories];
13
13
  const project = ['.{storybook,rnstorybook}/**/*.{js,jsx,ts,tsx,mts}'];
14
14
  const resolveConfig = async (localConfig, options) => {
15
- const { cwd, configFileDir, configFilePath } = options;
15
+ const { cwd, configFileDir } = options;
16
16
  const strs = typeof localConfig?.stories === 'function' ? await localConfig.stories(stories) : localConfig?.stories;
17
17
  const relativePatterns = strs?.map(pattern => {
18
18
  if (typeof pattern === 'string')
@@ -37,9 +37,7 @@ const resolveConfig = async (localConfig, options) => {
37
37
  const viteConfigPath = typeof framework === 'object' &&
38
38
  framework?.name === '@storybook/react-vite' &&
39
39
  framework?.options?.builder?.viteConfigPath;
40
- const configs = viteConfigPath
41
- ? [toConfig('vite', viteConfigPath, { dir: cwd, containingFilePath: configFilePath })]
42
- : [];
40
+ const configs = viteConfigPath ? [toConfig('vite', viteConfigPath, { dir: cwd })] : [];
43
41
  const hasVitestAddon = addons.some(addon => addon === '@storybook/addon-vitest');
44
42
  const coverageDeps = hasVitestAddon
45
43
  ? [
@@ -1,6 +1,6 @@
1
1
  import parseArgs from '../../util/parse-args.js';
2
2
  import { parse } from 'unbash';
3
- import { getCommandWords, walkCommands } from '../../util/scripts.js';
3
+ import { getCommandWords, collectCommands } from '../../util/scripts.js';
4
4
  const BIN = 'svelte-package';
5
5
  export const DEFAULT_INPUT = 'src/lib';
6
6
  export const DEFAULT_OUTPUT = 'dist';
@@ -16,7 +16,7 @@ export const parseScripts = (scripts) => {
16
16
  try {
17
17
  const parsed = parse(script);
18
18
  for (const statement of parsed.commands) {
19
- for (const node of walkCommands(statement.command)) {
19
+ for (const node of collectCommands(statement.command)) {
20
20
  if (node.name?.value === BIN)
21
21
  out.push(parseCommandIO(getCommandWords(node).map(word => word.value)));
22
22
  }
@@ -1,13 +1,21 @@
1
+ import { getUrlSpecifier } from '../../compilers/shared.js';
1
2
  import { hasUrlScheme } from '../../util/url.js';
2
- const directiveMatcher = /"(?:\\(?:\r\n|[\s\S]|$)|[^"\\\r\n\f])*(?:"|[\r\n\f]|$)|'(?:\\(?:\r\n|[\s\S]|$)|[^'\\\r\n\f])*(?:'|[\r\n\f]|$)|\/\*[\s\S]*?(?:\*\/|$)|@(?:(?:import|config|plugin)\s+['"]([^'"]+)['"]|import\s+url\(\s*(?:['"]([^'"]+)['"]|([^'")\s]+))\s*\))[^;]*;/g;
3
+ const directiveMatcher = /"(?:\\(?:\r\n|[\s\S]|$)|[^"\\\r\n\f])*(?:"|[\r\n\f]|$)|'(?:\\(?:\r\n|[\s\S]|$)|[^'\\\r\n\f])*(?:'|[\r\n\f]|$)|\/\*[\s\S]*?(?:\*\/|$)|@(?:(?:import|config|plugin)\s+['"]([^'"]+)['"]|import\s+url\(\s*(?:['"]([^'"]+)['"]|([^'")\s]+))\s*\))[^;]*;|url\(\s*(?:["']([^"'\r\n]*)["']|([^'")\s]+))\s*\)/g;
3
4
  const compiler = (text) => {
4
- if (!text.includes('@import') && !text.includes('@config') && !text.includes('@plugin'))
5
+ if (!text.includes('@import') && !text.includes('@config') && !text.includes('@plugin') && !text.includes('url('))
5
6
  return '';
6
7
  const imports = [];
7
8
  let match;
8
9
  let index = 0;
9
10
  directiveMatcher.lastIndex = 0;
10
11
  while ((match = directiveMatcher.exec(text))) {
12
+ const asset = match[4] ?? match[5];
13
+ if (asset !== undefined) {
14
+ const specifier = getUrlSpecifier(asset);
15
+ if (specifier)
16
+ imports.push(`import _$${index++} from '${specifier}';`);
17
+ continue;
18
+ }
11
19
  const url = match[2] ?? match[3];
12
20
  const specifier = match[1] ?? url;
13
21
  if (!specifier || (url && (url.startsWith('//') || hasUrlScheme(url))))
@@ -78,7 +78,7 @@ const extractScriptsFromTask = (task) => {
78
78
  const resolveConfig = async (localConfig, options) => {
79
79
  if (!localConfig || !options.configFilePath)
80
80
  return [];
81
- const { configFilePath, getInputsFromScripts, isProduction, configFileDir } = options;
81
+ const { getInputsFromScripts, isProduction, configFileDir } = options;
82
82
  const inputs = [];
83
83
  if (localConfig.includes && typeof localConfig.includes === 'object') {
84
84
  for (const includeValue of Object.values(localConfig.includes)) {
@@ -89,17 +89,14 @@ const resolveConfig = async (localConfig, options) => {
89
89
  : undefined;
90
90
  if (includePath) {
91
91
  const resolvedPath = join(configFileDir, includePath);
92
- inputs.push(toConfig('taskfile', relative(configFileDir, resolvedPath), { containingFilePath: configFilePath }));
92
+ inputs.push(toConfig('taskfile', relative(configFileDir, resolvedPath)));
93
93
  }
94
94
  }
95
95
  }
96
96
  if (localConfig.tasks && typeof localConfig.tasks === 'object') {
97
97
  for (const task of Object.values(localConfig.tasks)) {
98
98
  for (const script of extractScriptsFromTask(task)) {
99
- for (const input of getInputsFromScripts([script], {
100
- optionalBinaries: true,
101
- containingFilePath: configFilePath,
102
- })) {
99
+ for (const input of getInputsFromScripts([script], { optionalBinaries: true })) {
103
100
  if (isProduction)
104
101
  Object.assign(input, { optional: true });
105
102
  inputs.push({ ...input, dir: configFileDir });
@@ -0,0 +1,3 @@
1
+ import type { Plugin } from '../../types/config.ts';
2
+ declare const plugin: Plugin;
3
+ export default plugin;
@@ -0,0 +1,15 @@
1
+ import { hasDependency } from '../../util/plugin.js';
2
+ import { args as typescriptArgs, config, resolveConfig } from '../typescript/index.js';
3
+ const title = 'tsrs';
4
+ const enablers = ['tsrs'];
5
+ const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
6
+ const args = { ...typescriptArgs, binaries: ['tsrs'] };
7
+ const plugin = {
8
+ title,
9
+ enablers,
10
+ isEnabled,
11
+ config,
12
+ resolveConfig,
13
+ args,
14
+ };
15
+ export default plugin;
@@ -1,4 +1,15 @@
1
- import type { Plugin } from '../../types/config.ts';
1
+ import type { Plugin, ResolveConfig } from '../../types/config.ts';
2
+ import type { TsConfigJson } from '../../types/tsconfig-json.ts';
3
+ export declare const config: string[];
4
+ export declare const resolveConfig: ResolveConfig<TsConfigJson>;
5
+ export declare const args: {
6
+ binaries: string[];
7
+ string: string[];
8
+ alias: {
9
+ project: string[];
10
+ };
11
+ config: [string, (p: string) => string][];
12
+ };
2
13
  export declare const docs: {
3
14
  note: string;
4
15
  };
@@ -6,7 +6,7 @@ import { contentMapperResolvers } from './content-mappers.js';
6
6
  const title = 'TypeScript';
7
7
  const enablers = ['typescript', '@typescript/native', '@typescript/native-preview'];
8
8
  const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
9
- const config = ['tsconfig.json'];
9
+ export const config = ['tsconfig.json'];
10
10
  const resolveContentMappers = (localConfig) => {
11
11
  const inputs = [];
12
12
  for (const { package: name, options } of localConfig.contentMappers ?? []) {
@@ -17,16 +17,14 @@ const resolveContentMappers = (localConfig) => {
17
17
  }
18
18
  return inputs;
19
19
  };
20
- const resolveConfig = (localConfig, options) => {
20
+ export const resolveConfig = (localConfig, options) => {
21
21
  const { compilerOptions } = localConfig;
22
22
  const extend = localConfig.extends
23
- ? [localConfig.extends]
24
- .flat()
25
- .map(specifier => toConfig('typescript', specifier, { containingFilePath: options.configFilePath }))
23
+ ? [localConfig.extends].flat().map(specifier => toConfig(options.pluginName, specifier))
26
24
  : [];
27
25
  const references = localConfig.references
28
26
  ?.filter(reference => reference.path.endsWith('.json'))
29
- .map(reference => toConfig('typescript', reference.path, { containingFilePath: options.configFilePath })) ?? [];
27
+ .map(reference => toConfig(options.pluginName, reference.path)) ?? [];
30
28
  const contentMappers = resolveContentMappers(localConfig);
31
29
  if (!(compilerOptions && localConfig))
32
30
  return compact([...contentMappers, ...extend, ...references]);
@@ -45,7 +43,7 @@ const resolveConfig = (localConfig, options) => {
45
43
  ...jsx,
46
44
  ]);
47
45
  };
48
- const args = {
46
+ export const args = {
49
47
  binaries: ['tsc', 'tsgo'],
50
48
  string: ['project'],
51
49
  alias: { project: ['p'] },
@@ -4,3 +4,4 @@ export declare const getBabelInputs: (program: Program) => Input[];
4
4
  export declare const getHtmlScriptEntries: (htmlPath: string, rootDir?: string, publicDir?: string) => Promise<Input[]>;
5
5
  export declare const getIndexHtmlEntries: (rootDir: string, publicDir?: string) => Promise<Input[]>;
6
6
  export declare const getVitePluginDirs: (program: Program, specifiers: string[], key: string) => string[] | undefined;
7
+ export declare const getViteRoot: (program: Program, cwd: string) => string;
@@ -1,5 +1,5 @@
1
1
  import { blockCommentMatcher, lineCommentMatcher, scriptExtractor } from '../../compilers/compilers.js';
2
- import { findImportedCalls, findProperty, getStringValues } from '../../typescript/ast-helpers.js';
2
+ import { findImportedCalls, findProperty, getStringValues, resolveObjectArg } from '../../typescript/ast-helpers.js';
3
3
  import { getStringValue } from '../../typescript/ast-nodes.js';
4
4
  import { isFile, loadFile } from '../../util/fs.js';
5
5
  import { toProductionEntry } from '../../util/input.js';
@@ -90,3 +90,17 @@ export const getVitePluginDirs = (program, specifiers, key) => {
90
90
  }
91
91
  return dirs;
92
92
  };
93
+ const unwrapExpression = (node) => node.type === 'TSSatisfiesExpression' || node.type === 'TSAsExpression' || node.type === 'ParenthesizedExpression'
94
+ ? unwrapExpression(node.expression)
95
+ : node;
96
+ export const getViteRoot = (program, cwd) => {
97
+ for (const node of program.body) {
98
+ if (node.type !== 'ExportDefaultDeclaration')
99
+ continue;
100
+ const declaration = unwrapExpression(node.declaration);
101
+ const arg = declaration.type === 'CallExpression' ? declaration.arguments[0] : declaration;
102
+ const config = resolveObjectArg(arg && arg.type !== 'SpreadElement' ? unwrapExpression(arg) : undefined);
103
+ return toAbsolute(getStringValue(findProperty(config, 'root')) ?? '.', cwd);
104
+ }
105
+ return cwd;
106
+ };
@@ -122,11 +122,11 @@ export const resolveConfig = async (localConfig, options) => {
122
122
  gitignore: false,
123
123
  });
124
124
  for (const projectFile of projectFiles) {
125
- inputs.add(toConfig('vitest', projectFile, { containingFilePath: options.configFilePath }));
125
+ inputs.add(toConfig('vitest', projectFile));
126
126
  }
127
127
  }
128
128
  else if (typeof project.extends === 'string') {
129
- inputs.add(toConfig('vitest', project.extends, { containingFilePath: options.configFilePath }));
129
+ inputs.add(toConfig('vitest', project.extends));
130
130
  }
131
131
  }
132
132
  }
@@ -156,7 +156,7 @@ export const resolveConfig = async (localConfig, options) => {
156
156
  : toAbsolute('.', options.configFileDir);
157
157
  const vitestRoot = !cfg.test?.root && cfg.root && !options.isResolvedConfigFile ? toAbsolute(cfg.root, options.cwd) : testRoot;
158
158
  const dir = cfg.test?.dir ? toAbsolute(cfg.test.dir, testRoot) : vitestRoot;
159
- if (cfg.test) {
159
+ if (cfg.test || options.pluginName === 'vitest') {
160
160
  if (cfg.test?.include) {
161
161
  for (const dependency of cfg.test.include)
162
162
  dependency[0] !== '!' && inputs.add(toEntry(join(dir, dependency)));
@@ -171,7 +171,7 @@ export const resolveConfig = async (localConfig, options) => {
171
171
  if (!options.config.entry)
172
172
  for (const dependency of mocks)
173
173
  inputs.add(toEntry(join(vitestRoot, dependency)));
174
- if (cfg.test.alias)
174
+ if (cfg.test?.alias)
175
175
  addAliases(cfg.test.alias);
176
176
  }
177
177
  if (cfg.resolve?.alias)
@@ -196,6 +196,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
196
196
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
197
197
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
198
198
  }, z.core.$strip>]>>;
199
+ 'filesystem-routing': z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
200
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
201
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
202
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
203
+ }, z.core.$strip>]>>;
199
204
  flue: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
200
205
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
201
206
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -666,6 +671,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
666
671
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
667
672
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
668
673
  }, z.core.$strip>]>>;
674
+ 'solidjs-vite-plugin': z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
675
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
676
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
677
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
678
+ }, z.core.$strip>]>>;
669
679
  sst: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
670
680
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
671
681
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -781,6 +791,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
781
791
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
782
792
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
783
793
  }, z.core.$strip>]>>;
794
+ tsrs: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
795
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
796
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
797
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
798
+ }, z.core.$strip>]>>;
784
799
  tsup: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
785
800
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
786
801
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -1173,6 +1188,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
1173
1188
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1174
1189
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1175
1190
  }, z.core.$strip>]>>;
1191
+ 'filesystem-routing': z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1192
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1193
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1194
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1195
+ }, z.core.$strip>]>>;
1176
1196
  flue: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1177
1197
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1178
1198
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -1643,6 +1663,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
1643
1663
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1644
1664
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1645
1665
  }, z.core.$strip>]>>;
1666
+ 'solidjs-vite-plugin': z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1667
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1668
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1669
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1670
+ }, z.core.$strip>]>>;
1646
1671
  sst: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1647
1672
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1648
1673
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -1758,6 +1783,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
1758
1783
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1759
1784
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1760
1785
  }, z.core.$strip>]>>;
1786
+ tsrs: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1787
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1788
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1789
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1790
+ }, z.core.$strip>]>>;
1761
1791
  tsup: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1762
1792
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1763
1793
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -2169,6 +2199,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
2169
2199
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2170
2200
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2171
2201
  }, z.core.$strip>]>>;
2202
+ 'filesystem-routing': z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2203
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2204
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2205
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2206
+ }, z.core.$strip>]>>;
2172
2207
  flue: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2173
2208
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2174
2209
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -2639,6 +2674,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
2639
2674
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2640
2675
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2641
2676
  }, z.core.$strip>]>>;
2677
+ 'solidjs-vite-plugin': z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2678
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2679
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2680
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2681
+ }, z.core.$strip>]>>;
2642
2682
  sst: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2643
2683
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2644
2684
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -2754,6 +2794,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
2754
2794
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2755
2795
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2756
2796
  }, z.core.$strip>]>>;
2797
+ tsrs: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2798
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2799
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2800
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2801
+ }, z.core.$strip>]>>;
2757
2802
  tsup: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2758
2803
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2759
2804
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -201,6 +201,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
201
201
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
202
202
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
203
203
  }, z.core.$strip>]>;
204
+ 'filesystem-routing': z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
205
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
206
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
207
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
208
+ }, z.core.$strip>]>;
204
209
  flue: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
205
210
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
206
211
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -671,6 +676,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
671
676
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
672
677
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
673
678
  }, z.core.$strip>]>;
679
+ 'solidjs-vite-plugin': z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
680
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
681
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
682
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
683
+ }, z.core.$strip>]>;
674
684
  sst: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
675
685
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
676
686
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -786,6 +796,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
786
796
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
787
797
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
788
798
  }, z.core.$strip>]>;
799
+ tsrs: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
800
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
801
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
802
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
803
+ }, z.core.$strip>]>;
789
804
  tsup: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
790
805
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
791
806
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -49,6 +49,7 @@ export const pluginsSchema = z.object({
49
49
  'expo-router': pluginSchema,
50
50
  'expressive-code': pluginSchema,
51
51
  fast: pluginSchema,
52
+ 'filesystem-routing': pluginSchema,
52
53
  flue: pluginSchema,
53
54
  fumadocs: pluginSchema,
54
55
  gatsby: pluginSchema,
@@ -143,6 +144,7 @@ export const pluginsSchema = z.object({
143
144
  'serverless-framework': pluginSchema,
144
145
  'simple-git-hooks': pluginSchema,
145
146
  'size-limit': pluginSchema,
147
+ 'solidjs-vite-plugin': pluginSchema,
146
148
  sst: pluginSchema,
147
149
  starlight: pluginSchema,
148
150
  stencil: pluginSchema,
@@ -166,6 +168,7 @@ export const pluginsSchema = z.object({
166
168
  'ts-node': pluginSchema,
167
169
  tsd: pluginSchema,
168
170
  tsdown: pluginSchema,
171
+ tsrs: pluginSchema,
169
172
  tsup: pluginSchema,
170
173
  tsx: pluginSchema,
171
174
  turbo: pluginSchema,
@@ -1,2 +1,2 @@
1
- export type PluginName = 'angular' | 'astro' | 'astro-db' | 'astro-markdoc' | 'astro-og-canvas' | 'ava' | 'babel' | 'biome' | 'borp' | 'bumpp' | 'bun' | 'c8' | 'capacitor' | 'catalyst' | 'changelogen' | 'changelogithub' | 'changesets' | 'commitizen' | 'commitlint' | 'convex' | 'create-typescript-app' | 'cspell' | 'cucumber' | 'cypress' | 'danger' | 'dependency-cruiser' | 'docusaurus' | 'dotenv' | 'drizzle' | 'electron-vite' | 'eleventy' | 'esbuild' | 'eslint' | 'eve' | 'execa' | 'expo' | 'expo-router' | 'expressive-code' | 'fast' | 'flue' | 'fumadocs' | 'gatsby' | 'github-action' | 'github-actions' | 'glob' | 'graphql-codegen' | 'hardhat' | 'husky' | 'i18next-parser' | 'jasmine' | 'jest' | 'karma' | 'knex' | 'ladle' | 'laravel-vite-plugin' | 'lefthook' | 'lint-staged' | 'linthtml' | 'lit' | 'lockfile-lint' | 'lost-pixel' | 'lunaria' | 'markdownlint' | 'marko' | 'mdx' | 'mdxlint' | 'metro' | 'mise' | 'mocha' | 'moonrepo' | 'msw' | 'nano-spawn' | 'nano-staged' | 'nest' | 'netlify' | 'next' | 'next-intl' | 'next-mdx' | 'nitro' | 'node' | 'node-modules-inspector' | 'nodemon' | 'npm-package-json-lint' | 'nuxt' | 'nuxtjs-i18n' | 'nx' | 'nyc' | 'oclif' | 'openapi-ts' | 'openclaw' | 'orval' | 'osls' | 'oxfmt' | 'oxlint' | 'panda-css' | 'parcel' | 'payload' | 'pino' | 'playwright' | 'playwright-ct' | 'playwright-test' | 'plop' | 'pm2' | 'pnpm' | 'postcss' | 'pre-commit' | 'preconstruct' | 'prettier' | 'prisma' | 'quasar' | 'qwik' | 'railway' | 'raycast' | 'react-cosmos' | 'react-email' | 'react-native' | 'react-router' | 'relay' | 'release-it' | 'remark' | 'remix' | 'rolldown' | 'rollup' | 'rsbuild' | 'rslib' | 'rspack' | 'rstest' | 'sanity' | 'semantic-release' | 'sentry' | 'serverless-framework' | 'simple-git-hooks' | 'size-limit' | 'sst' | 'starlight' | 'stencil' | 'storybook' | 'stryker' | 'stylelint' | 'svelte' | 'sveltejs-package' | 'sveltekit' | 'svgo' | 'svgr' | 'swc' | 'syncpack' | 'tailwind' | 'tanstack-router' | 'taskfile' | 'tauri' | 'temporal' | 'textlint' | 'travis' | 'ts-node' | 'tsd' | 'tsdown' | 'tsup' | 'tsx' | 'turbo' | 'typedoc' | 'typescript' | 'typescript-content-mapper' | 'unbuild' | 'unocss' | 'unplugin-auto-import' | 'unplugin-icons' | 'unplugin-vue-components' | 'unplugin-vue-i18n' | 'unplugin-vue-markdown' | 'unplugin-vue-router' | 'varlock' | 'vercel' | 'vercel-og' | 'vike' | 'vite' | 'vite-plugin-pages' | 'vite-plugin-pwa' | 'vite-plugin-vue-layouts-next' | 'vite-plus' | 'vite-pwa-assets-generator' | 'vitepress' | 'vitest' | 'vue' | 'webdriver-io' | 'webpack' | 'wireit' | 'wrangler' | 'wxt' | 'xo' | 'yarn' | 'yorkie' | 'zx';
2
- export declare const pluginNames: readonly ['angular', 'astro', 'astro-db', 'astro-markdoc', 'astro-og-canvas', 'ava', 'babel', 'biome', 'borp', 'bumpp', 'bun', 'c8', 'capacitor', 'catalyst', 'changelogen', 'changelogithub', 'changesets', 'commitizen', 'commitlint', 'convex', 'create-typescript-app', 'cspell', 'cucumber', 'cypress', 'danger', 'dependency-cruiser', 'docusaurus', 'dotenv', 'drizzle', 'electron-vite', 'eleventy', 'esbuild', 'eslint', 'eve', 'execa', 'expo', 'expo-router', 'expressive-code', 'fast', 'flue', 'fumadocs', 'gatsby', 'github-action', 'github-actions', 'glob', 'graphql-codegen', 'hardhat', 'husky', 'i18next-parser', 'jasmine', 'jest', 'karma', 'knex', 'ladle', 'laravel-vite-plugin', 'lefthook', 'lint-staged', 'linthtml', 'lit', 'lockfile-lint', 'lost-pixel', 'lunaria', 'markdownlint', 'marko', 'mdx', 'mdxlint', 'metro', 'mise', 'mocha', 'moonrepo', 'msw', 'nano-spawn', 'nano-staged', 'nest', 'netlify', 'next', 'next-intl', 'next-mdx', 'nitro', 'node', 'node-modules-inspector', 'nodemon', 'npm-package-json-lint', 'nuxt', 'nuxtjs-i18n', 'nx', 'nyc', 'oclif', 'openapi-ts', 'openclaw', 'orval', 'osls', 'oxfmt', 'oxlint', 'panda-css', 'parcel', 'payload', 'pino', 'playwright', 'playwright-ct', 'playwright-test', 'plop', 'pm2', 'pnpm', 'postcss', 'pre-commit', 'preconstruct', 'prettier', 'prisma', 'quasar', 'qwik', 'railway', 'raycast', 'react-cosmos', 'react-email', 'react-native', 'react-router', 'relay', 'release-it', 'remark', 'remix', 'rolldown', 'rollup', 'rsbuild', 'rslib', 'rspack', 'rstest', 'sanity', 'semantic-release', 'sentry', 'serverless-framework', 'simple-git-hooks', 'size-limit', 'sst', 'starlight', 'stencil', 'storybook', 'stryker', 'stylelint', 'svelte', 'sveltejs-package', 'sveltekit', 'svgo', 'svgr', 'swc', 'syncpack', 'tailwind', 'tanstack-router', 'taskfile', 'tauri', 'temporal', 'textlint', 'travis', 'ts-node', 'tsd', 'tsdown', 'tsup', 'tsx', 'turbo', 'typedoc', 'typescript', 'typescript-content-mapper', 'unbuild', 'unocss', 'unplugin-auto-import', 'unplugin-icons', 'unplugin-vue-components', 'unplugin-vue-i18n', 'unplugin-vue-markdown', 'unplugin-vue-router', 'varlock', 'vercel', 'vercel-og', 'vike', 'vite', 'vite-plugin-pages', 'vite-plugin-pwa', 'vite-plugin-vue-layouts-next', 'vite-plus', 'vite-pwa-assets-generator', 'vitepress', 'vitest', 'vue', 'webdriver-io', 'webpack', 'wireit', 'wrangler', 'wxt', 'xo', 'yarn', 'yorkie', 'zx'];
1
+ export type PluginName = 'angular' | 'astro' | 'astro-db' | 'astro-markdoc' | 'astro-og-canvas' | 'ava' | 'babel' | 'biome' | 'borp' | 'bumpp' | 'bun' | 'c8' | 'capacitor' | 'catalyst' | 'changelogen' | 'changelogithub' | 'changesets' | 'commitizen' | 'commitlint' | 'convex' | 'create-typescript-app' | 'cspell' | 'cucumber' | 'cypress' | 'danger' | 'dependency-cruiser' | 'docusaurus' | 'dotenv' | 'drizzle' | 'electron-vite' | 'eleventy' | 'esbuild' | 'eslint' | 'eve' | 'execa' | 'expo' | 'expo-router' | 'expressive-code' | 'fast' | 'filesystem-routing' | 'flue' | 'fumadocs' | 'gatsby' | 'github-action' | 'github-actions' | 'glob' | 'graphql-codegen' | 'hardhat' | 'husky' | 'i18next-parser' | 'jasmine' | 'jest' | 'karma' | 'knex' | 'ladle' | 'laravel-vite-plugin' | 'lefthook' | 'lint-staged' | 'linthtml' | 'lit' | 'lockfile-lint' | 'lost-pixel' | 'lunaria' | 'markdownlint' | 'marko' | 'mdx' | 'mdxlint' | 'metro' | 'mise' | 'mocha' | 'moonrepo' | 'msw' | 'nano-spawn' | 'nano-staged' | 'nest' | 'netlify' | 'next' | 'next-intl' | 'next-mdx' | 'nitro' | 'node' | 'node-modules-inspector' | 'nodemon' | 'npm-package-json-lint' | 'nuxt' | 'nuxtjs-i18n' | 'nx' | 'nyc' | 'oclif' | 'openapi-ts' | 'openclaw' | 'orval' | 'osls' | 'oxfmt' | 'oxlint' | 'panda-css' | 'parcel' | 'payload' | 'pino' | 'playwright' | 'playwright-ct' | 'playwright-test' | 'plop' | 'pm2' | 'pnpm' | 'postcss' | 'pre-commit' | 'preconstruct' | 'prettier' | 'prisma' | 'quasar' | 'qwik' | 'railway' | 'raycast' | 'react-cosmos' | 'react-email' | 'react-native' | 'react-router' | 'relay' | 'release-it' | 'remark' | 'remix' | 'rolldown' | 'rollup' | 'rsbuild' | 'rslib' | 'rspack' | 'rstest' | 'sanity' | 'semantic-release' | 'sentry' | 'serverless-framework' | 'simple-git-hooks' | 'size-limit' | 'solidjs-vite-plugin' | 'sst' | 'starlight' | 'stencil' | 'storybook' | 'stryker' | 'stylelint' | 'svelte' | 'sveltejs-package' | 'sveltekit' | 'svgo' | 'svgr' | 'swc' | 'syncpack' | 'tailwind' | 'tanstack-router' | 'taskfile' | 'tauri' | 'temporal' | 'textlint' | 'travis' | 'ts-node' | 'tsd' | 'tsdown' | 'tsrs' | 'tsup' | 'tsx' | 'turbo' | 'typedoc' | 'typescript' | 'typescript-content-mapper' | 'unbuild' | 'unocss' | 'unplugin-auto-import' | 'unplugin-icons' | 'unplugin-vue-components' | 'unplugin-vue-i18n' | 'unplugin-vue-markdown' | 'unplugin-vue-router' | 'varlock' | 'vercel' | 'vercel-og' | 'vike' | 'vite' | 'vite-plugin-pages' | 'vite-plugin-pwa' | 'vite-plugin-vue-layouts-next' | 'vite-plus' | 'vite-pwa-assets-generator' | 'vitepress' | 'vitest' | 'vue' | 'webdriver-io' | 'webpack' | 'wireit' | 'wrangler' | 'wxt' | 'xo' | 'yarn' | 'yorkie' | 'zx';
2
+ export declare const pluginNames: readonly ['angular', 'astro', 'astro-db', 'astro-markdoc', 'astro-og-canvas', 'ava', 'babel', 'biome', 'borp', 'bumpp', 'bun', 'c8', 'capacitor', 'catalyst', 'changelogen', 'changelogithub', 'changesets', 'commitizen', 'commitlint', 'convex', 'create-typescript-app', 'cspell', 'cucumber', 'cypress', 'danger', 'dependency-cruiser', 'docusaurus', 'dotenv', 'drizzle', 'electron-vite', 'eleventy', 'esbuild', 'eslint', 'eve', 'execa', 'expo', 'expo-router', 'expressive-code', 'fast', 'filesystem-routing', 'flue', 'fumadocs', 'gatsby', 'github-action', 'github-actions', 'glob', 'graphql-codegen', 'hardhat', 'husky', 'i18next-parser', 'jasmine', 'jest', 'karma', 'knex', 'ladle', 'laravel-vite-plugin', 'lefthook', 'lint-staged', 'linthtml', 'lit', 'lockfile-lint', 'lost-pixel', 'lunaria', 'markdownlint', 'marko', 'mdx', 'mdxlint', 'metro', 'mise', 'mocha', 'moonrepo', 'msw', 'nano-spawn', 'nano-staged', 'nest', 'netlify', 'next', 'next-intl', 'next-mdx', 'nitro', 'node', 'node-modules-inspector', 'nodemon', 'npm-package-json-lint', 'nuxt', 'nuxtjs-i18n', 'nx', 'nyc', 'oclif', 'openapi-ts', 'openclaw', 'orval', 'osls', 'oxfmt', 'oxlint', 'panda-css', 'parcel', 'payload', 'pino', 'playwright', 'playwright-ct', 'playwright-test', 'plop', 'pm2', 'pnpm', 'postcss', 'pre-commit', 'preconstruct', 'prettier', 'prisma', 'quasar', 'qwik', 'railway', 'raycast', 'react-cosmos', 'react-email', 'react-native', 'react-router', 'relay', 'release-it', 'remark', 'remix', 'rolldown', 'rollup', 'rsbuild', 'rslib', 'rspack', 'rstest', 'sanity', 'semantic-release', 'sentry', 'serverless-framework', 'simple-git-hooks', 'size-limit', 'solidjs-vite-plugin', 'sst', 'starlight', 'stencil', 'storybook', 'stryker', 'stylelint', 'svelte', 'sveltejs-package', 'sveltekit', 'svgo', 'svgr', 'swc', 'syncpack', 'tailwind', 'tanstack-router', 'taskfile', 'tauri', 'temporal', 'textlint', 'travis', 'ts-node', 'tsd', 'tsdown', 'tsrs', 'tsup', 'tsx', 'turbo', 'typedoc', 'typescript', 'typescript-content-mapper', 'unbuild', 'unocss', 'unplugin-auto-import', 'unplugin-icons', 'unplugin-vue-components', 'unplugin-vue-i18n', 'unplugin-vue-markdown', 'unplugin-vue-router', 'varlock', 'vercel', 'vercel-og', 'vike', 'vite', 'vite-plugin-pages', 'vite-plugin-pwa', 'vite-plugin-vue-layouts-next', 'vite-plus', 'vite-pwa-assets-generator', 'vitepress', 'vitest', 'vue', 'webdriver-io', 'webpack', 'wireit', 'wrangler', 'wxt', 'xo', 'yarn', 'yorkie', 'zx'];
@@ -38,6 +38,7 @@ export const pluginNames = [
38
38
  'expo-router',
39
39
  'expressive-code',
40
40
  'fast',
41
+ 'filesystem-routing',
41
42
  'flue',
42
43
  'fumadocs',
43
44
  'gatsby',
@@ -132,6 +133,7 @@ export const pluginNames = [
132
133
  'serverless-framework',
133
134
  'simple-git-hooks',
134
135
  'size-limit',
136
+ 'solidjs-vite-plugin',
135
137
  'sst',
136
138
  'starlight',
137
139
  'stencil',
@@ -155,6 +157,7 @@ export const pluginNames = [
155
157
  'ts-node',
156
158
  'tsd',
157
159
  'tsdown',
160
+ 'tsrs',
158
161
  'tsup',
159
162
  'tsx',
160
163
  'turbo',
@@ -96,6 +96,7 @@ type IsPluginEnabledOptions = {
96
96
  };
97
97
  export type IsPluginEnabled = (options: IsPluginEnabledOptions) => boolean | Promise<boolean>;
98
98
  export interface PluginOptions extends BaseOptions {
99
+ pluginName: PluginName;
99
100
  config: EnsuredPluginConfiguration;
100
101
  configFileDir: string;
101
102
  configFileName: string;
@@ -100,6 +100,8 @@ export function handleVariableDeclarator(node, s) {
100
100
  const bindings = node.id.elements;
101
101
  for (let i = 0; i < imports.length; i++) {
102
102
  const imp = imports[i];
103
+ if (imp?.type === 'SpreadElement')
104
+ break;
103
105
  const binding = bindings[i];
104
106
  if (imp?.type === 'ImportExpression' && isStringLiteral(imp.source)) {
105
107
  s.handledImportExpressions.add(imp.start);
@@ -118,6 +120,15 @@ export function handleVariableDeclarator(node, s) {
118
120
  }
119
121
  else if (binding?.type === 'Identifier') {
120
122
  s.addImport(specifier, 'default', binding.name, undefined, imp.source.start, IMPORT_FLAGS.DYNAMIC);
123
+ const resolved = s.resolveModule(specifier, s.filePath);
124
+ if (resolved && !resolved.isExternalLibraryImport && !isInNodeModules(resolved.resolvedFileName)) {
125
+ s.localImportMap.set(binding.name, {
126
+ importedName: IMPORT_STAR,
127
+ filePath: resolved.resolvedFileName,
128
+ isNamespace: true,
129
+ isDynamicImport: true,
130
+ });
131
+ }
121
132
  }
122
133
  else {
123
134
  s.addImport(specifier, undefined, undefined, undefined, imp.source.start, IMPORT_FLAGS.DYNAMIC | IMPORT_FLAGS.SIDE_EFFECTS);