@kimesh/auto-import 0.0.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.
@@ -0,0 +1,417 @@
1
+ import MagicString from "magic-string";
2
+ import { Plugin, PluginOption } from "vite";
3
+ import { ComponentResolver } from "unplugin-vue-components";
4
+
5
+ //#region src/types.d.ts
6
+ /**
7
+ * @kimesh/auto-import - Type Definitions
8
+ */
9
+ /**
10
+ * Import entry in the registry
11
+ */
12
+ interface ImportEntry {
13
+ /** Export name (e.g., 'Button', 'useAuth') */
14
+ name: string;
15
+ /** Optional alias (import { x as alias }) */
16
+ as?: string;
17
+ /** Import source path */
18
+ from: string;
19
+ /** Import type */
20
+ type: 'component' | 'composable' | 'utility' | 'preset' | 'store';
21
+ /** Layer name or 'app' */
22
+ layer: string;
23
+ /** Priority (lower = higher priority) */
24
+ priority: number;
25
+ /** Is default export? */
26
+ isDefault: boolean;
27
+ /** Is type-only import? */
28
+ isType: boolean;
29
+ }
30
+ /**
31
+ * Conflict information
32
+ */
33
+ interface ConflictReport {
34
+ /** Conflicting name */
35
+ name: string;
36
+ /** Winning import entry */
37
+ winner: ImportEntry;
38
+ /** Losing import entries */
39
+ losers: ImportEntry[];
40
+ /** Suggestion for resolution */
41
+ suggestion?: string;
42
+ }
43
+ /**
44
+ * Export information from scanned file
45
+ */
46
+ interface ExportInfo {
47
+ /** Export name */
48
+ name: string;
49
+ /** Is default export? */
50
+ isDefault: boolean;
51
+ /** Is type-only export? */
52
+ isType: boolean;
53
+ /** Start position in source */
54
+ start: number;
55
+ /** End position in source */
56
+ end: number;
57
+ }
58
+ /**
59
+ * Scan result for a single file
60
+ */
61
+ interface ScanResult {
62
+ /** File path */
63
+ filePath: string;
64
+ /** Content hash for cache invalidation */
65
+ fileHash: string;
66
+ /** Extracted exports */
67
+ exports: ExportInfo[];
68
+ /** Parse time in ms */
69
+ parseTime: number;
70
+ }
71
+ /**
72
+ * Import preset definition
73
+ */
74
+ interface ImportPreset {
75
+ /** Preset name */
76
+ name: string;
77
+ /** Import source */
78
+ from: string;
79
+ /** Imports to include */
80
+ imports: Array<string | {
81
+ name: string;
82
+ type?: boolean;
83
+ as?: string;
84
+ }>;
85
+ }
86
+ /**
87
+ * Auto-import configuration
88
+ */
89
+ interface AutoImportConfig {
90
+ /** Component directories to scan */
91
+ components?: {
92
+ dirs?: string[];
93
+ prefix?: string | false;
94
+ extensions?: string[];
95
+ };
96
+ /** Composable directories to scan */
97
+ composables?: {
98
+ dirs?: string[];
99
+ extensions?: string[];
100
+ };
101
+ /** Utility directories to scan */
102
+ utils?: {
103
+ dirs?: string[];
104
+ extensions?: string[];
105
+ };
106
+ /** Store directories to scan */
107
+ stores?: {
108
+ dirs?: string[];
109
+ };
110
+ /** Presets to enable */
111
+ presets?: Array<'vue' | 'vue-router' | 'tanstack-query' | 'pinia' | 'kimesh' | ImportPreset>;
112
+ /** Additional imports */
113
+ imports?: Array<{
114
+ from: string;
115
+ imports: string[];
116
+ }>;
117
+ /** Output directory for generated types */
118
+ dts?: string | false;
119
+ }
120
+ /**
121
+ * Layer auto-import source
122
+ */
123
+ interface LayerAutoImportSource {
124
+ /** Layer name */
125
+ layer: string;
126
+ /** Layer priority */
127
+ priority: number;
128
+ /** Layer root path */
129
+ layerPath: string;
130
+ /** Config for this layer */
131
+ config: AutoImportConfig;
132
+ }
133
+ /**
134
+ * Import registry
135
+ */
136
+ interface ImportRegistry {
137
+ /** All resolved imports */
138
+ imports: Map<string, ImportEntry>;
139
+ /** Components map (for Vue template auto-import) */
140
+ components: Map<string, ImportEntry>;
141
+ /** Conflicts detected */
142
+ conflicts: ConflictReport[];
143
+ /** Stats */
144
+ stats: {
145
+ totalScanned: number;
146
+ componentsCount: number;
147
+ composablesCount: number;
148
+ utilitiesCount: number;
149
+ presetsCount: number;
150
+ conflictsCount: number;
151
+ scanTimeMs: number;
152
+ };
153
+ }
154
+ /**
155
+ * Unresolved reference in source code
156
+ */
157
+ interface UnresolvedReference {
158
+ /** Identifier name */
159
+ name: string;
160
+ /** Position in source */
161
+ start: number;
162
+ /** End position */
163
+ end: number;
164
+ /** Is it used as a type? */
165
+ isType: boolean;
166
+ }
167
+ /**
168
+ * Transform result
169
+ */
170
+ interface TransformResult {
171
+ /** Transformed code */
172
+ code: string;
173
+ /** Source map */
174
+ map?: any;
175
+ /** Injected imports */
176
+ injectedImports: Array<{
177
+ name: string;
178
+ from: string;
179
+ }>;
180
+ }
181
+ /**
182
+ * Resolved layer info for generating .d.ts files
183
+ */
184
+ interface ResolvedLayerInfo {
185
+ /** Layer name */
186
+ name: string;
187
+ /** Layer root path */
188
+ path: string;
189
+ /** Is this the host app? */
190
+ isApp: boolean;
191
+ }
192
+ /**
193
+ * Vite plugin options
194
+ */
195
+ interface AutoImportPluginOptions {
196
+ /** Layer sources to scan (static) */
197
+ sources?: LayerAutoImportSource[];
198
+ /** Layer sources getter (lazy evaluation for async resolution) */
199
+ getSources?: () => LayerAutoImportSource[];
200
+ /** Resolved layers to generate .d.ts files into their .kimesh directories (static) */
201
+ layers?: ResolvedLayerInfo[];
202
+ /** Resolved layers getter (lazy evaluation for async resolution) */
203
+ getLayers?: () => ResolvedLayerInfo[];
204
+ /** Include patterns */
205
+ include?: string[];
206
+ /** Exclude patterns */
207
+ exclude?: string[];
208
+ /** Output directory for .d.ts files */
209
+ dts?: string | false;
210
+ /** Enable debug logging */
211
+ debug?: boolean;
212
+ }
213
+ //#endregion
214
+ //#region src/scanner/oxc-scanner.d.ts
215
+ declare class OxcExportScanner {
216
+ private cache;
217
+ scanFile(filePath: string): Promise<ScanResult>;
218
+ scanFiles(filePaths: string[]): Promise<ScanResult[]>;
219
+ private scanTsFile;
220
+ private scanVueFile;
221
+ private extractExports;
222
+ private extractNamedExports;
223
+ private extractDefaultExport;
224
+ private extractDeclarationNames;
225
+ private extractDefineExposeExports;
226
+ private walkAST;
227
+ private componentNameFromPath;
228
+ private hashContent;
229
+ invalidate(filePath: string): void;
230
+ clearCache(): void;
231
+ getCacheStats(): {
232
+ size: number;
233
+ version: string;
234
+ };
235
+ }
236
+ //#endregion
237
+ //#region src/scanner/reference-detector.d.ts
238
+ /**
239
+ * Reference detector using scope analysis
240
+ */
241
+ declare class ReferenceDetector {
242
+ /**
243
+ * Detect unresolved references in TypeScript/JavaScript code
244
+ */
245
+ detectInScript(code: string, filePath: string): UnresolvedReference[];
246
+ /**
247
+ * Detect unresolved references in Vue SFC
248
+ */
249
+ detectInVue(code: string, filePath: string): UnresolvedReference[];
250
+ /**
251
+ * Detect unresolved references in parsed AST
252
+ */
253
+ private detectInAST;
254
+ /**
255
+ * Collect all declared identifiers in the scope
256
+ */
257
+ private collectDeclarations;
258
+ /**
259
+ * Collect names from binding patterns
260
+ */
261
+ private collectPatternNames;
262
+ /**
263
+ * Find references to undeclared identifiers
264
+ */
265
+ private findUnresolvedReferences;
266
+ /**
267
+ * Check if identifier is a property access (obj.prop)
268
+ */
269
+ private isPropertyAccess;
270
+ /**
271
+ * Check if identifier is a property key ({ key: value })
272
+ */
273
+ private isPropertyKey;
274
+ /**
275
+ * Check if identifier is a label reference
276
+ */
277
+ private isLabelReference;
278
+ /**
279
+ * Check if identifier is in type context
280
+ */
281
+ private isTypeContext;
282
+ /**
283
+ * Properties to skip when recursing
284
+ */
285
+ private shouldSkipProperty;
286
+ }
287
+ //#endregion
288
+ //#region src/registry/builder.d.ts
289
+ declare class RegistryBuilder {
290
+ private scanner;
291
+ private resolver;
292
+ build(sources: LayerAutoImportSource[]): Promise<ImportRegistry>;
293
+ private extractComponents;
294
+ private calculateStats;
295
+ private logBuildResults;
296
+ private processLayerSource;
297
+ private processPresets;
298
+ private processComponents;
299
+ private resolveComponentName;
300
+ private processDirectories;
301
+ private processAdditionalImports;
302
+ private scanDirectory;
303
+ private scanDirectoryRecursive;
304
+ invalidate(filePath: string): void;
305
+ clearCache(): void;
306
+ }
307
+ //#endregion
308
+ //#region src/registry/conflict-resolver.d.ts
309
+ declare class ConflictResolver {
310
+ private imports;
311
+ private resolved;
312
+ private conflicts;
313
+ addImport(entry: ImportEntry): void;
314
+ resolve(): {
315
+ resolved: Map<string, ImportEntry>;
316
+ conflicts: ConflictReport[];
317
+ };
318
+ private generateSuggestion;
319
+ getConflicts(): ConflictReport[];
320
+ hasConflict(name: string): boolean;
321
+ getConflict(name: string): ConflictReport | undefined;
322
+ clear(): void;
323
+ }
324
+ //#endregion
325
+ //#region src/script/injector.d.ts
326
+ interface InjectionResult {
327
+ code: string;
328
+ map: ReturnType<MagicString["generateMap"]>;
329
+ count: number;
330
+ }
331
+ declare class ImportInjector {
332
+ inject(code: string, imports: ImportEntry[], isVue: boolean): InjectionResult | null;
333
+ generateImportStatements(imports: ImportEntry[]): string;
334
+ private groupImportsBySource;
335
+ private categorizeImports;
336
+ findImportInsertionPoint(code: string, isVue: boolean): number;
337
+ private findVueScriptInsertionPoint;
338
+ private findJsInsertionPoint;
339
+ extractExistingImports(code: string, isVue: boolean): Set<string>;
340
+ private extractVueScriptContent;
341
+ }
342
+ //#endregion
343
+ //#region src/script/plugin.d.ts
344
+ interface ScriptPluginOptions extends AutoImportPluginOptions {
345
+ onRegistryUpdate?: (registry: ImportRegistry) => void;
346
+ }
347
+ declare function createScriptPlugin(options: ScriptPluginOptions): Plugin;
348
+ //#endregion
349
+ //#region src/template/resolver.d.ts
350
+ interface KimeshResolverOptions {
351
+ getRegistry: () => ImportRegistry | null;
352
+ debug?: boolean;
353
+ }
354
+ declare function createKimeshResolver(options: KimeshResolverOptions): ComponentResolver;
355
+ //#endregion
356
+ //#region src/template/plugin.d.ts
357
+ interface TemplatePluginOptions {
358
+ getRegistry: () => ImportRegistry | null;
359
+ dts?: string | false;
360
+ debug?: boolean;
361
+ }
362
+ declare function createTemplatePlugin(options: TemplatePluginOptions): Plugin;
363
+ //#endregion
364
+ //#region src/presets/index.d.ts
365
+ /**
366
+ * Vue core preset
367
+ */
368
+ declare const vuePreset: ImportPreset;
369
+ /**
370
+ * Vue Router preset
371
+ */
372
+ declare const vueRouterPreset: ImportPreset;
373
+ /**
374
+ * TanStack Vue Query preset
375
+ */
376
+ declare const tanstackQueryPreset: ImportPreset;
377
+ /**
378
+ * Pinia preset
379
+ */
380
+ declare const piniaPreset: ImportPreset;
381
+ /**
382
+ * Kimesh runtime preset
383
+ */
384
+ declare const kimeshPreset: ImportPreset;
385
+ /**
386
+ * All built-in presets
387
+ */
388
+ declare const builtinPresets: Record<string, ImportPreset>;
389
+ /**
390
+ * Normalize preset configuration to ImportPreset
391
+ */
392
+ declare function normalizePreset(preset: string | ImportPreset): ImportPreset | null;
393
+ /**
394
+ * Get all enabled presets from configuration
395
+ */
396
+ declare function resolvePresets(presets: Array<string | ImportPreset> | undefined): ImportPreset[];
397
+ //#endregion
398
+ //#region src/types/generator.d.ts
399
+ declare function generateDtsFiles(registry: ImportRegistry, outputDir: string): Promise<void>;
400
+ declare function generateSourceDts(source: string, entries: ImportEntry[]): string;
401
+ //#endregion
402
+ //#region src/vite/plugin.d.ts
403
+ declare function autoImportPlugin(options: AutoImportPluginOptions): PluginOption[];
404
+ declare const kimeshAutoImport: typeof autoImportPlugin;
405
+ //#endregion
406
+ //#region src/index.d.ts
407
+ /**
408
+ * Build import registry from sources (convenience function)
409
+ */
410
+ declare function buildImportRegistry(sources: LayerAutoImportSource[]): Promise<ImportRegistry>;
411
+ /**
412
+ * Scan exports from a file (convenience function)
413
+ */
414
+ declare function scanExports(filePath: string): Promise<ScanResult>;
415
+ //#endregion
416
+ export { type AutoImportConfig, type AutoImportPluginOptions, type ConflictReport, ConflictResolver, type ExportInfo, type ImportEntry, ImportInjector, type ImportPreset, type ImportRegistry, type InjectionResult, type KimeshResolverOptions, type LayerAutoImportSource, OxcExportScanner, ReferenceDetector, RegistryBuilder, type ResolvedLayerInfo, type ScanResult, type ScriptPluginOptions, type TemplatePluginOptions, type TransformResult, type UnresolvedReference, autoImportPlugin, autoImportPlugin as default, buildImportRegistry, builtinPresets, createTemplatePlugin as createComponentsPlugin, createTemplatePlugin, createKimeshResolver, createScriptPlugin, generateDtsFiles as generateDts, generateDtsFiles, generateSourceDts, kimeshAutoImport, kimeshPreset, normalizePreset, piniaPreset, resolvePresets, scanExports, tanstackQueryPreset, vuePreset, vueRouterPreset };
417
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/scanner/oxc-scanner.ts","../src/scanner/reference-detector.ts","../src/registry/builder.ts","../src/registry/conflict-resolver.ts","../src/script/injector.ts","../src/script/plugin.ts","../src/template/resolver.ts","../src/template/plugin.ts","../src/presets/index.ts","../src/types/generator.ts","../src/vite/plugin.ts","../src/index.ts"],"mappings":"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"}