pupt 2.2.0 → 2.2.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.
@@ -1,7 +1,7 @@
1
1
  import { search } from '@inquirer/prompts';
2
- import { FileSearchEngine } from '../../search/file-search-engine.js';
2
+ import { FileSearchEngine } from 'pupt-lib';
3
3
  export async function fileSearchPrompt(config) {
4
- const searchEngine = new FileSearchEngine(config.basePath || '.', config.filter);
4
+ const searchEngine = await FileSearchEngine.create({ basePath: config.basePath || '.', filter: config.filter });
5
5
  return await search({
6
6
  message: config.message,
7
7
  source: async (input, { signal }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"file-search-prompt.js","sourceRoot":"","sources":["../../../src/prompts/input-types/file-search-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAYtE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAwB;IAC7D,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEjF,OAAO,MAAM,MAAM,CAAS;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,KAAK,EAAE,KAAyB,EAAE,EAAE,MAAM,EAA2B,EAAE,EAAE;YAC/E,uDAAuD;YACvD,+CAA+C;YAE/C,kDAAkD;YAClD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;gBACjF,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAChC,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACpD,OAAO;wBACL,IAAI,EAAE,SAAS,CAAC,OAAO;wBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;qBACnC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YAED,gDAAgD;YAChD,4EAA4E;YAC5E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO;oBACL,IAAI,EAAE,SAAS,CAAC,OAAO;oBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;iBACnC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,4DAA4D;YAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,YAAY,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBAEzE,qDAAqD;gBACrD,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;gBAEnF,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,yCAAyC;oBACzC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,sBAAsB,KAAK,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,WAAW,EAAE,iCAAiC;qBAC/C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"file-search-prompt.js","sourceRoot":"","sources":["../../../src/prompts/input-types/file-search-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAY5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAwB;IAC7D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhH,OAAO,MAAM,MAAM,CAAS;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,KAAK,EAAE,KAAyB,EAAE,EAAE,MAAM,EAA2B,EAAE,EAAE;YAC/E,uDAAuD;YACvD,+CAA+C;YAE/C,kDAAkD;YAClD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;gBACjF,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAChC,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACpD,OAAO;wBACL,IAAI,EAAE,SAAS,CAAC,OAAO;wBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;qBACnC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YAED,gDAAgD;YAChD,4EAA4E;YAC5E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO;oBACL,IAAI,EAAE,SAAS,CAAC,OAAO;oBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;iBACnC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,4DAA4D;YAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,YAAY,GAAG,YAAY,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBAEzE,qDAAqD;gBACrD,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;gBAEnF,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,yCAAyC;oBACzC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,sBAAsB,KAAK,EAAE;wBACnC,KAAK,EAAE,YAAY;wBACnB,WAAW,EAAE,iCAAiC;qBAC/C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pupt",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Powerful Universal Prompt Tool - your faithful prompt companion",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -104,12 +104,11 @@
104
104
  "execa": "^9.6.0",
105
105
  "fs-extra": "^11.3.1",
106
106
  "glob": "^11.0.3",
107
- "minimatch": "^10.0.3",
108
107
  "minisearch": "^7.1.2",
109
108
  "ora": "^8.2.0",
110
109
  "pino": "^9.9.0",
111
110
  "pino-pretty": "^13.1.1",
112
- "pupt-lib": "^1.3.1",
111
+ "pupt-lib": "^1.3.5",
113
112
  "simple-git": "^3.28.0",
114
113
  "strip-ansi": "^7.1.0",
115
114
  "uuid": "^11.1.0",
@@ -1,12 +0,0 @@
1
- import { type Theme } from '@inquirer/core';
2
- import type { PartialDeep } from '@inquirer/type';
3
- interface FilePromptConfig {
4
- message: string;
5
- basePath?: string;
6
- filter?: string;
7
- default?: string;
8
- theme?: PartialDeep<Theme>;
9
- }
10
- export declare const filePrompt: import("@inquirer/type").Prompt<string, FilePromptConfig>;
11
- export {};
12
- //# sourceMappingURL=file-prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/input-types/file-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,KAAK,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYlD,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,2DAmKrB,CAAC"}
@@ -1,165 +0,0 @@
1
- import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, isBackspaceKey, makeTheme, } from '@inquirer/core';
2
- import chalk from 'chalk';
3
- import path from 'node:path';
4
- import { listFilesWithCache, sortFilesByModTime, filterFilesByPattern, expandPath, resolveFilePath, } from '../../utils/file-utils.js';
5
- import { Trie, completeFilePath } from '../../utils/trie.js';
6
- export const filePrompt = createPrompt((config, done) => {
7
- const { message, basePath = './', filter = '', default: defaultValue = '' } = config;
8
- const theme = makeTheme(config.theme);
9
- const prefix = usePrefix({ theme });
10
- const [input, setInput] = useState(defaultValue);
11
- const [cursorPosition, setCursorPosition] = useState(defaultValue.length);
12
- const [suggestions, setSuggestions] = useState([]);
13
- const [selectedSuggestion, setSelectedSuggestion] = useState(0);
14
- const [error, setError] = useState(null);
15
- const getCurrentPath = () => {
16
- const expandedInput = expandPath(input);
17
- const resolvedPath = resolveFilePath(expandedInput, basePath);
18
- // If input ends with a separator, it's a directory
19
- if (input.endsWith(path.sep)) {
20
- return resolvedPath;
21
- }
22
- // Otherwise, use the directory part of the path
23
- const dirPath = path.dirname(resolvedPath);
24
- // Ensure we have a valid path
25
- return dirPath || basePath;
26
- };
27
- const getBaseName = () => {
28
- if (input.endsWith(path.sep)) {
29
- return '';
30
- }
31
- return path.basename(input);
32
- };
33
- useKeypress((key) => {
34
- if (isEnterKey(key)) {
35
- if (suggestions.length > 0 && selectedSuggestion >= 0) {
36
- // Use selected suggestion
37
- const selected = suggestions[selectedSuggestion];
38
- let newPath;
39
- // If input ends with a separator, we're in a directory
40
- if (input.endsWith(path.sep)) {
41
- newPath = input + selected;
42
- }
43
- else {
44
- const currentDir = path.dirname(input);
45
- newPath = currentDir === '.' ? selected : path.join(currentDir, selected);
46
- }
47
- const expandedPath = expandPath(newPath);
48
- const finalPath = resolveFilePath(expandedPath, basePath);
49
- done(finalPath);
50
- }
51
- else {
52
- // Submit current input
53
- const expandedInput = expandPath(input);
54
- const finalPath = resolveFilePath(expandedInput, basePath);
55
- done(finalPath);
56
- }
57
- }
58
- else if (key.name === 'tab') {
59
- // Tab completion
60
- try {
61
- const currentPath = getCurrentPath();
62
- if (!currentPath) {
63
- throw new Error('Invalid path');
64
- }
65
- const files = listFilesWithCache(currentPath);
66
- const sortedFiles = sortFilesByModTime(files);
67
- const filteredFiles = filter ? filterFilesByPattern(sortedFiles, filter) : sortedFiles;
68
- // Build trie with file names
69
- const trie = new Trie();
70
- const fileNames = filteredFiles.map(f => f.isDirectory ? f.name + path.sep : f.name);
71
- fileNames.forEach(name => trie.insert(name));
72
- // Complete based on current input
73
- const baseName = getBaseName();
74
- const result = completeFilePath(baseName, fileNames);
75
- if (result.suggestions.length === 0 && result.completed !== baseName) {
76
- // Single match - complete it
77
- const currentDir = path.dirname(input);
78
- const completed = currentDir === '.' ? result.completed : path.join(currentDir, result.completed);
79
- setInput(completed);
80
- setCursorPosition(completed.length);
81
- setSuggestions([]);
82
- }
83
- else if (result.suggestions.length > 0) {
84
- // Multiple matches - show suggestions
85
- setSuggestions(result.suggestions);
86
- setSelectedSuggestion(0);
87
- // Complete to common prefix
88
- if (result.completed !== baseName) {
89
- const currentDir = path.dirname(input);
90
- const completed = currentDir === '.' ? result.completed : path.join(currentDir, result.completed);
91
- setInput(completed);
92
- setCursorPosition(completed.length);
93
- }
94
- }
95
- setError(null);
96
- }
97
- catch (err) {
98
- setError(err instanceof Error ? err.message : 'Error listing files');
99
- }
100
- }
101
- else if (key.name === 'up' && suggestions.length > 0) {
102
- setSelectedSuggestion(Math.max(0, selectedSuggestion - 1));
103
- }
104
- else if (key.name === 'down' && suggestions.length > 0) {
105
- setSelectedSuggestion(Math.min(suggestions.length - 1, selectedSuggestion + 1));
106
- }
107
- else if (key.name === 'escape') {
108
- setSuggestions([]);
109
- setSelectedSuggestion(0);
110
- }
111
- else if (isBackspaceKey(key)) {
112
- if (cursorPosition > 0) {
113
- const newInput = input.slice(0, cursorPosition - 1) + input.slice(cursorPosition);
114
- setInput(newInput);
115
- setCursorPosition(cursorPosition - 1);
116
- setSuggestions([]);
117
- setSelectedSuggestion(0);
118
- }
119
- }
120
- else if (key.name === 'left') {
121
- setCursorPosition(Math.max(0, cursorPosition - 1));
122
- }
123
- else if (key.name === 'right') {
124
- setCursorPosition(Math.min(input.length, cursorPosition + 1));
125
- }
126
- else if (key.name === 'home') {
127
- setCursorPosition(0);
128
- }
129
- else if (key.name === 'end') {
130
- setCursorPosition(input.length);
131
- }
132
- else if (key.name && !key.ctrl && key.name.length === 1) {
133
- // Regular character input
134
- const newInput = input.slice(0, cursorPosition) + key.name + input.slice(cursorPosition);
135
- setInput(newInput);
136
- setCursorPosition(cursorPosition + 1);
137
- setSuggestions([]);
138
- setSelectedSuggestion(0);
139
- }
140
- });
141
- // Build display
142
- let display = `${prefix} ${theme.style.message(message, 'idle')} `;
143
- // Show input with cursor
144
- const beforeCursor = input.slice(0, cursorPosition);
145
- const afterCursor = input.slice(cursorPosition);
146
- const inputDisplay = theme.style.answer(beforeCursor + '│' + afterCursor);
147
- display += inputDisplay;
148
- if (error) {
149
- display += '\n' + theme.style.error(` ! ${error}`);
150
- }
151
- if (suggestions.length > 0) {
152
- display += '\n' + chalk.dim(' Suggestions:');
153
- suggestions.forEach((suggestion, index) => {
154
- const isSelected = index === selectedSuggestion;
155
- const marker = isSelected ? '❯' : ' ';
156
- const text = isSelected
157
- ? theme.style.highlight(suggestion)
158
- : chalk.dim(suggestion);
159
- display += '\n ' + marker + ' ' + text;
160
- });
161
- display += '\n' + chalk.dim(' (Use ↑↓ to navigate, Tab to complete, Enter to select)');
162
- }
163
- return display;
164
- });
165
- //# sourceMappingURL=file-prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-prompt.js","sourceRoot":"","sources":["../../../src/prompts/input-types/file-prompt.ts"],"names":[],"mappings":"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"}