questmark 0.0.33 → 0.0.37

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 +0,0 @@
1
- {"version":3,"file":"QuestVM.js","sourceRoot":"","sources":["../../src/QuestVM.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
11
- };
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- const fs_1 = __importDefault(require("fs"));
17
- const commander_1 = __importDefault(require("commander"));
18
- const parseMarkdown_1 = require("./parseMarkdown");
19
- const QuestVM_1 = require("./QuestVM");
20
- const inquirer_1 = __importDefault(require("inquirer"));
21
- const node_fetch_1 = __importDefault(require("node-fetch"));
22
- commander_1.default
23
- .version('0.0.12')
24
- .option('-c, --clear', 'Clear console on each state')
25
- .option('--input <path>', "Load source .md or .json file from path. Path can be either from local filesystem, or via HTTP(S) URL")
26
- .option('--output <path>', "Emit VMState .json file")
27
- .option('--no-run', "Do not actually load and run the VM; just parse input and (optionally) emit output")
28
- .parse(process.argv);
29
- if (!commander_1.default.input) {
30
- console.log("Missing input! Please specify an input file via --input");
31
- process.exit(1);
32
- }
33
- function load() {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- let input_file;
36
- if (commander_1.default.input.startsWith("http://") || commander_1.default.input.startsWith("https://")) {
37
- const res = yield node_fetch_1.default(commander_1.default.input);
38
- input_file = yield res.text();
39
- }
40
- else {
41
- const input_file_buf = yield fs_1.default.promises.readFile(commander_1.default.input);
42
- input_file = input_file_buf.toString();
43
- }
44
- return input_file;
45
- });
46
- }
47
- (() => __awaiter(void 0, void 0, void 0, function* () {
48
- const input_file = yield load();
49
- const vm = new QuestVM_1.QuestVM(body => {
50
- process.stdout.write(`${body}`);
51
- }, (choices) => {
52
- process.stdout.write("\n"); // add newline to make inquirer not overwrie any previously emitted text
53
- return inquirer_1.default.prompt([{
54
- type: "list",
55
- name: "selectedChoice",
56
- message: " ",
57
- choices: choices.map(c => ({ name: c.title, value: c.id }))
58
- }]).then(answers => {
59
- return answers.selectedChoice;
60
- });
61
- }, {});
62
- let vmState = undefined;
63
- if (commander_1.default.input.endsWith(".json")) {
64
- vmState = JSON.parse(input_file);
65
- }
66
- else if (commander_1.default.input.endsWith(".md")) {
67
- vmState = parseMarkdown_1.parseMarkdown(input_file).qvmState;
68
- }
69
- if (commander_1.default.output) {
70
- fs_1.default.writeFileSync(commander_1.default.output, JSON.stringify(vmState, null, 2));
71
- }
72
- if (commander_1.default.run) {
73
- vm.loadVMState(vmState);
74
- vm.run();
75
- }
76
- }))();
77
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from "./QuestVM";
2
- export * from "./parseMarkdown";
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./QuestVM"), exports);
14
- __exportStar(require("./parseMarkdown"), exports);
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC"}
@@ -1,25 +0,0 @@
1
- import removePosition from "unist-util-remove-position";
2
- import { Node } from "unist";
3
- import 'array-flat-polyfill';
4
- import { TzoVMState } from "tzo";
5
- export declare type Directive = string;
6
- export declare type OptionNode = Node & {
7
- type: "option";
8
- directives: null | Directive[];
9
- preconditionChildren: null | Node[];
10
- effectChildren: null | Node[];
11
- text: null | string;
12
- link: null | string;
13
- };
14
- export declare type QuestMarkVMState = Node & TzoVMState;
15
- export declare enum NoLinkBehaviour {
16
- EXIT = 0,
17
- LOOPBACK_TO_OPTIONS = 1
18
- }
19
- export declare function parseMarkdown(file_contents: string): {
20
- parsedMDFile: removePosition.NodeWithoutPosition;
21
- qvmState: {
22
- type: "questmarkVMState";
23
- children: any[];
24
- } & TzoVMState;
25
- };
@@ -1,350 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseMarkdown = exports.NoLinkBehaviour = void 0;
7
- const mdast_util_from_markdown_1 = __importDefault(require("mdast-util-from-markdown"));
8
- const unist_util_find_after_1 = __importDefault(require("unist-util-find-after"));
9
- const unist_util_remove_position_1 = __importDefault(require("unist-util-remove-position"));
10
- const unist_util_find_all_after_1 = __importDefault(require("unist-util-find-all-after"));
11
- const unist_util_find_all_between_1 = __importDefault(require("unist-util-find-all-between"));
12
- const unist_util_visit_parents_1 = __importDefault(require("unist-util-visit-parents"));
13
- const unist_util_visit_1 = __importDefault(require("unist-util-visit"));
14
- const unist_builder_1 = __importDefault(require("unist-builder"));
15
- require("array-flat-polyfill");
16
- const tzo_1 = require("tzo");
17
- var NoLinkBehaviour;
18
- (function (NoLinkBehaviour) {
19
- NoLinkBehaviour[NoLinkBehaviour["EXIT"] = 0] = "EXIT";
20
- NoLinkBehaviour[NoLinkBehaviour["LOOPBACK_TO_OPTIONS"] = 1] = "LOOPBACK_TO_OPTIONS"; // DEFAULT: Loopback to the options section if no link is found for an option and an option does not explicitly call an `exit` or `goto` effect.
21
- })(NoLinkBehaviour = exports.NoLinkBehaviour || (exports.NoLinkBehaviour = {}));
22
- function parseMarkdown(file_contents) {
23
- const tree = mdast_util_from_markdown_1.default(file_contents);
24
- const tokenizer = new tzo_1.Tokenizer();
25
- const root = unist_builder_1.default('questmarkDocument', { options: {} }, []);
26
- let last_once_directive_nr = 0;
27
- let noLinkBehaviour = NoLinkBehaviour.LOOPBACK_TO_OPTIONS;
28
- let retainWhitespace = false;
29
- unist_util_visit_parents_1.default(tree, 'heading', (x, ancestors) => {
30
- if (ancestors.length > 1) {
31
- return;
32
- }
33
- // capture name
34
- let name = "";
35
- unist_util_visit_parents_1.default(x, 'text', t => {
36
- name = `${name} ${t.value}`;
37
- });
38
- name = name.trim();
39
- // capture children belonging to this heading group
40
- const nextHeading = unist_util_find_after_1.default(tree, x, 'heading');
41
- const children = nextHeading !== null ? unist_util_find_all_between_1.default(tree, x, nextHeading) : unist_util_find_all_after_1.default(tree, x);
42
- if (name === "QUESTMARK-OPTIONS-HEADER") {
43
- root.options = getQuestmarkOptions(children);
44
- }
45
- else {
46
- root.children.push(createStateNode(name, children));
47
- }
48
- });
49
- function getQuestmarkOptions(children) {
50
- let code = '';
51
- unist_util_visit_1.default(unist_builder_1.default('bla', children), 'code', n => {
52
- code = `${code} ${n.value}`;
53
- });
54
- return JSON.parse(code.trim());
55
- }
56
- function createStateNode(name, children) {
57
- // create new state node
58
- const stateNode = unist_builder_1.default('state', { name, options: [] }, []);
59
- let found = false;
60
- let stateChildren = [];
61
- let remainingChildren = [];
62
- // phase 0: split children into stateChildren and remaining children.
63
- children.forEach(child => {
64
- if (child.type === 'list' && child.ordered === false) {
65
- found = true;
66
- }
67
- if (found) {
68
- remainingChildren.push(child);
69
- }
70
- else {
71
- stateChildren.push(child);
72
- }
73
- });
74
- stateNode.children = stateChildren;
75
- // phase 1: replace list nodes with their children, then flatten the list
76
- remainingChildren = remainingChildren.map(child => {
77
- if (child.type === 'list' && child.ordered === false) {
78
- return child.children;
79
- }
80
- return child;
81
- }).flat(1);
82
- // phase 2: reparent non-listItem nodes to the last-seen listItem.
83
- let lastSeenListItem = null;
84
- remainingChildren = remainingChildren.map(child => {
85
- if (child.type === 'listItem') {
86
- lastSeenListItem = child;
87
- return child;
88
- }
89
- else {
90
- lastSeenListItem.children.push(child);
91
- }
92
- }).filter(x => x !== undefined);
93
- // phase 3: build the options from the remainingChildren (now all listItems)
94
- const options = remainingChildren.map((li) => {
95
- // li's `link` / `text` children are the main links / options, but only the first item is considered (the others are effect nodes)
96
- // li's `inlineCode` children are either precondition or effect code blocks
97
- const optionNode = unist_builder_1.default("option", { preconditionChildren: null, effectChildren: null, text: null, link: null, directives: null });
98
- let effectNodes = [];
99
- let preconditionNodes = [];
100
- let text = [];
101
- let link = [];
102
- let directives = [];
103
- unist_util_visit_1.default(li, n => {
104
- if (text.length > 0 && n.type !== "paragraph") {
105
- if (n.type === "text" && n.value && n.value.trim().length === 0) {
106
- // whitespace only node!
107
- }
108
- else {
109
- effectNodes.push(n);
110
- }
111
- }
112
- if (n.type === "text") {
113
- if (n.value && n.value.trim().length > 0 && text.length === 0) {
114
- text.push(n.value);
115
- }
116
- }
117
- if (n.type === "link") {
118
- if (n.url && link.length === 0) {
119
- link.push(n.url);
120
- }
121
- }
122
- if (text.length === 0 && n.type === "inlineCode") {
123
- if (n.value.startsWith("@")) {
124
- // this contains directives!
125
- n.value.split(/\s+/).forEach(directive => directives.push(directive));
126
- }
127
- else {
128
- // this contains precondition nodes..
129
- preconditionNodes.push(n);
130
- }
131
- }
132
- });
133
- optionNode.preconditionChildren = preconditionNodes;
134
- optionNode.effectChildren = effectNodes;
135
- optionNode.directives = directives;
136
- optionNode.text = text.join(" ").trim();
137
- optionNode.link = link.join(" ");
138
- if (optionNode.link.length === 0) {
139
- optionNode.link = null;
140
- }
141
- if (optionNode.text.length === 0) {
142
- optionNode.text = null;
143
- }
144
- if (optionNode.directives.length === 0) {
145
- optionNode.directives = null;
146
- }
147
- if (optionNode.preconditionChildren.length === 0) {
148
- optionNode.preconditionChildren = null;
149
- }
150
- if (optionNode.effectChildren.length === 0) {
151
- optionNode.effectChildren = null;
152
- }
153
- return optionNode;
154
- });
155
- stateNode.options = options;
156
- return stateNode;
157
- }
158
- const qvmState = unist_builder_1.default("questmarkVMState", {
159
- stack: [],
160
- context: {},
161
- programList: [],
162
- labelMap: {},
163
- programCounter: 0,
164
- exit: false,
165
- pause: false
166
- }, []);
167
- const q = (a) => {
168
- qvmState.programList.push(a);
169
- };
170
- const visitorFunc = (node, index, parent) => {
171
- let fixText = (n) => {
172
- let text = "";
173
- if (retainWhitespace) {
174
- text = file_contents.substring(n.position.start.offset, n.position.end.offset);
175
- }
176
- else {
177
- text = n.value;
178
- }
179
- if (parent.type === "paragraph" && parent.children.indexOf(n) === parent.children.length - 1) {
180
- text = text + '\n\n';
181
- }
182
- text = text.replaceAll('\\*', '*').replaceAll('\\[', '[').replaceAll('\\]', ']').replaceAll('\\#', '#').replaceAll('\\`', '`').replaceAll('\\(', '(').replaceAll('\\)', ')');
183
- if (parent.type === "emphasis" || parent.type === "strong") {
184
- text = `*${text}*`;
185
- }
186
- return text;
187
- };
188
- if (parent === undefined && node.type !== "questmarkDocument") {
189
- return;
190
- }
191
- switch (node.type) {
192
- case "questmarkDocument":
193
- if (node.options) {
194
- if (node.options["initial-context"]) {
195
- Object.entries(node.options["initial-context"]).forEach(entry => {
196
- if (typeof entry[1] === "string") {
197
- q(tzo_1.pushString(entry[1]));
198
- }
199
- else if (typeof entry[1] === "number") {
200
- q(tzo_1.pushNumber(entry[1]));
201
- }
202
- q(tzo_1.pushString(entry[0]));
203
- q(tzo_1.invokeFunction("setContext"));
204
- });
205
- }
206
- if (node.options["initial-state"]) {
207
- q(tzo_1.pushString(node.options["initial-state"]));
208
- q(tzo_1.invokeFunction("goto"));
209
- }
210
- if (node.options["options"]) {
211
- if (node.options["options"]["no_link_behaviour"]) {
212
- if (node.options["options"]["no_link_behaviour"] === "exit") {
213
- noLinkBehaviour = NoLinkBehaviour.EXIT;
214
- }
215
- else if (node.options["options"]["no_link_behaviour"] === "loopback_to_options") {
216
- noLinkBehaviour = NoLinkBehaviour.LOOPBACK_TO_OPTIONS;
217
- }
218
- else {
219
- throw new Error(`Unknown 'options.no_link_behaviour': ${node.options["options"]["no_link_behaviour"]}`);
220
- }
221
- }
222
- if (node.options["options"]["whitespace"]) {
223
- if (node.options["options"]["whitespace"] === "retain") {
224
- retainWhitespace = true;
225
- }
226
- }
227
- }
228
- }
229
- break;
230
- case "state":
231
- const nodeLabel = node.name;
232
- const nodeOptionsLabel = node.name + "__options";
233
- qvmState.labelMap[nodeLabel] = qvmState.programList.length;
234
- unist_util_visit_1.default(node, visitorFunc); // parse children immediately, before we parse the node's options
235
- qvmState.labelMap[nodeOptionsLabel] = qvmState.programList.length; // add a label immediately after the node's options to be able to shortcut jump to in certain cases
236
- node.options.forEach(option => {
237
- let has_precondition = false;
238
- let has_once_directive = false;
239
- let once_directive_name = null;
240
- if (option.directives !== null && option.directives.includes('@once')) {
241
- has_once_directive = true;
242
- once_directive_name = `__once__${last_once_directive_nr}`;
243
- last_once_directive_nr += 1;
244
- }
245
- if (has_once_directive) {
246
- q(tzo_1.pushString(once_directive_name));
247
- q(tzo_1.invokeFunction("hasContext"));
248
- q(tzo_1.invokeFunction("jz"));
249
- q(tzo_1.invokeFunction("{")); // once directive block start
250
- }
251
- if (option.preconditionChildren !== null) {
252
- has_precondition = true;
253
- option.preconditionChildren.forEach(child => {
254
- if (child.type === "inlineCode") {
255
- tokenizer.parse(child.value).forEach(i => q(i));
256
- }
257
- else {
258
- throw new Error("preconditionChildren contain non-inlineCode elements. Aborting!");
259
- }
260
- });
261
- }
262
- if (has_precondition) {
263
- q(tzo_1.invokeFunction("jgz"));
264
- q(tzo_1.invokeFunction("{")); // precondition block start
265
- }
266
- if (option.text !== null) {
267
- if (option.text.includes("`")) {
268
- // TODO: support inlineCode in options. Can do via `concat`.
269
- console.warn("WARN: Option text contains a backtick. Inline code elements in option blocks is currently not supported!");
270
- }
271
- q(tzo_1.pushString(option.text));
272
- }
273
- q(tzo_1.invokeFunction("ppc")); // push address of effect body to stack
274
- q(tzo_1.pushNumber(4));
275
- q(tzo_1.invokeFunction("+"));
276
- q(tzo_1.invokeFunction("{")); // effect body start
277
- if (has_once_directive) {
278
- // set the once directive context variable immediatley
279
- q(tzo_1.pushNumber(1));
280
- q(tzo_1.pushString(once_directive_name));
281
- q(tzo_1.invokeFunction("setContext"));
282
- }
283
- if (option.effectChildren !== null) {
284
- option.effectChildren.forEach(child => {
285
- if (child.type === "inlineCode") {
286
- tokenizer.parse(child.value).forEach(i => q(i));
287
- }
288
- else if (child.type === "code") {
289
- if (child.lang === "comment") {
290
- return;
291
- }
292
- tokenizer.parse(child.value).forEach(i => q(i));
293
- }
294
- else {
295
- q(tzo_1.pushString(fixText(child)));
296
- q(tzo_1.invokeFunction("emit"));
297
- }
298
- });
299
- }
300
- if (option.link !== null) {
301
- q(tzo_1.pushString(option.link.substr(1)));
302
- q(tzo_1.invokeFunction("goto"));
303
- }
304
- if (noLinkBehaviour === NoLinkBehaviour.LOOPBACK_TO_OPTIONS) {
305
- q(tzo_1.pushString(nodeOptionsLabel)); // ensure that options with no link or "goto" effect loop back to the options
306
- q(tzo_1.invokeFunction("goto"));
307
- }
308
- else if (noLinkBehaviour === NoLinkBehaviour.EXIT) {
309
- q(tzo_1.invokeFunction("exit")); // ensure that options with no effect or link cause the VM to exit
310
- }
311
- q(tzo_1.invokeFunction("}")); // effect body end
312
- q(tzo_1.invokeFunction("response"));
313
- if (has_once_directive) {
314
- // when there was a once directive, ensure we close its block
315
- q(tzo_1.invokeFunction("}")); // once directive block end
316
- }
317
- if (has_precondition) {
318
- // when there was a precondition, ensure we close the precondition block
319
- q(tzo_1.invokeFunction("}")); // precondition block end
320
- }
321
- });
322
- q(tzo_1.invokeFunction("getResponse")); // getResponse is expected to pause the VM and push the relevant programlist index onto the stack
323
- q(tzo_1.invokeFunction("goto")); // goto whatever was pushed onto the stack by getResponse
324
- return "skip";
325
- // children have been parsed earlier
326
- break;
327
- case "inlineCode":
328
- case "code":
329
- if (node.lang === "comment") {
330
- break;
331
- }
332
- tokenizer.parse(node.value).forEach(i => q(i));
333
- break;
334
- case "text":
335
- q(tzo_1.pushString(fixText(node)));
336
- q(tzo_1.invokeFunction("emit"));
337
- break;
338
- default:
339
- break;
340
- }
341
- };
342
- unist_util_visit_1.default(root, visitorFunc);
343
- q(tzo_1.invokeFunction("exit")); // ensure we always exit at the end
344
- return {
345
- parsedMDFile: unist_util_remove_position_1.default(root, true),
346
- qvmState
347
- };
348
- }
349
- exports.parseMarkdown = parseMarkdown;
350
- //# sourceMappingURL=parseMarkdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseMarkdown.js","sourceRoot":"","sources":["../../src/parseMarkdown.ts"],"names":[],"mappings":"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"}