@fnndsc/brasa 0.54.3 → 0.55.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 (48) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/fs/pull.js +32 -14
  3. package/dist/builtins/fs/pull.js.map +1 -1
  4. package/dist/builtins/help.js +7 -0
  5. package/dist/builtins/help.js.map +1 -1
  6. package/dist/builtins/helpSections.js +60 -2
  7. package/dist/builtins/helpSections.js.map +1 -1
  8. package/dist/builtins/operandRuns.d.ts +22 -0
  9. package/dist/builtins/operandRuns.js +67 -0
  10. package/dist/builtins/operandRuns.js.map +1 -0
  11. package/dist/builtins/operands.d.ts +14 -3
  12. package/dist/builtins/operands.js +31 -12
  13. package/dist/builtins/operands.js.map +1 -1
  14. package/dist/builtins/pluginExecute.d.ts +2 -1
  15. package/dist/builtins/pluginExecute.js +92 -5
  16. package/dist/builtins/pluginExecute.js.map +1 -1
  17. package/dist/builtins/res/pipeline.args.d.ts +7 -1
  18. package/dist/builtins/res/pipeline.args.js +12 -2
  19. package/dist/builtins/res/pipeline.args.js.map +1 -1
  20. package/dist/builtins/res/pipeline.js +60 -4
  21. package/dist/builtins/res/pipeline.js.map +1 -1
  22. package/dist/builtins/res/play.js +8 -6
  23. package/dist/builtins/res/play.js.map +1 -1
  24. package/dist/builtins/runEcho.d.ts +31 -0
  25. package/dist/builtins/runEcho.js +54 -0
  26. package/dist/builtins/runEcho.js.map +1 -0
  27. package/dist/chris/chrisCommands.js +4 -1
  28. package/dist/chris/chrisCommands.js.map +1 -1
  29. package/dist/chris/commandFallback.d.ts +11 -0
  30. package/dist/chris/commandFallback.js +110 -12
  31. package/dist/chris/commandFallback.js.map +1 -1
  32. package/dist/chris/help.js +11 -0
  33. package/dist/chris/help.js.map +1 -1
  34. package/dist/core/engine.js +15 -7
  35. package/dist/core/engine.js.map +1 -1
  36. package/dist/core/jobletScope.d.ts +47 -0
  37. package/dist/core/jobletScope.js +55 -0
  38. package/dist/core/jobletScope.js.map +1 -0
  39. package/dist/core/joblets.d.ts +4 -1
  40. package/dist/core/joblets.js +6 -2
  41. package/dist/core/joblets.js.map +1 -1
  42. package/dist/lib/semicolonParser.d.ts +29 -4
  43. package/dist/lib/semicolonParser.js +44 -19
  44. package/dist/lib/semicolonParser.js.map +1 -1
  45. package/dist/lib/wildcard.js +57 -50
  46. package/dist/lib/wildcard.js.map +1 -1
  47. package/dist/notes.json +1 -1
  48. package/package.json +2 -2
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @module
7
7
  */
8
- import { minimatch } from 'minimatch';
8
+ import { Minimatch, minimatch } from 'minimatch';
9
9
  import { listingItemsFromVfs_make } from './vfs/listing.js';
10
10
  import { session } from '../session/index.js';
11
11
  import { shellWord_literal, shellWord_unquoted } from './parser.js';
@@ -23,68 +23,75 @@ export function string_checkHasWildcard(arg) {
23
23
  return /[*?[\]]/.test(arg);
24
24
  }
25
25
  /**
26
- * Expands a rendered pattern and its quote-aware minimatch pattern.
26
+ * Lists a directory for expansion, through a CFS link and the listing cache.
27
+ *
28
+ * @param logicalDir - The directory as the caller spells it.
29
+ * @returns Its items, or null when it cannot be listed.
30
+ */
31
+ async function directoryItems_list(logicalDir) {
32
+ const physicalDir = (await backendInstalled_get()?.vfs?.path_physical?.(logicalDir)) ?? logicalDir;
33
+ const listCache = listingCache_get();
34
+ const cached = listCache.cache_get(physicalDir);
35
+ if (cached)
36
+ return cached.data;
37
+ const vfsResult = await vfsDispatcher_get().list(physicalDir);
38
+ if (!vfsResult.ok)
39
+ return null;
40
+ const items = listingItemsFromVfs_make(vfsResult.value);
41
+ listCache.cache_set(physicalDir, items);
42
+ return items;
43
+ }
44
+ /**
45
+ * Expands a rendered pattern and its quote-aware minimatch pattern, one path
46
+ * component at a time, as POSIX `sh` does: a wildcard may stand in any component. The
47
+ * literal lead is listed once, then each match of each later component.
27
48
  *
28
49
  * @param value - Rendered shell-word value.
29
50
  * @param globPattern - Quote-aware minimatch pattern.
30
- * @returns A Promise resolving to Result<WildcardMatch[]>.
51
+ * @returns A Promise resolving to Result<WildcardMatch[]>, sorted by name at each level.
31
52
  * Ok([]) = no matches (not an error).
32
53
  * Err(...) = couldn't expand (API failure, permission denied, etc.).
33
54
  */
34
55
  async function wildcardMatches_expand(value, globPattern) {
35
56
  try {
36
- // Get current directory
37
57
  const cwd = await session.getCWD();
38
58
  const resolvedValue = await path_resolve(value);
39
59
  const resolvedPattern = await path_resolve(globPattern);
40
- // Handle patterns with directory components (e.g., "data/*.txt")
41
- let searchDir = cwd;
42
- let physicalSearchDir = cwd;
43
- let matchPattern = resolvedPattern;
44
- // Resolve the non-wildcard parent directory before listing. This gives
45
- // `~/...` its normal meaning and follows a CFS `.chrislink` parent while
46
- // retaining the caller's logical spelling in the expanded result.
47
- if (resolvedValue.includes('/')) {
48
- const valueParts = resolvedValue.split('/');
49
- const patternParts = resolvedPattern.split('/');
50
- const lastPart = patternParts.pop() || '*';
51
- valueParts.pop();
52
- const dirPart = valueParts.join('/');
53
- searchDir = dirPart || '/';
54
- physicalSearchDir = (await backendInstalled_get()?.vfs?.path_physical?.(searchDir)) ?? searchDir;
55
- matchPattern = lastPart;
56
- }
57
- // List files in the directory (check cache first)
58
- let items = [];
59
- const listCache = listingCache_get();
60
- const cached = listCache.cache_get(physicalSearchDir);
61
- if (cached) {
62
- items = cached.data;
63
- }
64
- else {
65
- const vfsResult = await vfsDispatcher_get().list(physicalSearchDir);
66
- if (vfsResult.ok) {
67
- items = listingItemsFromVfs_make(vfsResult.value);
68
- listCache.cache_set(physicalSearchDir, items);
69
- }
70
- else {
71
- return Err();
60
+ // A word with no directory part is one component, matched in cwd. A path
61
+ // keeps its literal lead (`~/...` resolved, a quoted `*` as itself) and
62
+ // expands from the first component that holds a wildcard.
63
+ const valueParts = resolvedValue.includes('/') ? resolvedValue.split('/') : [resolvedValue];
64
+ const patternParts = resolvedValue.includes('/') ? resolvedPattern.split('/') : [resolvedPattern];
65
+ const magicIndex = patternParts.findIndex((part) => new Minimatch(part).hasMagic());
66
+ const first = magicIndex === -1 ? patternParts.length - 1 : magicIndex;
67
+ const base = resolvedValue.includes('/') ? (valueParts.slice(0, first).join('/') || '/') : cwd;
68
+ let matches = [{ path: base, type: 'dir' }];
69
+ for (let index = first; index < patternParts.length; index++) {
70
+ const pattern = patternParts[index] || '*';
71
+ const literal = new Minimatch(pattern).hasMagic() ? null : (valueParts[index] ?? pattern);
72
+ const next = [];
73
+ for (const parent of matches) {
74
+ // Past the first level a match that is a file, or cannot be listed, has nothing under it.
75
+ if (index > first && parent.type === 'file')
76
+ continue;
77
+ const items = await directoryItems_list(parent.path);
78
+ if (items === null) {
79
+ if (index === first)
80
+ return Err();
81
+ continue;
82
+ }
83
+ const kept = items
84
+ .filter((item) => literal !== null ? item.name === literal : minimatch(item.name, pattern))
85
+ .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
86
+ for (const item of kept)
87
+ next.push({ path: `${parent.path}/${item.name}`.replace(/\/+/g, '/'), type: item.type });
72
88
  }
89
+ matches = next;
90
+ }
91
+ // A match under cwd reads as the caller typed it: the bare name.
92
+ if (base === cwd) {
93
+ matches = matches.map((match) => ({ ...match, path: match.path.slice(cwd.replace(/\/+$/, '').length + 1) }));
73
94
  }
74
- // Filter items by pattern
75
- const matches = items
76
- .filter((item) => minimatch(item.name, matchPattern))
77
- .map((item) => {
78
- // Return a full path if we searched a different directory.
79
- const itemPath = searchDir !== cwd
80
- ? `${searchDir}/${item.name}`.replace(/\/+/g, '/')
81
- : item.name;
82
- return {
83
- path: itemPath,
84
- type: item.type,
85
- };
86
- });
87
- // Ok([]) for no matches (not an error)
88
95
  return Ok(matches);
89
96
  }
90
97
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/lib/wildcard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/lib/wildcard.ts"],"names":[],"mappings":"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"}