@fnndsc/brasa 0.35.1 → 0.36.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 (57) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/fs/ls.js +35 -0
  3. package/dist/builtins/fs/ls.js.map +1 -1
  4. package/dist/builtins/help.d.ts +5 -0
  5. package/dist/builtins/help.js +90 -17
  6. package/dist/builtins/help.js.map +1 -1
  7. package/dist/builtins/net/query.csv.d.ts +1 -18
  8. package/dist/builtins/net/query.csv.js +43 -3
  9. package/dist/builtins/net/query.csv.js.map +1 -1
  10. package/dist/builtins/net/query.ignored.d.ts +16 -0
  11. package/dist/builtins/net/query.ignored.js +64 -0
  12. package/dist/builtins/net/query.ignored.js.map +1 -0
  13. package/dist/builtins/net/query.js +14 -66
  14. package/dist/builtins/net/query.js.map +1 -1
  15. package/dist/builtins/net/query.view.d.ts +8 -0
  16. package/dist/builtins/net/query.view.js +74 -0
  17. package/dist/builtins/net/query.view.js.map +1 -0
  18. package/dist/builtins/proc.js +40 -1
  19. package/dist/builtins/proc.js.map +1 -1
  20. package/dist/builtins/pronouns.d.ts +8 -0
  21. package/dist/builtins/pronouns.js +39 -0
  22. package/dist/builtins/pronouns.js.map +1 -0
  23. package/dist/builtins/res/gather.js +27 -8
  24. package/dist/builtins/res/gather.js.map +1 -1
  25. package/dist/builtins/sys/command.d.ts +20 -0
  26. package/dist/builtins/sys/command.js +40 -0
  27. package/dist/builtins/sys/command.js.map +1 -0
  28. package/dist/builtins/sys/grep.d.ts +48 -0
  29. package/dist/builtins/sys/grep.js +327 -0
  30. package/dist/builtins/sys/grep.js.map +1 -0
  31. package/dist/chris/commandFallback.js +15 -0
  32. package/dist/chris/commandFallback.js.map +1 -1
  33. package/dist/chris/help.d.ts +2 -0
  34. package/dist/chris/help.js +91 -16
  35. package/dist/chris/help.js.map +1 -1
  36. package/dist/chris/references.js +2 -2
  37. package/dist/chris/references.js.map +1 -1
  38. package/dist/core/backend.d.ts +6 -0
  39. package/dist/core/backend.js.map +1 -1
  40. package/dist/core/commandRegistry.d.ts +6 -0
  41. package/dist/core/commandRegistry.js.map +1 -1
  42. package/dist/core/coreCommands.js +6 -0
  43. package/dist/core/coreCommands.js.map +1 -1
  44. package/dist/core/dispatch.js +32 -5
  45. package/dist/core/dispatch.js.map +1 -1
  46. package/dist/core/expansion.js +16 -5
  47. package/dist/core/expansion.js.map +1 -1
  48. package/dist/core/listing.d.ts +50 -0
  49. package/dist/core/listing.js +76 -0
  50. package/dist/core/listing.js.map +1 -0
  51. package/dist/notes.json +1 -1
  52. package/dist/session/answer.d.ts +82 -0
  53. package/dist/session/answer.js +129 -9
  54. package/dist/session/answer.js.map +1 -1
  55. package/dist/session/answerAdapters.js +39 -3
  56. package/dist/session/answerAdapters.js.map +1 -1
  57. package/package.json +4 -4
@@ -49,6 +49,10 @@ export interface AnswerRow {
49
49
  address?: string;
50
50
  /** What to call it in a readout. */
51
51
  label: string;
52
+ /** What a filter matches it on (its line as the listing shows it); the label when absent. */
53
+ text?: string;
54
+ /** Its parent row (`STD:<path>` for a series), for a filter that keeps a row with its context. */
55
+ parent?: string;
52
56
  }
53
57
  /** A row's handle: its kind and its place in that kind's sequence. */
54
58
  export interface AnswerHandle {
@@ -74,6 +78,10 @@ export interface SessionAnswer {
74
78
  source: string;
75
79
  /** The rows, in the order the model holds them. */
76
80
  rows: AnswerRow[];
81
+ /** The model kind the rows came from, for a filter of the held listing. */
82
+ kind: string;
83
+ /** The model itself. */
84
+ data: unknown;
77
85
  }
78
86
  /** The answer rows a model carries, or null when it is not a listing. */
79
87
  export type AnswerAdapter = (data: unknown) => AnswerRow[] | null;
@@ -116,6 +124,80 @@ export declare function answerKind_count(kind: AnswerKind): number;
116
124
  * @returns The handles.
117
125
  */
118
126
  export declare function answerHandles_get(): NumberedHandle[];
127
+ /**
128
+ * Keeps the numbers a listing's rows already wore with its data, so a
129
+ * filtered listing's rows keep them: `@SER41` stays `@SER41` (#1100).
130
+ *
131
+ * @param data - The listing's model data.
132
+ * @param ordinals - `KIND:address` to the number it wore.
133
+ */
134
+ export declare function answerOrdinals_attach(data: object, ordinals: ReadonlyMap<string, number>): void;
135
+ /** What filters a kind's model down to the rows kept. */
136
+ export type AnswerFilter = (data: unknown, keep: ReadonlySet<string>) => unknown;
137
+ /**
138
+ * Registers how a model kind is filtered to a set of its rows.
139
+ *
140
+ * @param kind - The envelope model kind.
141
+ * @param filter - Builds the model holding only the kept rows (`KIND:address`).
142
+ */
143
+ export declare function answerFilter_register(kind: string, filter: AnswerFilter): void;
144
+ /**
145
+ * A model filtered to the rows kept, or null when its kind has no filter.
146
+ *
147
+ * @param kind - The envelope model kind.
148
+ * @param data - The model.
149
+ * @param keep - The rows kept, as `KIND:address`.
150
+ * @returns The filtered model.
151
+ */
152
+ export declare function answerFilter_apply(kind: string, data: unknown, keep: ReadonlySet<string>): unknown;
153
+ /** A row's key: its kind and address, as numbers and filters name it. */
154
+ export declare function answerRow_key(row: AnswerRow): string;
155
+ /**
156
+ * A model's rows, as its adapter reads them, without holding them.
157
+ *
158
+ * @param kind - The envelope model kind.
159
+ * @param data - The model.
160
+ * @returns The rows, or null when the model is not a listing.
161
+ */
162
+ export declare function answerRows_of(kind: string, data: unknown): AnswerRow[] | null;
163
+ /**
164
+ * The handles a model's rows will wear once it is the held listing.
165
+ *
166
+ * @param kind - The envelope model kind.
167
+ * @param data - The model.
168
+ * @returns The handles, in row order, or null when the model is not a listing.
169
+ */
170
+ export declare function answerNumbering_of(kind: string, data: unknown): NumberedHandle[] | null;
171
+ /**
172
+ * A handle as it is printed and typed: short, `@SER3`.
173
+ *
174
+ * @param handle - The handle.
175
+ * @returns The word.
176
+ */
177
+ export declare function handle_word(handle: {
178
+ kind: AnswerKind;
179
+ ordinal: number;
180
+ }): string;
181
+ /**
182
+ * Each row's printed handle, by its kind and address, for a renderer that
183
+ * walks its own model: `handles.get('SER:' + path)`.
184
+ *
185
+ * @param handles - The numbered rows.
186
+ * @returns Kind-and-address to word.
187
+ */
188
+ export declare function handleWords_of(handles: ReadonlyArray<NumberedHandle>): Map<string, string>;
189
+ /**
190
+ * The footer that says what is numbered, in the form an index is typed:
191
+ * `numbered: @PAT1, @STD1-9, @SER1-235` (runs of numbers as ranges, gaps
192
+ * with commas: `@SER1,3,41`). It is also the cue for what `@SER3` means now.
193
+ *
194
+ * @param handles - The numbered rows.
195
+ * @returns The footer, or '' when nothing is numbered.
196
+ */
197
+ export declare function numberedFooter_of(handles: ReadonlyArray<{
198
+ kind: AnswerKind;
199
+ ordinal: number;
200
+ }>): string;
119
201
  /**
120
202
  * What is currently numbered, for a surface that lights its index pills.
121
203
  *
@@ -55,7 +55,7 @@ export function answer_note(kind, data, source) {
55
55
  if (rows === null || rows.length === 0)
56
56
  return;
57
57
  sequence += 1;
58
- held = { source, rows };
58
+ held = { source, rows, kind, data };
59
59
  // A surface cannot light the index pills on the right listing unless it is
60
60
  // told which one the numbers now count. Pills that lie are worse than none.
61
61
  ambient_publish({
@@ -79,8 +79,10 @@ export function answer_note(kind, data, source) {
79
79
  export function answerRow_get(handle) {
80
80
  if (held === null)
81
81
  return null;
82
- const ofKind = held.rows.filter((row) => row.kind === handle.kind);
83
- const row = ofKind[handle.ordinal - 1];
82
+ // By the number the row wears, which a filtered listing keeps (#1100).
83
+ const numbered = rows_number(held.rows, held.data);
84
+ const at = numbered.findIndex((one) => one.kind === handle.kind && one.ordinal === handle.ordinal);
85
+ const row = at < 0 ? undefined : held.rows[at];
84
86
  if (row === undefined)
85
87
  return null;
86
88
  consulted = true;
@@ -106,14 +108,132 @@ export function answerKind_count(kind) {
106
108
  * @returns The handles.
107
109
  */
108
110
  export function answerHandles_get() {
109
- if (held === null)
110
- return [];
111
+ return held === null ? [] : rows_number(held.rows, held.data);
112
+ }
113
+ /** Numbers a listing's rows already wore, kept with the listing's data (a filtered listing). */
114
+ const givenOrdinals = new WeakMap();
115
+ /**
116
+ * Keeps the numbers a listing's rows already wore with its data, so a
117
+ * filtered listing's rows keep them: `@SER41` stays `@SER41` (#1100).
118
+ *
119
+ * @param data - The listing's model data.
120
+ * @param ordinals - `KIND:address` to the number it wore.
121
+ */
122
+ export function answerOrdinals_attach(data, ordinals) {
123
+ givenOrdinals.set(data, new Map(ordinals));
124
+ }
125
+ /** Model kind to its filter. */
126
+ const filters = new Map();
127
+ /**
128
+ * Registers how a model kind is filtered to a set of its rows.
129
+ *
130
+ * @param kind - The envelope model kind.
131
+ * @param filter - Builds the model holding only the kept rows (`KIND:address`).
132
+ */
133
+ export function answerFilter_register(kind, filter) {
134
+ filters.set(kind, filter);
135
+ }
136
+ /**
137
+ * A model filtered to the rows kept, or null when its kind has no filter.
138
+ *
139
+ * @param kind - The envelope model kind.
140
+ * @param data - The model.
141
+ * @param keep - The rows kept, as `KIND:address`.
142
+ * @returns The filtered model.
143
+ */
144
+ export function answerFilter_apply(kind, data, keep) {
145
+ const filter = filters.get(kind);
146
+ return filter === undefined ? null : filter(data, keep);
147
+ }
148
+ /** A row's key: its kind and address, as numbers and filters name it. */
149
+ export function answerRow_key(row) {
150
+ return `${row.kind}:${row.address ?? row.values[0] ?? ''}`;
151
+ }
152
+ /**
153
+ * Numbers rows: one sequence per kind, in the order the rows stand. The one
154
+ * place a number is made, so what a listing prints is what an index expands
155
+ * to (#1099).
156
+ *
157
+ * @param rows - The rows.
158
+ * @returns Each row's handle and address.
159
+ */
160
+ function rows_number(rows, data) {
161
+ // A filtered listing's rows keep the numbers they wore; any other row is
162
+ // counted in its kind's sequence.
163
+ const given = data !== null && typeof data === 'object' ? givenOrdinals.get(data) : undefined;
111
164
  const seen = new Map();
112
- return held.rows.map((row) => {
113
- const ordinal = (seen.get(row.kind) ?? 0) + 1;
114
- seen.set(row.kind, ordinal);
115
- return { kind: row.kind, ordinal, address: row.address ?? row.values[0] ?? '' };
165
+ return rows.map((row) => {
166
+ const counted = (seen.get(row.kind) ?? 0) + 1;
167
+ seen.set(row.kind, counted);
168
+ const address = row.address ?? row.values[0] ?? '';
169
+ return { kind: row.kind, ordinal: given?.get(`${row.kind}:${address}`) ?? counted, address };
170
+ });
171
+ }
172
+ /**
173
+ * A model's rows, as its adapter reads them, without holding them.
174
+ *
175
+ * @param kind - The envelope model kind.
176
+ * @param data - The model.
177
+ * @returns The rows, or null when the model is not a listing.
178
+ */
179
+ export function answerRows_of(kind, data) {
180
+ return adapters.get(kind)?.(data) ?? null;
181
+ }
182
+ /**
183
+ * The handles a model's rows will wear once it is the held listing.
184
+ *
185
+ * @param kind - The envelope model kind.
186
+ * @param data - The model.
187
+ * @returns The handles, in row order, or null when the model is not a listing.
188
+ */
189
+ export function answerNumbering_of(kind, data) {
190
+ const rows = adapters.get(kind)?.(data) ?? null;
191
+ return rows === null ? null : rows_number(rows, data);
192
+ }
193
+ /**
194
+ * A handle as it is printed and typed: short, `@SER3`.
195
+ *
196
+ * @param handle - The handle.
197
+ * @returns The word.
198
+ */
199
+ export function handle_word(handle) {
200
+ return `@${handle.kind}${handle.ordinal}`;
201
+ }
202
+ /**
203
+ * Each row's printed handle, by its kind and address, for a renderer that
204
+ * walks its own model: `handles.get('SER:' + path)`.
205
+ *
206
+ * @param handles - The numbered rows.
207
+ * @returns Kind-and-address to word.
208
+ */
209
+ export function handleWords_of(handles) {
210
+ return new Map(handles.map((handle) => [`${handle.kind}:${handle.address}`, handle_word(handle)]));
211
+ }
212
+ /**
213
+ * The footer that says what is numbered, in the form an index is typed:
214
+ * `numbered: @PAT1, @STD1-9, @SER1-235` (runs of numbers as ranges, gaps
215
+ * with commas: `@SER1,3,41`). It is also the cue for what `@SER3` means now.
216
+ *
217
+ * @param handles - The numbered rows.
218
+ * @returns The footer, or '' when nothing is numbered.
219
+ */
220
+ export function numberedFooter_of(handles) {
221
+ const byKind = new Map();
222
+ for (const handle of handles)
223
+ byKind.set(handle.kind, [...(byKind.get(handle.kind) ?? []), handle.ordinal]);
224
+ const parts = [...byKind].map(([kind, ordinals]) => {
225
+ const sorted = [...new Set(ordinals)].sort((a, b) => a - b);
226
+ const runs = [];
227
+ for (let at = 0; at < sorted.length;) {
228
+ let end = at;
229
+ while (end + 1 < sorted.length && (sorted[end + 1] ?? 0) === (sorted[end] ?? 0) + 1)
230
+ end += 1;
231
+ runs.push(end > at ? `${sorted[at]}-${sorted[end]}` : `${sorted[at]}`);
232
+ at = end + 1;
233
+ }
234
+ return `@${kind}${runs.join(',')}`;
116
235
  });
236
+ return parts.length === 0 ? '' : `numbered: ${parts.join(', ')}`;
117
237
  }
118
238
  /**
119
239
  * What is currently numbered, for a surface that lights its index pills.
@@ -1 +1 @@
1
- {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../src/session/answer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../src/session/answer.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import path from 'path';
11
11
  import { patientAddress_of } from '@fnndsc/menu';
12
- import { answerAdapter_register } from './answer.js';
12
+ import { answerAdapter_register, answerFilter_register } from './answer.js';
13
13
  /**
14
14
  * Registers the adapters. Called once, when the engine is created.
15
15
  */
@@ -28,6 +28,7 @@ export function answerAdapters_register() {
28
28
  kind: item.type === 'dir' ? 'DIR' : 'FIL',
29
29
  values: [path.posix.join(listing.path, item.name)],
30
30
  label: item.name,
31
+ text: item.name,
31
32
  });
32
33
  }
33
34
  }
@@ -64,26 +65,41 @@ export function answerAdapters_register() {
64
65
  .filter((one) => typeof one === 'string');
65
66
  if (seriesPaths.length === 0)
66
67
  continue;
67
- rows.push({ kind: 'PAT', address: patientAddress_of(patient), values: seriesPaths, label: patient.patientName || patient.patientId });
68
+ rows.push({ kind: 'PAT', address: patientAddress_of(patient), values: seriesPaths, label: patient.patientName || patient.patientId, text: `${patient.patientName ?? ''} (ID: ${patient.patientId})` });
68
69
  }
70
+ // A study's patient, by the same match the patients were found with: the
71
+ // parent a filter keeps a study with.
72
+ const patientOf = (study) => {
73
+ const owner = patients.find((patient) => patient.patientId === study.patientId && (patient.server === undefined || study.server === undefined || study.server === patient.server));
74
+ return owner === undefined ? undefined : `PAT:${patientAddress_of(owner)}`;
75
+ };
69
76
  for (const study of model.studies) {
70
77
  const series = Array.isArray(study.series) ? study.series : [];
71
78
  const seriesPaths = series
72
79
  .map((one) => one.vfsPath)
73
80
  .filter((one) => typeof one === 'string');
74
81
  if (typeof study.vfsPath === 'string') {
82
+ const parent = patientOf(study);
75
83
  rows.push({
76
84
  kind: 'STD',
77
85
  // The study's own path leads, as the address a surface matches on;
78
86
  // its series follow, as what a verb is handed.
79
87
  values: [study.vfsPath, ...seriesPaths],
80
88
  label: study.description || 'study',
89
+ text: [study.description, study.date, study.modalities].filter((one) => one !== '').join(' '),
90
+ ...(parent !== undefined ? { parent } : {}),
81
91
  });
82
92
  }
83
93
  for (const one of series) {
84
94
  if (typeof one.vfsPath !== 'string')
85
95
  continue;
86
- rows.push({ kind: 'SER', values: [one.vfsPath], label: one.description || one.modality || 'series' });
96
+ rows.push({
97
+ kind: 'SER',
98
+ values: [one.vfsPath],
99
+ label: one.description || one.modality || 'series',
100
+ text: `${one.description || '(no description)'}${one.modality ? ` [${one.modality}]` : ''}${one.fileCount === undefined ? '' : ` ${one.fileCount} files`}`,
101
+ ...(typeof study.vfsPath === 'string' ? { parent: `STD:${study.vfsPath}` } : {}),
102
+ });
87
103
  }
88
104
  }
89
105
  return rows;
@@ -100,7 +116,27 @@ export function answerAdapters_register() {
100
116
  kind: member.kind === 'dir' ? 'DIR' : member.kind === 'file' ? 'FIL' : 'SER',
101
117
  values: [member.vfsPath],
102
118
  label: member.description ?? path.posix.basename(member.vfsPath),
119
+ text: `${member.description ?? path.posix.basename(member.vfsPath)} ${member.vfsPath}`,
103
120
  }));
104
121
  });
122
+ // Each listing filtered to the rows a filter kept (`KIND:address`), as the
123
+ // same kind of model, so it renders, numbers and travels as before (#1100).
124
+ answerFilter_register('fs.listing', (data, keep) => (Array.isArray(data) ? data : []).map((listing) => ({
125
+ ...listing,
126
+ items: listing.items.filter((item) => keep.has(`${item.type === 'dir' ? 'DIR' : 'FIL'}:${path.posix.join(listing.path, item.name)}`)),
127
+ })));
128
+ answerFilter_register('pacs.query', (data, keep) => {
129
+ const model = data;
130
+ const studies = model.studies
131
+ .filter((study) => typeof study.vfsPath === 'string' && keep.has(`STD:${study.vfsPath}`))
132
+ .map((study) => ({ ...study, series: study.series.filter((one) => typeof one.vfsPath === 'string' && keep.has(`SER:${one.vfsPath}`)) }));
133
+ const patients = Array.isArray(model.patients) ? model.patients.filter((patient) => keep.has(`PAT:${patientAddress_of(patient)}`)) : undefined;
134
+ return { ...model, studies, ...(patients !== undefined ? { patients } : {}) };
135
+ });
136
+ answerFilter_register('gather.cohort', (data, keep) => {
137
+ const state = data;
138
+ const kindCode = (member) => (member.kind === 'dir' ? 'DIR' : member.kind === 'file' ? 'FIL' : 'SER');
139
+ return { ...state, series: (state.series ?? []).filter((member) => keep.has(`${kindCode(member)}:${member.vfsPath ?? ''}`)) };
140
+ });
105
141
  }
106
142
  //# sourceMappingURL=answerAdapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"answerAdapters.js","sourceRoot":"","sources":["../../src/session/answerAdapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answerAdapters.js","sourceRoot":"","sources":["../../src/session/answerAdapters.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnndsc/brasa",
3
- "version": "0.35.1",
3
+ "version": "0.36.0",
4
4
  "description": "BRASA Runs Abstracted Shell Actions - the hostable ChRIS shell engine (kernel)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -50,14 +50,14 @@
50
50
  "dependencies": {
51
51
  "@fnndsc/chili": "^3.7.7",
52
52
  "@fnndsc/fond": "^0.3.0",
53
- "@fnndsc/cumin": "^3.27.12",
54
- "@fnndsc/salsa": "^4.0.1",
53
+ "@fnndsc/cumin": "^3.27.13",
54
+ "@fnndsc/salsa": "^4.0.2",
55
55
  "chalk": "^4.1.2",
56
56
  "cli-highlight": "^2.1.11",
57
57
  "js-yaml": "^4.1.0",
58
58
  "minimatch": "^10.1.1",
59
59
  "ws": "^8.21.0",
60
- "@fnndsc/menu": "^0.22.1",
60
+ "@fnndsc/menu": "^0.22.2",
61
61
  "@fnndsc/orrery": "^0.6.1"
62
62
  },
63
63
  "devDependencies": {