knip 6.39.0 → 6.40.0

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 (55) hide show
  1. package/dist/ConfigurationChief.d.ts +12 -0
  2. package/dist/WorkspaceWorker.d.ts +3 -4
  3. package/dist/WorkspaceWorker.js +12 -38
  4. package/dist/compilers/compilers.js +1 -1
  5. package/dist/graph/build.js +17 -10
  6. package/dist/plugins/capacitor/index.js +1 -1
  7. package/dist/plugins/commitlint/index.js +34 -9
  8. package/dist/plugins/eslint/resolveFromAST.d.ts +0 -1
  9. package/dist/plugins/eslint/resolveFromAST.js +1 -1
  10. package/dist/plugins/index.d.ts +2 -0
  11. package/dist/plugins/index.js +4 -0
  12. package/dist/plugins/jasmine/index.d.ts +3 -0
  13. package/dist/plugins/jasmine/index.js +55 -0
  14. package/dist/plugins/jasmine/types.d.ts +7 -0
  15. package/dist/plugins/jasmine/types.js +1 -0
  16. package/dist/plugins/jest/helpers.d.ts +1 -0
  17. package/dist/plugins/jest/helpers.js +2 -0
  18. package/dist/plugins/jest/index.js +20 -11
  19. package/dist/plugins/osls/index.d.ts +3 -0
  20. package/dist/plugins/osls/index.js +13 -0
  21. package/dist/plugins/oxlint/index.d.ts +3 -0
  22. package/dist/plugins/oxlint/index.js +4 -31
  23. package/dist/plugins/oxlint/types.d.ts +1 -0
  24. package/dist/plugins/playwright/index.js +17 -0
  25. package/dist/plugins/playwright/types.d.ts +5 -0
  26. package/dist/plugins/postcss/index.js +5 -1
  27. package/dist/plugins/rsbuild/index.js +42 -4
  28. package/dist/plugins/rsbuild/types.d.ts +18 -1
  29. package/dist/plugins/rspack/index.d.ts +3 -1
  30. package/dist/plugins/rspack/index.js +1 -1
  31. package/dist/plugins/serverless-framework/index.d.ts +4 -1
  32. package/dist/plugins/serverless-framework/index.js +40 -7
  33. package/dist/plugins/serverless-framework/types.d.ts +4 -2
  34. package/dist/plugins/simple-git-hooks/index.js +1 -1
  35. package/dist/plugins/vitest/index.js +16 -2
  36. package/dist/plugins/vitest/types.d.ts +2 -0
  37. package/dist/schema/configuration.d.ts +30 -0
  38. package/dist/schema/plugins.d.ts +10 -0
  39. package/dist/schema/plugins.js +2 -0
  40. package/dist/types/PluginNames.d.ts +2 -2
  41. package/dist/types/PluginNames.js +2 -0
  42. package/dist/typescript/ast-nodes.js +291 -0
  43. package/dist/typescript/resolve-module-names.js +15 -4
  44. package/dist/typescript/visitors/walk.js +12 -0
  45. package/dist/util/create-options.d.ts +20 -0
  46. package/dist/util/filter-transitive-dependencies.d.ts +2 -0
  47. package/dist/util/filter-transitive-dependencies.js +38 -0
  48. package/dist/util/package-json.d.ts +1 -354
  49. package/dist/util/package-json.js +56 -10
  50. package/dist/util/to-source-path.d.ts +1 -1
  51. package/dist/util/to-source-path.js +7 -5
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/package.json +1 -1
  55. package/schema.json +8 -0
@@ -1,15 +1,11 @@
1
- import { Visitor } from 'oxc-parser';
2
- import { findProperty, getPropertyValues } from '../../typescript/ast-helpers.js';
3
1
  import { toConfig, toDependency, toEntry } from '../../util/input.js';
4
2
  import { dirname, isInternal, toAbsolute } from '../../util/path.js';
5
3
  import { hasDependency } from '../../util/plugin.js';
6
4
  import { getInputsFromSettings } from '../eslint/helpers.js';
7
- import { getInputsFromSettingsAST } from '../eslint/resolveFromAST.js';
8
5
  const title = 'Oxlint';
9
6
  const enablers = ['oxlint', 'vite-plus'];
10
7
  const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
11
- const config = ['.oxlintrc.{json,jsonc}', 'oxlint.config.{ts,mts}', 'vite.config.{js,mjs,ts,cjs,mts,cts}'];
12
- const isViteConfig = (configFileName) => configFileName.startsWith('vite.config.');
8
+ const config = ['.oxlintrc.{json,jsonc}', 'oxlint.config.{ts,mts}'];
13
9
  const args = {
14
10
  config: true,
15
11
  };
@@ -25,8 +21,7 @@ const resolveJsPlugins = (jsPlugins, configFilePath) => {
25
21
  }
26
22
  return inputs;
27
23
  };
28
- const isLoadConfig = ({ configFileName }) => !isViteConfig(configFileName);
29
- const resolveExtendedConfig = (config, configFilePath) => {
24
+ export const resolveExtendedConfig = (config, configFilePath) => {
30
25
  const inputs = [];
31
26
  for (const entry of config.extends ?? []) {
32
27
  if (typeof entry === 'string') {
@@ -43,43 +38,21 @@ const resolveExtendedConfig = (config, configFilePath) => {
43
38
  for (const override of config.overrides ?? []) {
44
39
  for (const input of resolveJsPlugins(override.jsPlugins, configFilePath))
45
40
  inputs.push(input);
41
+ for (const input of getInputsFromSettings(override.settings))
42
+ inputs.push(input);
46
43
  }
47
44
  for (const input of getInputsFromSettings(config.settings))
48
45
  inputs.push(input);
49
46
  return inputs;
50
47
  };
51
48
  const resolveConfig = (config, options) => resolveExtendedConfig(config, options.configFilePath);
52
- const resolveFromAST = (program, options) => {
53
- if (!isViteConfig(options.configFileName))
54
- return [];
55
- const jsPlugins = new Set();
56
- const visitor = new Visitor({
57
- ObjectExpression(node) {
58
- const lint = findProperty(node, 'lint');
59
- if (lint?.type !== 'ObjectExpression')
60
- return;
61
- for (const specifier of getPropertyValues(lint, 'jsPlugins'))
62
- jsPlugins.add(specifier);
63
- for (const plugin of findProperty(lint, 'jsPlugins')?.elements ?? []) {
64
- if (plugin?.type !== 'ObjectExpression')
65
- continue;
66
- for (const specifier of getPropertyValues(plugin, 'specifier'))
67
- jsPlugins.add(specifier);
68
- }
69
- },
70
- });
71
- visitor.visit(program);
72
- return [...resolveJsPlugins([...jsPlugins], options.configFilePath), ...getInputsFromSettingsAST(program)];
73
- };
74
49
  const isFilterTransitiveDependencies = true;
75
50
  const plugin = {
76
51
  title,
77
52
  enablers,
78
53
  isEnabled,
79
54
  config,
80
- isLoadConfig,
81
55
  resolveConfig,
82
- resolveFromAST,
83
56
  isFilterTransitiveDependencies,
84
57
  args,
85
58
  };
@@ -4,6 +4,7 @@ type JsPlugin = string | {
4
4
  specifier: string;
5
5
  };
6
6
  type Override = {
7
+ settings?: Settings;
7
8
  jsPlugins?: JsPlugin[];
8
9
  };
9
10
  export type OxlintConfig = {
@@ -21,6 +21,23 @@ export const resolveConfig = async (localConfig, options) => {
21
21
  inputs.push(toEntry(toAbsolute(id, configFileDir)));
22
22
  for (const id of arrayify(localConfig.globalTeardown))
23
23
  inputs.push(toEntry(toAbsolute(id, configFileDir)));
24
+ for (const server of [localConfig.webServer].flat()) {
25
+ if (!server?.command)
26
+ continue;
27
+ const dir = server.cwd ? toAbsolute(server.cwd, configFileDir) : configFileDir;
28
+ for (const input of options.getInputsFromScripts(server.command, {
29
+ optionalBinaries: true,
30
+ cwd: dir,
31
+ manifest: options.getManifest(dir) ?? options.manifest,
32
+ })) {
33
+ const inputDir = input.dir ?? dir;
34
+ inputs.push({
35
+ ...input,
36
+ ...(input.type === 'entry' ? { specifier: toAbsolute(input.specifier, inputDir) } : {}),
37
+ dir: inputDir,
38
+ });
39
+ }
40
+ }
24
41
  const projects = localConfig.projects ? [localConfig, ...localConfig.projects] : [localConfig];
25
42
  const reporters = [localConfig.reporter].flat().flatMap(reporter => {
26
43
  const name = typeof reporter === 'string' ? reporter : reporter?.[0];
@@ -31,6 +31,10 @@ type Project = {
31
31
  use: string;
32
32
  testMatch?: string | RegExp | (string | RegExp)[];
33
33
  };
34
+ type TestConfigWebServer = {
35
+ command: string;
36
+ cwd?: string;
37
+ };
34
38
  export type PlaywrightTestConfig = {
35
39
  projects?: Project[];
36
40
  testMatch?: string | RegExp | (string | RegExp)[];
@@ -38,5 +42,6 @@ export type PlaywrightTestConfig = {
38
42
  reporter?: LiteralUnion<'dot' | 'line' | 'list' | 'junit' | 'html' | 'json' | 'github' | 'null', string> | ReporterDescription[];
39
43
  globalSetup?: string | Array<string>;
40
44
  globalTeardown?: string | Array<string>;
45
+ webServer?: TestConfigWebServer | TestConfigWebServer[];
41
46
  };
42
47
  export {};
@@ -11,7 +11,11 @@ const config = [
11
11
  ];
12
12
  const resolveConfig = config => {
13
13
  const plugins = config.plugins
14
- ? (Array.isArray(config.plugins) ? config.plugins : Object.keys(config.plugins)).flatMap(plugin => {
14
+ ? (Array.isArray(config.plugins)
15
+ ? config.plugins
16
+ : Object.entries(config.plugins)
17
+ .filter(([, options]) => options !== false)
18
+ .map(([plugin]) => plugin)).flatMap(plugin => {
15
19
  if (typeof plugin === 'string')
16
20
  return plugin;
17
21
  if (Array.isArray(plugin) && typeof plugin[0] === 'string')
@@ -1,11 +1,13 @@
1
1
  import { toProductionEntry } from '../../util/input.js';
2
2
  import { hasDependency } from '../../util/plugin.js';
3
+ import { resolveConfig as resolveRspackConfig } from '../rspack/index.js';
3
4
  const title = 'Rsbuild';
4
5
  const enablers = ['@rsbuild/core'];
5
6
  const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
6
7
  const config = ['rsbuild*.config.{mjs,ts,js,cjs,mts,cts}'];
7
- const resolveConfig = async (config) => {
8
+ const resolveConfig = async (config, options) => {
8
9
  const entries = new Set();
10
+ const inputs = [];
9
11
  const checkSource = (source) => {
10
12
  if (source?.entry) {
11
13
  for (const entry of Object.values(source.entry)) {
@@ -32,13 +34,49 @@ const resolveConfig = async (config) => {
32
34
  entries.add(e);
33
35
  }
34
36
  };
35
- checkSource(config.source);
37
+ const checkConfig = async (localConfig) => {
38
+ checkSource(localConfig.source);
39
+ if (!localConfig.tools?.rspack)
40
+ return;
41
+ const target = localConfig.output?.target ?? config.output?.target ?? 'web';
42
+ const mode = localConfig.mode ?? config.mode;
43
+ const passes = mode ? [mode === 'production'] : options.isProduction ? [true] : [false, true];
44
+ for (const rspack of [localConfig.tools.rspack].flat()) {
45
+ for (const isProduction of typeof rspack === 'function' ? passes : [options.isProduction]) {
46
+ const baseConfig = {
47
+ mode: mode ?? (isProduction ? 'production' : 'development'),
48
+ entry: {},
49
+ resolve: { alias: {} },
50
+ module: { rules: [] },
51
+ plugins: [],
52
+ };
53
+ const utils = {
54
+ env: process.env.NODE_ENV ?? '',
55
+ isDev: baseConfig.mode === 'development',
56
+ isProd: baseConfig.mode === 'production',
57
+ target,
58
+ isServer: target === 'node',
59
+ isWebWorker: target === 'web-worker',
60
+ };
61
+ const resolvedConfig = typeof rspack === 'function' ? await rspack(baseConfig, utils) : rspack;
62
+ const resolvedInputs = await resolveRspackConfig(resolvedConfig ?? baseConfig, {
63
+ ...options,
64
+ isProduction: options.isProduction || isProduction,
65
+ });
66
+ for (const input of resolvedInputs)
67
+ inputs.push(input);
68
+ }
69
+ }
70
+ };
71
+ await checkConfig(config);
36
72
  if (config.environments) {
37
73
  for (const environment of Object.values(config.environments)) {
38
- checkSource(environment.source);
74
+ await checkConfig(environment);
39
75
  }
40
76
  }
41
- return Array.from(entries).map(input => toProductionEntry(input));
77
+ for (const entry of entries)
78
+ inputs.push(toProductionEntry(entry));
79
+ return inputs;
42
80
  };
43
81
  const plugin = {
44
82
  title,
@@ -1,15 +1,32 @@
1
+ import type { Configuration } from 'webpack';
1
2
  type EntryDescription = Record<string, unknown>;
2
3
  type Entry = Record<string, string | string[] | (EntryDescription & {
3
4
  html?: boolean;
4
5
  })>;
6
+ type RspackConfigUtils = {
7
+ env: string;
8
+ isDev: boolean;
9
+ isProd: boolean;
10
+ target: 'web' | 'node' | 'web-worker';
11
+ isServer: boolean;
12
+ isWebWorker: boolean;
13
+ };
14
+ type RspackConfig = Configuration | ((config: Configuration, utils: RspackConfigUtils) => Configuration | void | Promise<Configuration | void>);
5
15
  export type RsbuildConfig = {
6
16
  plugins?: unknown[];
17
+ mode?: 'development' | 'production' | 'none';
18
+ output?: {
19
+ target?: RspackConfigUtils['target'];
20
+ };
7
21
  source?: {
8
22
  entry?: Entry;
9
23
  preEntry?: string | string[];
10
24
  };
25
+ tools?: {
26
+ rspack?: RspackConfig | RspackConfig[];
27
+ };
11
28
  environments?: {
12
- [k: string]: Pick<RsbuildConfig, 'plugins' | 'source'>;
29
+ [k: string]: Omit<RsbuildConfig, 'environments'>;
13
30
  };
14
31
  };
15
32
  export {};
@@ -1,3 +1,5 @@
1
- import type { Plugin } from '../../types/config.ts';
1
+ import type { Plugin, ResolveConfig } from '../../types/config.ts';
2
+ import type { WebpackConfig } from '../webpack/types.ts';
3
+ export declare const resolveConfig: ResolveConfig<WebpackConfig>;
2
4
  declare const plugin: Plugin;
3
5
  export default plugin;
@@ -5,7 +5,7 @@ const title = 'Rspack';
5
5
  const enablers = ['@rspack/core'];
6
6
  const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
7
7
  const config = ['rspack.config*.{js,ts,mjs,mts,cjs,cts}'];
8
- const resolveConfig = async (localConfig, options) => {
8
+ export const resolveConfig = async (localConfig, options) => {
9
9
  const inputs = await findWebpackDependenciesFromConfig(localConfig, options);
10
10
  return inputs.filter(input => !input.specifier.startsWith('builtin:'));
11
11
  };
@@ -1,3 +1,6 @@
1
- import type { Plugin } from '../../types/config.ts';
1
+ import type { Plugin, ResolveConfig } from '../../types/config.ts';
2
+ import type { PluginConfig } from './types.ts';
3
+ export declare const config: string[];
4
+ export declare const resolveConfig: ResolveConfig<PluginConfig>;
2
5
  declare const plugin: Plugin;
3
6
  export default plugin;
@@ -1,22 +1,55 @@
1
1
  import { arrayify } from '../../util/array.js';
2
2
  import { toDependency, toProductionEntry } from '../../util/input.js';
3
- import { isInternal, join } from '../../util/path.js';
3
+ import { _load } from '../../util/loader.js';
4
+ import { get } from '../../util/object.js';
5
+ import { isInternal, join, toAbsolute } from '../../util/path.js';
4
6
  import { hasDependency } from '../../util/plugin.js';
5
7
  const title = 'Serverless Framework';
6
8
  const enablers = ['serverless'];
7
9
  const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
8
- const config = ['serverless.{js,cjs,mjs,ts,cts,mts,yml,yaml}'];
10
+ export const config = ['serverless.{js,cjs,mjs,ts,cts,mts,yml,yaml}'];
11
+ const fileVariable = /^\$\{file\(([^()$]+)\)(?::([^\s,}]+))?/;
12
+ const isRecord = (value) => typeof value === 'object' && value !== null;
13
+ const resolveFileVariable = async (value, dir) => {
14
+ const match = typeof value === 'string' && value.match(fileVariable);
15
+ if (!match)
16
+ return value;
17
+ try {
18
+ const content = await _load(toAbsolute(match[1].trim(), dir));
19
+ return match[2] ? get(content, match[2]) : content;
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ };
9
25
  const handlerToEntry = (handler) => {
10
26
  const dot = handler.lastIndexOf('.');
11
- return toProductionEntry(`${handler.slice(0, dot)}.{js,ts}`);
27
+ const file = handler.slice(0, dot);
28
+ return toProductionEntry(/\.(?:[cm]?[jt]s|[jt]sx)$/.test(file) ? file : `${file}.{js,ts}`);
12
29
  };
13
30
  const pluginToInput = (plugin, dir) => isInternal(plugin) ? toProductionEntry(join(dir, plugin)) : toDependency(plugin);
31
+ const getFunctionEntries = async (functions, dir) => {
32
+ const entries = [];
33
+ const resolved = await resolveFileVariable(functions, dir);
34
+ for (const group of Array.isArray(resolved) ? resolved : [resolved]) {
35
+ const fns = await resolveFileVariable(group, dir);
36
+ if (!isRecord(fns))
37
+ continue;
38
+ for (const name in fns) {
39
+ const fn = await resolveFileVariable(fns[name], dir);
40
+ if (isRecord(fn) && typeof fn.handler === 'string')
41
+ entries.push(handlerToEntry(fn.handler));
42
+ }
43
+ }
44
+ return entries;
45
+ };
14
46
  const getInjectEntries = (esbuild, dir) => esbuild && typeof esbuild === 'object' ? arrayify(esbuild.inject).map(id => toProductionEntry(join(dir, id))) : [];
15
- const resolveConfig = async (config, options) => {
16
- const functions = config.functions
17
- ? Object.values(config.functions).flatMap(fn => (fn.handler ? [handlerToEntry(fn.handler)] : []))
47
+ export const resolveConfig = async (config, options) => {
48
+ const functions = await getFunctionEntries(config.functions, options.configFileDir);
49
+ const resolvedPlugins = await resolveFileVariable(config.plugins, options.configFileDir);
50
+ const plugins = Array.isArray(resolvedPlugins)
51
+ ? resolvedPlugins.filter((plugin) => typeof plugin === 'string')
18
52
  : [];
19
- const plugins = config.plugins?.filter((plugin) => typeof plugin === 'string') ?? [];
20
53
  const esbuild = config.custom?.esbuild || config.build?.esbuild ? [toDependency('esbuild', { optional: true })] : [];
21
54
  const injectEntries = [
22
55
  ...getInjectEntries(config.custom?.esbuild, options.configFileDir),
@@ -5,9 +5,11 @@ export type PluginConfig = {
5
5
  custom?: {
6
6
  esbuild?: EsbuildConfig;
7
7
  };
8
- functions?: Record<string, ServerlessFunction>;
9
- plugins?: unknown[];
8
+ functions?: Functions | Array<Functions | FileVariable> | FileVariable;
9
+ plugins?: unknown[] | FileVariable;
10
10
  };
11
+ type FileVariable = string;
12
+ type Functions = Record<string, ServerlessFunction | FileVariable>;
11
13
  export type EsbuildConfig = {
12
14
  inject?: string[];
13
15
  } | boolean;
@@ -3,7 +3,7 @@ import { hasDependency } from '../../util/plugin.js';
3
3
  const title = 'simple-git-hooks';
4
4
  const enablers = ['simple-git-hooks'];
5
5
  const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
6
- const config = ['.simple-git-hooks.{js,cjs,json}', 'simple-git-hooks.{js,cjs,json}', 'package.json'];
6
+ const config = ['.simple-git-hooks.{js,cjs,mjs,json}', 'simple-git-hooks.{js,cjs,mjs,json}', 'package.json'];
7
7
  const resolveConfig = async (config, options) => {
8
8
  if (options.isProduction)
9
9
  return [];
@@ -1,9 +1,11 @@
1
1
  import { DEFAULT_EXTENSIONS } from '../../constants.js';
2
+ import { filterTransitiveDependencies } from '../../util/filter-transitive-dependencies.js';
2
3
  import { _glob } from '../../util/glob.js';
3
4
  import { toConfig, toDeferResolve, toDependency, toEntry, toProductionEntry } from '../../util/input.js';
4
5
  import { getPackageNameFromModuleSpecifier } from '../../util/modules.js';
5
6
  import { isAbsolute, isInternal, join, toAbsolute, toPosix } from '../../util/path.js';
6
7
  import { hasDependency } from '../../util/plugin.js';
8
+ import { resolveExtendedConfig } from '../oxlint/index.js';
7
9
  import { getHtmlScriptEntries, getIndexHtmlEntries } from '../vite/helpers.js';
8
10
  import { getAliasInputs, getEnvSpecifier, getExternalReporters } from './helpers.js';
9
11
  import { createVitestMockVisitor } from './visitors/mock.js';
@@ -107,6 +109,7 @@ const getConfigs = async (localConfig) => {
107
109
  };
108
110
  export const resolveConfig = async (localConfig, options) => {
109
111
  const inputs = new Set();
112
+ const lintInputs = [];
110
113
  inputs.add(toEntry(join(options.cwd, 'src/vite-env.d.ts')));
111
114
  const configs = await getConfigs(localConfig);
112
115
  for (const cfg of configs) {
@@ -134,6 +137,11 @@ export const resolveConfig = async (localConfig, options) => {
134
137
  };
135
138
  const seenRoots = new Set();
136
139
  for (const cfg of configs) {
140
+ const lint = cfg.lint;
141
+ if (lint && options.enabledPlugins.includes('oxlint')) {
142
+ for (const input of resolveExtendedConfig(lint, options.configFilePath))
143
+ lintInputs.push(input);
144
+ }
137
145
  const viteRoot = toAbsolute(cfg.root ?? '.', options.cwd);
138
146
  const publicDir = cfg.publicDir === false || cfg.publicDir === ''
139
147
  ? undefined
@@ -143,10 +151,11 @@ export const resolveConfig = async (localConfig, options) => {
143
151
  for (const entry of await getIndexHtmlEntries(viteRoot, publicDir))
144
152
  inputs.add(entry);
145
153
  }
146
- const vitestRoot = cfg.test?.root || !options.isResolvedConfigFile
154
+ const testRoot = cfg.test?.root || !options.isResolvedConfigFile
147
155
  ? toAbsolute(cfg.test?.root ?? '.', options.cwd)
148
156
  : toAbsolute('.', options.configFileDir);
149
- const dir = cfg.test?.dir ? toAbsolute(cfg.test.dir, vitestRoot) : vitestRoot;
157
+ const vitestRoot = !cfg.test?.root && cfg.root && !options.isResolvedConfigFile ? toAbsolute(cfg.root, options.cwd) : testRoot;
158
+ const dir = cfg.test?.dir ? toAbsolute(cfg.test.dir, testRoot) : vitestRoot;
150
159
  if (cfg.test) {
151
160
  if (cfg.test?.include) {
152
161
  for (const dependency of cfg.test.include)
@@ -205,6 +214,11 @@ export const resolveConfig = async (localConfig, options) => {
205
214
  for (const dependency of deps)
206
215
  inputs.add(dependency);
207
216
  }
217
+ if (lintInputs.length > 0) {
218
+ filterTransitiveDependencies(lintInputs, options.configFilePath);
219
+ for (const input of lintInputs)
220
+ inputs.add(input);
221
+ }
208
222
  return Array.from(inputs);
209
223
  };
210
224
  const args = {
@@ -1,3 +1,4 @@
1
+ import type { OxlintConfig } from '../oxlint/types.ts';
1
2
  interface Alias {
2
3
  find: string | RegExp;
3
4
  replacement: string;
@@ -37,6 +38,7 @@ interface VitestConfig {
37
38
  };
38
39
  }
39
40
  export interface ViteConfig extends VitestConfig {
41
+ lint?: OxlintConfig;
40
42
  extends?: string | true;
41
43
  root?: string;
42
44
  publicDir?: string | false;
@@ -236,6 +236,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
236
236
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
237
237
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
238
238
  }, z.core.$strip>]>>;
239
+ jasmine: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
240
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
241
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
242
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
243
+ }, z.core.$strip>]>>;
239
244
  jest: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
240
245
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
241
246
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -441,6 +446,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
441
446
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
442
447
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
443
448
  }, z.core.$strip>]>>;
449
+ osls: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
450
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
451
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
452
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
453
+ }, z.core.$strip>]>>;
444
454
  oxfmt: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
445
455
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
446
456
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -1193,6 +1203,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
1193
1203
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1194
1204
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1195
1205
  }, z.core.$strip>]>>;
1206
+ jasmine: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1207
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1208
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1209
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1210
+ }, z.core.$strip>]>>;
1196
1211
  jest: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1197
1212
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1198
1213
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -1398,6 +1413,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
1398
1413
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1399
1414
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1400
1415
  }, z.core.$strip>]>>;
1416
+ osls: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1417
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1418
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1419
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1420
+ }, z.core.$strip>]>>;
1401
1421
  oxfmt: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
1402
1422
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
1403
1423
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -2169,6 +2189,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
2169
2189
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2170
2190
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2171
2191
  }, z.core.$strip>]>>;
2192
+ jasmine: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2193
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2194
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2195
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2196
+ }, z.core.$strip>]>>;
2172
2197
  jest: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2173
2198
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2174
2199
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -2374,6 +2399,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
2374
2399
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2375
2400
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2376
2401
  }, z.core.$strip>]>>;
2402
+ osls: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2403
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2404
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2405
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2406
+ }, z.core.$strip>]>>;
2377
2407
  oxfmt: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
2378
2408
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
2379
2409
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -241,6 +241,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
241
241
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
242
242
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
243
243
  }, z.core.$strip>]>;
244
+ jasmine: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
245
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
246
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
247
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
248
+ }, z.core.$strip>]>;
244
249
  jest: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
245
250
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
246
251
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -446,6 +451,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
446
451
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
447
452
  project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
448
453
  }, z.core.$strip>]>;
454
+ osls: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
455
+ config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
456
+ entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
457
+ project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
458
+ }, z.core.$strip>]>;
449
459
  oxfmt: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
450
460
  config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
451
461
  entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
@@ -57,6 +57,7 @@ export const pluginsSchema = z.object({
57
57
  hardhat: pluginSchema,
58
58
  husky: pluginSchema,
59
59
  'i18next-parser': pluginSchema,
60
+ jasmine: pluginSchema,
60
61
  jest: pluginSchema,
61
62
  karma: pluginSchema,
62
63
  knex: pluginSchema,
@@ -98,6 +99,7 @@ export const pluginsSchema = z.object({
98
99
  'openapi-ts': pluginSchema,
99
100
  openclaw: pluginSchema,
100
101
  orval: pluginSchema,
102
+ osls: pluginSchema,
101
103
  oxfmt: pluginSchema,
102
104
  oxlint: pluginSchema,
103
105
  'panda-css': 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' | 'expressive-code' | 'fast' | 'fumadocs' | 'gatsby' | 'github-action' | 'github-actions' | 'glob' | 'graphql-codegen' | 'hardhat' | 'husky' | 'i18next-parser' | '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' | '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', 'expressive-code', 'fast', 'fumadocs', 'gatsby', 'github-action', 'github-actions', 'glob', 'graphql-codegen', 'hardhat', 'husky', 'i18next-parser', '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', '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' | 'expressive-code' | 'fast' | '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', 'expressive-code', 'fast', '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'];
@@ -46,6 +46,7 @@ export const pluginNames = [
46
46
  'hardhat',
47
47
  'husky',
48
48
  'i18next-parser',
49
+ 'jasmine',
49
50
  'jest',
50
51
  'karma',
51
52
  'knex',
@@ -87,6 +88,7 @@ export const pluginNames = [
87
88
  'openapi-ts',
88
89
  'openclaw',
89
90
  'orval',
91
+ 'osls',
90
92
  'oxfmt',
91
93
  'oxlint',
92
94
  'panda-css',