@fnndsc/brasa 0.44.1 → 0.46.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.
- package/dist/api/models.d.ts +37 -0
- package/dist/api/models.js.map +1 -1
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/fs/pull.args.d.ts +0 -10
- package/dist/builtins/fs/pull.args.js +5 -30
- package/dist/builtins/fs/pull.args.js.map +1 -1
- package/dist/builtins/fs/pull.js +2 -48
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/help.js +43 -11
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/helpSections.js +3 -3
- package/dist/builtins/helpSections.js.map +1 -1
- package/dist/builtins/net/query.js +0 -3
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/pluginExecute.d.ts +4 -1
- package/dist/builtins/pluginExecute.js +11 -12
- package/dist/builtins/pluginExecute.js.map +1 -1
- package/dist/builtins/res/expect.js +5 -2
- package/dist/builtins/res/expect.js.map +1 -1
- package/dist/builtins/res/gather.d.ts +2 -2
- package/dist/builtins/res/gather.js +11 -3
- package/dist/builtins/res/gather.js.map +1 -1
- package/dist/builtins/res/gather.kind.d.ts +9 -0
- package/dist/builtins/res/gather.kind.js +10 -0
- package/dist/builtins/res/gather.kind.js.map +1 -0
- package/dist/builtins/res/gather.process.d.ts +29 -0
- package/dist/builtins/res/gather.process.js +177 -0
- package/dist/builtins/res/gather.process.js.map +1 -0
- package/dist/builtins/res/pipeline.d.ts +16 -0
- package/dist/builtins/res/pipeline.js +38 -13
- package/dist/builtins/res/pipeline.js.map +1 -1
- package/dist/builtins/res/play.d.ts +2 -0
- package/dist/builtins/res/play.js +30 -7
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/builtins/res/plugin.js +9 -30
- package/dist/builtins/res/plugin.js.map +1 -1
- package/dist/builtins/res/runWait.d.ts +10 -0
- package/dist/builtins/res/runWait.js +14 -0
- package/dist/builtins/res/runWait.js.map +1 -1
- package/dist/builtins/sys/tasks.d.ts +46 -0
- package/dist/builtins/sys/tasks.js +128 -0
- package/dist/builtins/sys/tasks.js.map +1 -0
- package/dist/builtins/sys/textFilters.js +3 -3
- package/dist/builtins/sys/textFilters.js.map +1 -1
- package/dist/builtins/sys/variables.d.ts +25 -0
- package/dist/builtins/sys/variables.js +113 -0
- package/dist/builtins/sys/variables.js.map +1 -0
- package/dist/builtins/variablesPage.d.ts +9 -0
- package/dist/builtins/variablesPage.js +54 -0
- package/dist/builtins/variablesPage.js.map +1 -0
- package/dist/chris/binExecutables.d.ts +19 -0
- package/dist/chris/binExecutables.js +18 -0
- package/dist/chris/binExecutables.js.map +1 -0
- package/dist/chris/commandFallback.js +6 -22
- package/dist/chris/commandFallback.js.map +1 -1
- package/dist/chris/help.d.ts +2 -2
- package/dist/chris/help.js +27 -44
- package/dist/chris/help.js.map +1 -1
- package/dist/chris/references.js +14 -75
- package/dist/chris/references.js.map +1 -1
- package/dist/core/assignment.d.ts +13 -0
- package/dist/core/assignment.js +98 -0
- package/dist/core/assignment.js.map +1 -0
- package/dist/core/backend.d.ts +3 -0
- package/dist/core/backend.js.map +1 -1
- package/dist/core/coreCommands.js +10 -0
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/engine.d.ts +8 -0
- package/dist/core/engine.js +29 -6
- package/dist/core/engine.js.map +1 -1
- package/dist/core/expansion.d.ts +13 -7
- package/dist/core/expansion.js +36 -19
- package/dist/core/expansion.js.map +1 -1
- package/dist/core/runner.d.ts +231 -0
- package/dist/core/runner.js +391 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/sink.d.ts +33 -0
- package/dist/core/sink.js +48 -0
- package/dist/core/sink.js.map +1 -1
- package/dist/core/variables.d.ts +121 -0
- package/dist/core/variables.js +316 -0
- package/dist/core/variables.js.map +1 -0
- package/dist/core/version.d.ts +14 -0
- package/dist/core/version.js +19 -0
- package/dist/core/version.js.map +1 -1
- package/dist/core.d.ts +2 -1
- package/dist/core.js +2 -1
- package/dist/core.js.map +1 -1
- package/dist/lib/parser.js +2 -2
- package/dist/notes.json +1 -1
- package/dist/session/answerAdapters.js +12 -0
- package/dist/session/answerAdapters.js.map +1 -1
- package/package.json +5 -5
- package/dist/builtins/pronouns.d.ts +0 -8
- package/dist/builtins/pronouns.js +0 -39
- package/dist/builtins/pronouns.js.map +0 -1
- package/dist/session/recent.d.ts +0 -68
- package/dist/session/recent.js +0 -99
- package/dist/session/recent.js.map +0 -1
package/dist/chris/references.js
CHANGED
|
@@ -1,89 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fieldReading_value } from '../core/expansion.js';
|
|
2
|
+
import { answer_read } from '../core/variables.js';
|
|
3
|
+
import { GATHER_MODEL_KIND } from '../builtins/res/gather.kind.js';
|
|
2
4
|
/**
|
|
3
|
-
* What the cohort answers
|
|
5
|
+
* What the cohort answers: `${gather}` is a live `$(gather)`, re-read on
|
|
6
|
+
* every use, and read by the same rule as any variable. Bare, it is every
|
|
7
|
+
* member's address (where it was gathered FROM, which `pull` takes); a dot
|
|
8
|
+
* is a field of the cohort as `gather` answers it, so
|
|
9
|
+
* `${gather.series.folderPath}` is where each member LANDED, which a viewer
|
|
10
|
+
* and a run take. Live, because the cohort is a working set a flow is still
|
|
11
|
+
* building: a capture taken before `pull` would hold no landed folders.
|
|
4
12
|
*
|
|
5
|
-
* @param name - The reference, such as `gather`, `gather.
|
|
6
|
-
* @returns The values, or null
|
|
13
|
+
* @param name - The reference, such as `gather`, `gather.series.folderPath`.
|
|
14
|
+
* @returns The values, or null with the reason recorded.
|
|
7
15
|
*/
|
|
8
16
|
async function cohort_reference(name) {
|
|
9
17
|
// Loaded on demand: the cohort's store is a builtin's, and reading it is
|
|
10
18
|
// only worth doing when a line names the cohort.
|
|
11
19
|
const { cohort_read } = await import('../builtins/res/gather.store.js');
|
|
12
20
|
const state = await cohort_read();
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
// was gathered FROM, which `pull` takes, and where it LANDED, which a
|
|
16
|
-
// viewer and a run take.
|
|
17
|
-
const wantsPlace = name.endsWith('.place');
|
|
18
|
-
const stem = wantsPlace ? name.slice(0, -'.place'.length) : name;
|
|
19
|
-
const addressOf = (member) => {
|
|
20
|
-
if (!wantsPlace)
|
|
21
|
-
return member.vfsPath;
|
|
22
|
-
const landed = member.folderPath;
|
|
23
|
-
if (typeof landed === 'string' && landed.length > 0)
|
|
24
|
-
return landed;
|
|
25
|
-
return member.kind === 'series' ? null : member.vfsPath;
|
|
26
|
-
};
|
|
27
|
-
if (stem === 'gather') {
|
|
28
|
-
const addresses = members.map(addressOf);
|
|
29
|
-
if (addresses.some((address) => address === null))
|
|
30
|
-
return null;
|
|
31
|
-
return { values: addresses };
|
|
32
|
-
}
|
|
33
|
-
const which = stem.slice('gather.'.length);
|
|
34
|
-
if (which === 'size')
|
|
35
|
-
return { values: [`${members.length}`] };
|
|
36
|
-
if (which === 'name')
|
|
37
|
-
return { values: [state.name ?? ''] };
|
|
38
|
-
const pick = (member) => {
|
|
39
|
-
if (member === undefined)
|
|
40
|
-
return null;
|
|
41
|
-
const address = addressOf(member);
|
|
42
|
-
return address === null ? null : { values: [address] };
|
|
43
|
-
};
|
|
44
|
-
if (which === 'first')
|
|
45
|
-
return pick(members[0]);
|
|
46
|
-
if (which === 'last')
|
|
47
|
-
return pick(members[members.length - 1]);
|
|
48
|
-
const nth = Number(which);
|
|
49
|
-
if (Number.isInteger(nth) && nth >= 1 && nth <= members.length)
|
|
50
|
-
return pick(members[nth - 1]);
|
|
51
|
-
return null;
|
|
21
|
+
const answer = { source: 'gather', kind: GATHER_MODEL_KIND, rows: [], data: state };
|
|
22
|
+
return fieldReading_value(answer_read(answer, 'gather', name.split('.').slice(1)));
|
|
52
23
|
}
|
|
53
24
|
/** The references the ChRIS session answers. */
|
|
54
25
|
export const chrisReferences = [
|
|
55
|
-
{
|
|
56
|
-
name: 'feed',
|
|
57
|
-
resolve: async (name) => {
|
|
58
|
-
if (name !== 'feed')
|
|
59
|
-
return undefined;
|
|
60
|
-
const feed = recentFeed_get();
|
|
61
|
-
return feed === null ? null : { values: [`${feed}`] };
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: 'run',
|
|
66
|
-
resolve: async (name) => {
|
|
67
|
-
if (name === 'run') {
|
|
68
|
-
const runs = recentRuns_get();
|
|
69
|
-
return runs.length === 0 ? null : { values: [`${runs[runs.length - 1]}`] };
|
|
70
|
-
}
|
|
71
|
-
if (name === 'run.place') {
|
|
72
|
-
const place = recentRunPlace_get();
|
|
73
|
-
return place === null ? null : { values: [place] };
|
|
74
|
-
}
|
|
75
|
-
return undefined;
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: 'query',
|
|
80
|
-
resolve: async (name) => {
|
|
81
|
-
if (name !== 'query')
|
|
82
|
-
return undefined;
|
|
83
|
-
const query = recentQuery_get();
|
|
84
|
-
return query === null ? null : { values: [query] };
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
26
|
{
|
|
88
27
|
name: 'gather',
|
|
89
28
|
resolve: async (name) => await cohort_reference(name),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/chris/references.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/chris/references.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAY,MAAM,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnG,OAAO,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK,EAAE,IAAY,EAAuC,EAAE,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC;KACnG;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IACnD,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IAC/D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE;CAChD,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;CACrC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CommandEnvelope } from '@fnndsc/menu';
|
|
2
|
+
import { type Assignment } from './variables.js';
|
|
3
|
+
/** Runs one line, as the engine does, and answers its envelopes. */
|
|
4
|
+
export type LineRun = (line: string) => Promise<CommandEnvelope[]>;
|
|
5
|
+
/**
|
|
6
|
+
* Runs an assignment line.
|
|
7
|
+
*
|
|
8
|
+
* @param assignment - The line, taken apart.
|
|
9
|
+
* @param line - The line as written, the answer's source.
|
|
10
|
+
* @param run - Runs a captured command line, as the engine runs any line.
|
|
11
|
+
* @returns The line's envelopes: a capture's are its command's.
|
|
12
|
+
*/
|
|
13
|
+
export declare function assignment_execute(assignment: Assignment, line: string, run: LineRun): Promise<CommandEnvelope[]>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Running an assignment line: `NAME=$(command)` and `NAME=word`.
|
|
3
|
+
*
|
|
4
|
+
* A capture runs its command as any line runs, printing what it prints, and
|
|
5
|
+
* holds the command's answer: its model when it answers with one, else the
|
|
6
|
+
* text it printed. A command that fails leaves the name as it was and fails
|
|
7
|
+
* the line, so a manifest stops there rather than carrying an empty value
|
|
8
|
+
* forward. A literal is one word, expanded the way any word is, and never
|
|
9
|
+
* split.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import { shellWords_referencesExpand, shellWords_tokenize } from '../lib/parser.js';
|
|
15
|
+
import { reference_isReserved, reference_refusal, reference_resolve, unresolvedStands_get } from './expansion.js';
|
|
16
|
+
import { exitCode_read } from './handlerRun.js';
|
|
17
|
+
import { sink_get, sinkScope_run, TeeSink } from './sink.js';
|
|
18
|
+
import { textAnswer_make, variable_set } from './variables.js';
|
|
19
|
+
/**
|
|
20
|
+
* Refuses an assignment line, saying why on the error channel.
|
|
21
|
+
*
|
|
22
|
+
* @param message - What the operator needs to know.
|
|
23
|
+
* @returns The line's envelopes: one refusal.
|
|
24
|
+
*/
|
|
25
|
+
function assignment_refuse(message) {
|
|
26
|
+
sink_get().err_write(`${chalk.red(message)}\n`);
|
|
27
|
+
process.exitCode = 1;
|
|
28
|
+
return [{ status: 'error', rendered: '' }];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Sets a name, or refuses when the scope will not take it.
|
|
32
|
+
*
|
|
33
|
+
* @param name - The name.
|
|
34
|
+
* @param answer - What it holds.
|
|
35
|
+
* @returns A refusal, or null when it was set.
|
|
36
|
+
*/
|
|
37
|
+
function assignment_store(name, answer) {
|
|
38
|
+
const refused = variable_set(name, answer);
|
|
39
|
+
return refused === null ? null : assignment_refuse(`${name}=…: ${refused}`);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Expands a literal value into the one word it must be.
|
|
43
|
+
*
|
|
44
|
+
* @param name - The name being set.
|
|
45
|
+
* @param value - The value as written.
|
|
46
|
+
* @returns The word, or a refusal.
|
|
47
|
+
*/
|
|
48
|
+
async function literal_expand(name, value) {
|
|
49
|
+
const words = shellWords_tokenize(value);
|
|
50
|
+
if (words.length === 0)
|
|
51
|
+
return { word: '' };
|
|
52
|
+
if (words.length > 1)
|
|
53
|
+
return { refused: `${name}=…: a value is one word; quote it: ${name}='${value}'` };
|
|
54
|
+
const expanded = await shellWords_referencesExpand(words, reference_resolve, unresolvedStands_get());
|
|
55
|
+
if (!expanded.ok)
|
|
56
|
+
return { refused: reference_refusal(expanded.missing) };
|
|
57
|
+
if (expanded.words.length !== 1)
|
|
58
|
+
return { refused: `${name}=…: ${value} expands to ${expanded.words.length} words; a value is one word, so quote it: ${name}="${value}"` };
|
|
59
|
+
return { word: expanded.words[0].value };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Runs an assignment line.
|
|
63
|
+
*
|
|
64
|
+
* @param assignment - The line, taken apart.
|
|
65
|
+
* @param line - The line as written, the answer's source.
|
|
66
|
+
* @param run - Runs a captured command line, as the engine runs any line.
|
|
67
|
+
* @returns The line's envelopes: a capture's are its command's.
|
|
68
|
+
*/
|
|
69
|
+
export async function assignment_execute(assignment, line, run) {
|
|
70
|
+
const { name } = assignment;
|
|
71
|
+
if ('refused' in assignment)
|
|
72
|
+
return assignment_refuse(assignment.refused);
|
|
73
|
+
if (reference_isReserved(name))
|
|
74
|
+
return assignment_refuse(`${name}=…: \${${name}} is the session's own; it is read-only`);
|
|
75
|
+
if ('literal' in assignment) {
|
|
76
|
+
const value = await literal_expand(name, assignment.literal);
|
|
77
|
+
if ('refused' in value)
|
|
78
|
+
return assignment_refuse(value.refused);
|
|
79
|
+
return assignment_store(name, textAnswer_make(value.word, line)) ?? [];
|
|
80
|
+
}
|
|
81
|
+
const tee = new TeeSink(sink_get());
|
|
82
|
+
const exitBefore = exitCode_read();
|
|
83
|
+
const envelopes = await sinkScope_run(tee, () => run(assignment.capture));
|
|
84
|
+
const exitAfter = exitCode_read();
|
|
85
|
+
const failed = envelopes.some((envelope) => envelope.status === 'error')
|
|
86
|
+
|| (exitAfter !== 0 && exitAfter !== exitBefore);
|
|
87
|
+
if (failed) {
|
|
88
|
+
return [...envelopes, ...assignment_refuse(`${name}=$(…): the command failed; ${name} is unchanged`)];
|
|
89
|
+
}
|
|
90
|
+
// The answer is the last model the line gave: a pipe's is its last
|
|
91
|
+
// segment's, as `NAME=$(query … | grep sag)` means.
|
|
92
|
+
const modelled = [...envelopes].reverse().find((envelope) => envelope.model !== undefined);
|
|
93
|
+
const answer = modelled?.model !== undefined
|
|
94
|
+
? { source: assignment.capture, kind: modelled.model.kind, rows: [], data: modelled.model.data }
|
|
95
|
+
: textAnswer_make(tee.text_get(), assignment.capture);
|
|
96
|
+
return assignment_store(name, answer) ?? envelopes;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=assignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../src/core/assignment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAA2C,MAAM,kBAAkB,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAC;AAMhF;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAqB;IAC3D,MAAM,OAAO,GAAkB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,KAAK,GAAgB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,sCAAsC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;IACzG,MAAM,QAAQ,GAAuB,MAAM,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACzH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,KAAK,eAAe,QAAQ,CAAC,KAAK,CAAC,MAAM,6CAA6C,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;IAC3K,OAAO,EAAE,IAAI,EAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAe,CAAC,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAsB,EAAE,IAAY,EAAE,GAAY;IACzF,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;IAC5B,IAAI,SAAS,IAAI,UAAU;QAAE,OAAO,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,iBAAiB,CAAC,GAAG,IAAI,UAAU,IAAI,yCAAyC,CAAC,CAAC;IAEzH,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAA2C,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACrG,IAAI,SAAS,IAAI,KAAK;YAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,GAAG,GAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAW,aAAa,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAsB,MAAM,aAAa,CAAC,GAAG,EAAE,GAA+B,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,MAAM,SAAS,GAAW,aAAa,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAY,SAAS,CAAC,IAAI,CAAC,CAAC,QAAyB,EAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC;WACtG,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC;IACnD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,iBAAiB,CAAC,GAAG,IAAI,8BAA8B,IAAI,eAAe,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,mEAAmE;IACnE,oDAAoD;IACpD,MAAM,QAAQ,GAAgC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CACzE,CAAC,QAAyB,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CACrE,CAAC;IACF,MAAM,MAAM,GAAkB,QAAQ,EAAE,KAAK,KAAK,SAAS;QACzD,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;QAChG,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;AACrD,CAAC"}
|
package/dist/core/backend.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
|
+
import type { JobSource } from './runner.js';
|
|
15
16
|
import type { PromptContext, CubeTelemetry, JobsStateTelemetry, CommandEnvelope, WatchState, Task } from '@fnndsc/menu';
|
|
16
17
|
import type { ReferenceValue } from '../lib/parser.js';
|
|
17
18
|
import type { ListingLook, VFSDispatcher } from '@fnndsc/fond';
|
|
@@ -244,6 +245,8 @@ export interface Backend {
|
|
|
244
245
|
/** Opens one file's bytes as a stream, never read whole; absent, a surface is served `read`'s buffer. */
|
|
245
246
|
readonly stream?: (path: string) => Promise<FileByteStream>;
|
|
246
247
|
};
|
|
248
|
+
/** The long jobs it hands the core's runner, by kind (core/runner.ts); each is mounted under `/proc` as a task source. */
|
|
249
|
+
readonly jobs?: ReadonlyArray<JobSource>;
|
|
247
250
|
/** Its long-running steps, by kind; the core mounts those that bring no mount of their own under `/proc`. */
|
|
248
251
|
readonly tasks?: ReadonlyArray<TaskSource>;
|
|
249
252
|
/** Its filesystem; absent, the session has only the core's own mounts. */
|
package/dist/core/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/core/backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/core/backend.ts"],"names":[],"mappings":"AAoRA,IAAI,SAAS,GAAmB,IAAI,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,SAAS,GAAG,OAAO,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -13,6 +13,8 @@ import { builtin_ddate, builtin_pom, builtin_stardate, builtin_sunrise } from '.
|
|
|
13
13
|
import { builtin_grep } from '../builtins/sys/grep.js';
|
|
14
14
|
import { builtin_cut, builtin_head, builtin_sort, builtin_tail, builtin_uniq, builtin_wc } from '../builtins/sys/textFilters.js';
|
|
15
15
|
import { builtin_command } from '../builtins/sys/command.js';
|
|
16
|
+
import { builtin_kill, builtin_wait } from '../builtins/sys/tasks.js';
|
|
17
|
+
import { builtin_set, builtin_unset } from '../builtins/sys/variables.js';
|
|
16
18
|
import { builtin_apropos, builtin_man } from '../builtins/sys/apropos.js';
|
|
17
19
|
import { builtin_rev, builtin_rot13, builtin_seq, builtin_shuf, builtin_tac, builtin_yes } from '../builtins/games/text.js';
|
|
18
20
|
import { builtin_wtf } from '../builtins/games/wtf.js';
|
|
@@ -91,6 +93,10 @@ const envelope = {
|
|
|
91
93
|
ddate: builtin_ddate,
|
|
92
94
|
sunrise: builtin_sunrise,
|
|
93
95
|
timer: builtin_timer,
|
|
96
|
+
kill: builtin_kill,
|
|
97
|
+
wait: builtin_wait,
|
|
98
|
+
set: builtin_set,
|
|
99
|
+
unset: builtin_unset,
|
|
94
100
|
leave: builtin_leave,
|
|
95
101
|
stopwatch: builtin_stopwatch,
|
|
96
102
|
sl: builtin_sl,
|
|
@@ -163,6 +169,10 @@ const plain = {
|
|
|
163
169
|
ddate: envelopeHandler_wrap(builtin_ddate),
|
|
164
170
|
sunrise: envelopeHandler_wrap(builtin_sunrise),
|
|
165
171
|
timer: envelopeHandler_wrap(builtin_timer),
|
|
172
|
+
kill: envelopeHandler_wrap(builtin_kill),
|
|
173
|
+
wait: envelopeHandler_wrap(builtin_wait),
|
|
174
|
+
set: envelopeHandler_wrap(builtin_set),
|
|
175
|
+
unset: envelopeHandler_wrap(builtin_unset),
|
|
166
176
|
leave: envelopeHandler_wrap(builtin_leave),
|
|
167
177
|
stopwatch: envelopeHandler_wrap(builtin_stopwatch),
|
|
168
178
|
sl: envelopeHandler_wrap(builtin_sl),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreCommands.js","sourceRoot":"","sources":["../../src/core/coreCommands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coreCommands.js","sourceRoot":"","sources":["../../src/core/coreCommands.ts"],"names":[],"mappings":"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"}
|
package/dist/core/engine.d.ts
CHANGED
|
@@ -157,6 +157,14 @@ export interface BrasaEngine {
|
|
|
157
157
|
* @param surface - The surface.
|
|
158
158
|
*/
|
|
159
159
|
surface_install(surface: Surface): void;
|
|
160
|
+
/**
|
|
161
|
+
* Picks up the backend's jobs that were running when the session last
|
|
162
|
+
* ended (core/runner.ts). A host calls it once, after installing its surface,
|
|
163
|
+
* which says whether the `tasks` tier is granted.
|
|
164
|
+
*
|
|
165
|
+
* @returns How many went on.
|
|
166
|
+
*/
|
|
167
|
+
jobs_resume?(): number;
|
|
160
168
|
}
|
|
161
169
|
/**
|
|
162
170
|
* Sets the shared stop-on-error flag. Exposed so the boot layer (which owns
|
package/dist/core/engine.js
CHANGED
|
@@ -38,10 +38,13 @@ import { commandCancellation_abort, commandCancellation_stopped, commandCancella
|
|
|
38
38
|
import { turn_leave, turn_resume } from './turn.js';
|
|
39
39
|
import { errorStack } from '@fnndsc/fond';
|
|
40
40
|
import { recorder_note } from '../session/recorder.js';
|
|
41
|
+
import { assignment_parse } from './variables.js';
|
|
42
|
+
import { assignment_execute } from './assignment.js';
|
|
41
43
|
import { answerAdapters_register } from '../session/answerAdapters.js';
|
|
42
44
|
import { numbering_get } from '../session/answer.js';
|
|
43
45
|
import { sink_get, sink_set } from './sink.js';
|
|
44
46
|
import { backend_install, backendInstalled_get } from './backend.js';
|
|
47
|
+
import { JobRunner, jobsRoot_of, runner_get, runner_install } from './runner.js';
|
|
45
48
|
import { vfsDispatcher_get } from './filesystem.js';
|
|
46
49
|
import { itemType_isContainer } from './itemKinds.js';
|
|
47
50
|
/**
|
|
@@ -148,15 +151,18 @@ export async function line_execute(line) {
|
|
|
148
151
|
* Executes one line inside its already-established cancellation scope.
|
|
149
152
|
*
|
|
150
153
|
* @param line - The raw input line.
|
|
154
|
+
* @param captured - Whether the line is a capture's command, already noted with its assignment.
|
|
151
155
|
* @returns The envelopes of the executed commands, in execution order.
|
|
152
156
|
*/
|
|
153
|
-
async function line_execute_run(line) {
|
|
157
|
+
async function line_execute_run(line, captured = false) {
|
|
154
158
|
const trimmedLine = line.trim();
|
|
155
159
|
if (!trimmedLine)
|
|
156
160
|
return [];
|
|
157
161
|
// A press on a surface and a line at a console arrive here alike, which is
|
|
158
|
-
// what makes recording a session cost nothing: the lowering is the law.
|
|
159
|
-
|
|
162
|
+
// what makes recording a session cost nothing: the lowering is the law. A
|
|
163
|
+
// capture's command is part of its assignment's line, already noted.
|
|
164
|
+
if (!captured)
|
|
165
|
+
recorder_note(trimmedLine);
|
|
160
166
|
// Start timing if enabled
|
|
161
167
|
const timingEnabled = session.timingEnabled_get();
|
|
162
168
|
const startTime = timingEnabled ? performance.now() : 0;
|
|
@@ -167,6 +173,12 @@ async function line_execute_run(line) {
|
|
|
167
173
|
if (batch.length > 1) {
|
|
168
174
|
return batch_execute(batch, startTime, timingEnabled);
|
|
169
175
|
}
|
|
176
|
+
// `NAME=$(command)` or `NAME=word`: before pipes, since a capture's
|
|
177
|
+
// command may be a pipe of its own.
|
|
178
|
+
const assignment = assignment_parse(trimmedLine);
|
|
179
|
+
if (assignment !== null) {
|
|
180
|
+
return await assignment_execute(assignment, trimmedLine, (capture) => line_execute_run(capture, true));
|
|
181
|
+
}
|
|
170
182
|
const pipeSegments = pipes_parse(trimmedLine);
|
|
171
183
|
if (pipeSegments.length > 1) {
|
|
172
184
|
try {
|
|
@@ -254,13 +266,21 @@ async function vfsProviders_register() {
|
|
|
254
266
|
vfsDispatcher.provider_register(new StaticVfsProvider('/usr/games'));
|
|
255
267
|
vfsDispatcher.provider_register(new StaticVfsProvider('/usr/share'));
|
|
256
268
|
vfsDispatcher.provider_register(new StaticVfsProvider('/usr/share/doc'));
|
|
257
|
-
// A backend's task sources that bring no mount of their own are the core's to show.
|
|
269
|
+
// A backend's task sources that bring no mount of their own are the core's to show, the runner's among them.
|
|
258
270
|
const { TaskSourceVfsProvider } = await import('./tasks.js');
|
|
259
|
-
for (const source of
|
|
271
|
+
for (const source of taskSources_all()) {
|
|
260
272
|
if (source.mounted !== true)
|
|
261
273
|
vfsDispatcher.provider_register(new TaskSourceVfsProvider(source));
|
|
262
274
|
}
|
|
263
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* Every task source of the session: the backend's own, and its jobs as the runner keeps them.
|
|
278
|
+
*
|
|
279
|
+
* @returns The sources.
|
|
280
|
+
*/
|
|
281
|
+
function taskSources_all() {
|
|
282
|
+
return [...(backendInstalled_get()?.tasks ?? []), ...(runner_get()?.taskSources_get() ?? [])];
|
|
283
|
+
}
|
|
264
284
|
/**
|
|
265
285
|
* Creates the engine: initializes session state, registers the VFS
|
|
266
286
|
* providers, and returns the facade a host drives.
|
|
@@ -279,6 +299,8 @@ export async function engine_create(backend) {
|
|
|
279
299
|
backend_install(backend);
|
|
280
300
|
// What each listing's rows are, so `@3` can name one.
|
|
281
301
|
answerAdapters_register();
|
|
302
|
+
const jobs = backendInstalled_get()?.jobs ?? [];
|
|
303
|
+
runner_install(jobs.length > 0 ? new JobRunner(jobsRoot_of(backendInstalled_get()?.id ?? 'session'), jobs) : null);
|
|
282
304
|
await session.init();
|
|
283
305
|
await vfsProviders_register();
|
|
284
306
|
// A backend's containers are folders to every tool, the dispatcher's read included.
|
|
@@ -300,7 +322,7 @@ export async function engine_create(backend) {
|
|
|
300
322
|
// The backend answers for its own subjects (ChRIS: feeds); a task it
|
|
301
323
|
// leaves to the core is watched by the core.
|
|
302
324
|
watch_set: (subject, owner, on) => backendInstalled_get()?.watch?.set(subject, owner, on)
|
|
303
|
-
?? taskWatch_set(subject, owner, on,
|
|
325
|
+
?? taskWatch_set(subject, owner, on, taskSources_all()),
|
|
304
326
|
watch_release: (owner) => {
|
|
305
327
|
backendInstalled_get()?.watch?.release(owner);
|
|
306
328
|
taskWatch_release(owner);
|
|
@@ -308,6 +330,7 @@ export async function engine_create(backend) {
|
|
|
308
330
|
ambient_listen,
|
|
309
331
|
sink_install: (sink) => { sink_set(sink); },
|
|
310
332
|
surface_install: (surface) => { surface_set(surface); },
|
|
333
|
+
jobs_resume: () => runner_get()?.jobs_resume() ?? 0,
|
|
311
334
|
};
|
|
312
335
|
}
|
|
313
336
|
/**
|
package/dist/core/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,WAAW,EACX,cAAc,EACd,0BAA0B,GAE3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACxO,OAAO,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/core/expansion.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import type { ReferenceValue } from '../lib/parser.js';
|
|
2
2
|
import { type AnswerHandle } from '../session/answer.js';
|
|
3
|
+
import { type FieldReading } from './variables.js';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Records why a reference was refused, for the line's refusal to say.
|
|
5
6
|
*
|
|
6
|
-
* @param
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
* @param reason - The reason, or null to clear it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function referenceRefusal_set(reason: string | null): void;
|
|
10
|
+
/**
|
|
11
|
+
* Turns a reading into what the resolver returns, keeping the refusal.
|
|
12
|
+
*
|
|
13
|
+
* @param reading - What reading the variable or built-in gave.
|
|
14
|
+
* @returns Its operands, or null with the reason recorded.
|
|
9
15
|
*/
|
|
10
|
-
export declare function
|
|
16
|
+
export declare function fieldReading_value(reading: FieldReading): ReferenceValue;
|
|
11
17
|
/**
|
|
12
18
|
* Runs work in which an unanswerable reference stands as written.
|
|
13
19
|
*
|
|
@@ -52,8 +58,8 @@ export declare function indices_parse(spec: string): AnswerHandle[] | null;
|
|
|
52
58
|
*/
|
|
53
59
|
export declare function verbInHand_set(verb: string | null): void;
|
|
54
60
|
/**
|
|
55
|
-
* Answers a reference: an index, then the
|
|
56
|
-
* the environment.
|
|
61
|
+
* Answers a reference: an index, then the built-ins, then the variables,
|
|
62
|
+
* then the environment.
|
|
57
63
|
*
|
|
58
64
|
* @param name - The reference's name.
|
|
59
65
|
* @returns What it refers to, or null when nothing does.
|
package/dist/core/expansion.js
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
*
|
|
11
11
|
* One resolver now answers for all of them, in a fixed order:
|
|
12
12
|
*
|
|
13
|
-
* . *
|
|
14
|
-
* the backend answers (ChRIS: the cohort, the feed, the run,
|
|
15
|
-
* .
|
|
13
|
+
* . *Built-ins*: the place the session stands (`cwd`), the held listing,
|
|
14
|
+
* and those the backend answers (ChRIS: the cohort, the feed, the run,
|
|
15
|
+
* the query). Read-only.
|
|
16
|
+
* . *Variables* (`core/variables.ts`): what lines set, and inside a play
|
|
17
|
+
* the manifest's parameters, read-only.
|
|
16
18
|
* . *The environment*.
|
|
17
19
|
*
|
|
18
20
|
* A name nothing answers refuses the LINE rather than expanding to nothing
|
|
@@ -27,6 +29,7 @@ import { session } from '../session/index.js';
|
|
|
27
29
|
import { answer_get, answerHandles_get, answerKind_count, answerRow_get, handle_word, numberedFooter_of } from '../session/answer.js';
|
|
28
30
|
import { heldListingOperands_get } from './listing.js';
|
|
29
31
|
import { backendInstalled_get } from './backend.js';
|
|
32
|
+
import { answer_read, variable_get, variableScope_isPlay } from './variables.js';
|
|
30
33
|
import { answerKind_find, answerKinds_get, verbTakes_get } from './answerKinds.js';
|
|
31
34
|
/** The name the core answers for itself: where the session stands. */
|
|
32
35
|
const CORE_REFERENCE = 'cwd';
|
|
@@ -42,17 +45,28 @@ function referenceSources_get() {
|
|
|
42
45
|
}
|
|
43
46
|
/** Whether an unanswerable reference may stand as written: what a dry run does. */
|
|
44
47
|
const standsScope = new AsyncLocalStorage();
|
|
45
|
-
/**
|
|
46
|
-
|
|
48
|
+
/** Why the last reference was refused, when a variable or a built-in said why. */
|
|
49
|
+
let fieldRefusal = null;
|
|
47
50
|
/**
|
|
48
|
-
*
|
|
51
|
+
* Records why a reference was refused, for the line's refusal to say.
|
|
49
52
|
*
|
|
50
|
-
* @param
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
* @param reason - The reason, or null to clear it.
|
|
54
|
+
*/
|
|
55
|
+
export function referenceRefusal_set(reason) {
|
|
56
|
+
fieldRefusal = reason;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Turns a reading into what the resolver returns, keeping the refusal.
|
|
60
|
+
*
|
|
61
|
+
* @param reading - What reading the variable or built-in gave.
|
|
62
|
+
* @returns Its operands, or null with the reason recorded.
|
|
53
63
|
*/
|
|
54
|
-
export
|
|
55
|
-
|
|
64
|
+
export function fieldReading_value(reading) {
|
|
65
|
+
if ('refused' in reading) {
|
|
66
|
+
fieldRefusal = reading.refused;
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return { values: reading.values };
|
|
56
70
|
}
|
|
57
71
|
/**
|
|
58
72
|
* Runs work in which an unanswerable reference stands as written.
|
|
@@ -173,13 +187,14 @@ function index_resolve(name) {
|
|
|
173
187
|
return { values };
|
|
174
188
|
}
|
|
175
189
|
/**
|
|
176
|
-
* Answers a reference: an index, then the
|
|
177
|
-
* the environment.
|
|
190
|
+
* Answers a reference: an index, then the built-ins, then the variables,
|
|
191
|
+
* then the environment.
|
|
178
192
|
*
|
|
179
193
|
* @param name - The reference's name.
|
|
180
194
|
* @returns What it refers to, or null when nothing does.
|
|
181
195
|
*/
|
|
182
196
|
export async function reference_resolve(name) {
|
|
197
|
+
fieldRefusal = null;
|
|
183
198
|
if (name.startsWith('@'))
|
|
184
199
|
return index_resolve(name);
|
|
185
200
|
if (name === CORE_REFERENCE)
|
|
@@ -197,10 +212,9 @@ export async function reference_resolve(name) {
|
|
|
197
212
|
if (answered !== undefined)
|
|
198
213
|
return answered;
|
|
199
214
|
}
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
return { values: [given] };
|
|
215
|
+
const variable = variable_get(stem);
|
|
216
|
+
if (variable !== undefined)
|
|
217
|
+
return fieldReading_value(answer_read(variable.answer, stem, name.split('.').slice(1)));
|
|
204
218
|
const environment = process.env[name];
|
|
205
219
|
return environment === undefined ? null : { values: [environment] };
|
|
206
220
|
}
|
|
@@ -211,8 +225,11 @@ export async function reference_resolve(name) {
|
|
|
211
225
|
* @returns The refusal's text.
|
|
212
226
|
*/
|
|
213
227
|
export function reference_refusal(name) {
|
|
214
|
-
|
|
215
|
-
|
|
228
|
+
if (fieldRefusal !== null)
|
|
229
|
+
return `\${${name}}: ${fieldRefusal}.`;
|
|
230
|
+
const places = variableScope_isPlay()
|
|
231
|
+
? "the session's built-ins, this manifest's variables and parameters, the environment"
|
|
232
|
+
: "the session's built-ins, its variables, the environment";
|
|
216
233
|
if (name.startsWith('@')) {
|
|
217
234
|
if (kindRefusal !== null)
|
|
218
235
|
return `${name}: ${kindRefusal}`;
|