questmark 0.0.36 → 0.1.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 (41) hide show
  1. package/.github/workflows/docs.yml +56 -0
  2. package/bin/questmark +1 -1
  3. package/dist/browser/bundle.js +28365 -0
  4. package/dist/node/QuestVM.d.ts +1 -2
  5. package/dist/node/QuestVM.js +81 -83
  6. package/dist/node/QuestVM.js.map +1 -1
  7. package/dist/node/cli.js +33 -49
  8. package/dist/node/cli.js.map +1 -1
  9. package/dist/node/index.d.ts +2 -2
  10. package/dist/node/index.js +2 -14
  11. package/dist/node/index.js.map +1 -1
  12. package/dist/node/parseMarkdown.d.ts +18 -7
  13. package/dist/node/parseMarkdown.js +81 -77
  14. package/dist/node/parseMarkdown.js.map +1 -1
  15. package/docs/explanation/how-questmark-works.md +123 -0
  16. package/docs/explanation/why-questmark.md +72 -0
  17. package/docs/how-to/compile-to-bytecode.md +62 -0
  18. package/docs/how-to/play-a-document.md +57 -0
  19. package/docs/how-to/use-the-library.md +98 -0
  20. package/docs/index.md +61 -0
  21. package/docs/reference/api.md +135 -0
  22. package/docs/reference/cli.md +66 -0
  23. package/docs/reference/language.md +213 -0
  24. package/docs/tutorials/first-conversation.md +219 -0
  25. package/package.json +33 -31
  26. package/readme.md +55 -80
  27. package/tsconfig.json +8 -3
  28. package/tsconfig.webpack.json +9 -0
  29. package/webpack.config.cjs +49 -0
  30. package/dist/browser/QuestVM.d.ts +0 -13
  31. package/dist/browser/QuestVM.js +0 -89
  32. package/dist/browser/QuestVM.js.map +0 -1
  33. package/dist/browser/cli.d.ts +0 -2
  34. package/dist/browser/cli.js +0 -80
  35. package/dist/browser/cli.js.map +0 -1
  36. package/dist/browser/index.d.ts +0 -2
  37. package/dist/browser/index.js +0 -15
  38. package/dist/browser/index.js.map +0 -1
  39. package/dist/browser/parseMarkdown.d.ts +0 -25
  40. package/dist/browser/parseMarkdown.js +0 -413
  41. package/dist/browser/parseMarkdown.js.map +0 -1
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { EventEmitter } from "events";
3
2
  import { Functions } from "tzo";
4
3
  import { VM } from "tzo";
@@ -8,6 +7,6 @@ export interface Choice {
8
7
  }
9
8
  export declare class QuestVM extends VM {
10
9
  responses: any[];
11
- eventBus: EventEmitter;
10
+ eventBus: EventEmitter<any>;
12
11
  constructor(emitFunction: (body: string | number) => void, getResponseFunction: (choices: Choice[]) => Promise<number>, additionalFunctions?: Functions);
13
12
  }
@@ -1,89 +1,87 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QuestVM = void 0;
4
- const events_1 = require("events");
5
- const tzo_1 = require("tzo");
6
- class QuestVM extends tzo_1.VM {
1
+ import { EventEmitter } from "events";
2
+ import { VM, getStackParams } from "tzo";
3
+ export class QuestVM extends VM {
4
+ responses = [];
5
+ eventBus = new EventEmitter();
7
6
  constructor(emitFunction, getResponseFunction, additionalFunctions) {
8
- super({}, Object.assign(Object.assign({}, (additionalFunctions || {})), {
9
- "emit": (stack) => {
10
- const [str1] = tzo_1.getStackParams("emit", ["string | number"], stack);
11
- this.eventBus.emit('emit', str1);
12
- emitFunction(str1);
13
- },
14
- "response": (stack, context, vm) => {
15
- const [num1, str1] = tzo_1.getStackParams("response", ["number", "string"], stack);
16
- const response = { response: str1, pc: num1 };
17
- this.eventBus.emit('response', response);
18
- this.responses.push(response);
19
- },
20
- "getResponse": (stack, context, vm) => {
21
- vm.suspend();
22
- const choices = this.responses.map((resp, index) => { return { title: resp.response, programCounter: resp.pc, id: index }; });
23
- const sChoices = choices.map(c => ({ title: c.title, id: c.id }));
24
- while (this.responses.length > 0) { // clear responses, so that current responses won't appear again next time
25
- this.responses.pop();
26
- }
27
- getResponseFunction(sChoices).then(choiceID => {
28
- const choice = choices.find(c => c.id === choiceID);
29
- if (choice === undefined) {
30
- throw new Error(`Unknown choice ID: ${choiceID}!`);
7
+ super({}, {
8
+ ...(additionalFunctions || {}), ...{
9
+ "emit": (stack) => {
10
+ const [str1] = getStackParams("emit", ["string | number"], stack);
11
+ this.eventBus.emit('emit', str1);
12
+ emitFunction(str1);
13
+ },
14
+ "response": (stack, context, vm) => {
15
+ const [num1, str1] = getStackParams("response", ["number", "string"], stack);
16
+ const response = { response: str1, pc: num1 };
17
+ this.eventBus.emit('response', response);
18
+ this.responses.push(response);
19
+ },
20
+ "getResponse": (stack, context, vm) => {
21
+ vm.suspend();
22
+ const choices = this.responses.map((resp, index) => { return { title: resp.response, programCounter: resp.pc, id: index }; });
23
+ const sChoices = choices.map(c => ({ title: c.title, id: c.id }));
24
+ while (this.responses.length > 0) { // clear responses, so that current responses won't appear again next time
25
+ this.responses.pop();
31
26
  }
32
- vm.stack.push(choice.programCounter);
33
- vm.run();
34
- }).catch(e => {
35
- this.eventBus.emit('error', e);
36
- this.quit();
37
- });
38
- },
39
- "optionEnabled": (stack, context, vm) => {
40
- // DEPRECATED - do not use!
41
- console.warn("optionEnabled opcode is deprecated! - do not use!");
42
- const [str1] = tzo_1.getStackParams("optionEnabled", ["string"], stack);
43
- const optstr = `optionEnabled_${str1}`;
44
- let retval = null;
45
- if (vm.context[optstr] === undefined) {
46
- vm.context[optstr] = 1;
47
- retval = 1;
48
- }
49
- else {
50
- retval = vm.context[optstr];
51
- }
52
- stack.push(retval);
53
- },
54
- "optionDisabled": (stack, context, vm) => {
55
- // DEPRECATED - do not use!
56
- console.warn("optionDisabled opcode is deprecated! - do not use!");
57
- const [str1] = tzo_1.getStackParams("optionDisabled", ["string"], stack);
58
- const optstr = `optionEnabled_${str1}`;
59
- let retval = null;
60
- if (vm.context[optstr] === undefined) {
27
+ getResponseFunction(sChoices).then(choiceID => {
28
+ const choice = choices.find(c => c.id === choiceID);
29
+ if (choice === undefined) {
30
+ throw new Error(`Unknown choice ID: ${choiceID}!`);
31
+ }
32
+ vm.stack.push(choice.programCounter);
33
+ vm.run();
34
+ }).catch(e => {
35
+ this.eventBus.emit('error', e);
36
+ this.quit();
37
+ });
38
+ },
39
+ "optionEnabled": (stack, context, vm) => {
40
+ // DEPRECATED - do not use!
41
+ console.warn("optionEnabled opcode is deprecated! - do not use!");
42
+ const [str1] = getStackParams("optionEnabled", ["string"], stack);
43
+ const optstr = `optionEnabled_${str1}`;
44
+ let retval = null;
45
+ if (vm.context[optstr] === undefined) {
46
+ vm.context[optstr] = 1;
47
+ retval = 1;
48
+ }
49
+ else {
50
+ retval = vm.context[optstr];
51
+ }
52
+ stack.push(retval);
53
+ },
54
+ "optionDisabled": (stack, context, vm) => {
55
+ // DEPRECATED - do not use!
56
+ console.warn("optionDisabled opcode is deprecated! - do not use!");
57
+ const [str1] = getStackParams("optionDisabled", ["string"], stack);
58
+ const optstr = `optionEnabled_${str1}`;
59
+ let retval = null;
60
+ if (vm.context[optstr] === undefined) {
61
+ vm.context[optstr] = 1;
62
+ retval = 0;
63
+ }
64
+ else {
65
+ retval = vm.context[optstr] === 1 ? 0 : 1;
66
+ }
67
+ stack.push(retval);
68
+ },
69
+ "disableOption": (stack, context, vm) => {
70
+ // DEPRECATED - do not use!
71
+ console.warn("disableOption opcode is deprecated! - do not use!");
72
+ const [str1] = getStackParams("disableOption", ["string"], stack);
73
+ const optstr = `optionEnabled_${str1}`;
74
+ vm.context[optstr] = 0;
75
+ },
76
+ "enableOption": (stack, context, vm) => {
77
+ // DEPRECATED - do not use!
78
+ console.warn("enableOption opcode is deprecated! - do not use!");
79
+ const [str1] = getStackParams("enableOption", ["string"], stack);
80
+ const optstr = `optionEnabled_${str1}`;
61
81
  vm.context[optstr] = 1;
62
- retval = 0;
63
- }
64
- else {
65
- retval = vm.context[optstr] === 1 ? 0 : 1;
66
- }
67
- stack.push(retval);
68
- },
69
- "disableOption": (stack, context, vm) => {
70
- // DEPRECATED - do not use!
71
- console.warn("disableOption opcode is deprecated! - do not use!");
72
- const [str1] = tzo_1.getStackParams("disableOption", ["string"], stack);
73
- const optstr = `optionEnabled_${str1}`;
74
- vm.context[optstr] = 0;
75
- },
76
- "enableOption": (stack, context, vm) => {
77
- // DEPRECATED - do not use!
78
- console.warn("enableOption opcode is deprecated! - do not use!");
79
- const [str1] = tzo_1.getStackParams("enableOption", ["string"], stack);
80
- const optstr = `optionEnabled_${str1}`;
81
- vm.context[optstr] = 1;
82
- },
83
- }));
84
- this.responses = [];
85
- this.eventBus = new events_1.EventEmitter();
82
+ },
83
+ }
84
+ });
86
85
  }
87
86
  }
88
- exports.QuestVM = QuestVM;
89
87
  //# sourceMappingURL=QuestVM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuestVM.js","sourceRoot":"","sources":["../../src/QuestVM.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QuestVM.js","sourceRoot":"","sources":["../../src/QuestVM.ts"],"names":[],"mappings":"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"}
package/dist/node/cli.js CHANGED
@@ -1,57 +1,41 @@
1
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')
2
+ import fs from "fs";
3
+ import { program } from "commander";
4
+ import { parseMarkdown } from "./parseMarkdown.js";
5
+ import { QuestVM } from "./QuestVM.js";
6
+ program
7
+ .version('0.0.37')
24
8
  .option('-c, --clear', 'Clear console on each state')
25
9
  .option('--input <path>', "Load source .md or .json file from path. Path can be either from local filesystem, or via HTTP(S) URL")
26
10
  .option('--output <path>', "Emit VMState .json file")
27
11
  .option('--no-run', "Do not actually load and run the VM; just parse input and (optionally) emit output")
28
12
  .parse(process.argv);
29
- if (!commander_1.default.input) {
13
+ const options = program.opts();
14
+ if (!options.input) {
30
15
  console.log("Missing input! Please specify an input file via --input");
31
16
  process.exit(1);
32
17
  }
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
- });
18
+ async function load() {
19
+ let input_file;
20
+ if (options.input.startsWith("http://") || options.input.startsWith("https://")) {
21
+ const res = await fetch(options.input);
22
+ input_file = await res.text();
23
+ }
24
+ else {
25
+ const input_file_buf = await fs.promises.readFile(options.input);
26
+ input_file = input_file_buf.toString();
27
+ }
28
+ return input_file;
46
29
  }
47
- (() => __awaiter(void 0, void 0, void 0, function* () {
48
- const input_file = yield load();
49
- const vm = new QuestVM_1.QuestVM(body => {
30
+ (async () => {
31
+ const input_file = await load();
32
+ const vm = new QuestVM(body => {
50
33
  process.stdout.write(`${body}`);
51
- }, (choices) => {
34
+ }, async (choices) => {
52
35
  process.stdout.write("\n"); // add newline to make inquirer not overwrie any previously emitted text
53
- return inquirer_1.default.prompt([{
54
- type: "list",
36
+ const inquirer = (await import("inquirer")).default;
37
+ return inquirer.prompt([{
38
+ type: "select",
55
39
  name: "selectedChoice",
56
40
  message: " ",
57
41
  choices: choices.map(c => ({ name: c.title, value: c.id }))
@@ -60,21 +44,21 @@ function load() {
60
44
  });
61
45
  }, {});
62
46
  let vmState = undefined;
63
- if (commander_1.default.input.endsWith(".json")) {
47
+ if (options.input.endsWith(".json")) {
64
48
  vmState = JSON.parse(input_file);
65
49
  }
66
- else if (commander_1.default.input.endsWith(".qmd") || commander_1.default.input.endsWith(".qmd.html") || commander_1.default.input.endsWith(".md") || commander_1.default.input.endsWith(".md.html")) {
67
- vmState = parseMarkdown_1.parseMarkdown(input_file).qvmState;
50
+ else if (options.input.endsWith(".qmd") || options.input.endsWith(".qmd.html") || options.input.endsWith(".md") || options.input.endsWith(".md.html")) {
51
+ vmState = parseMarkdown(input_file).qvmState;
68
52
  }
69
53
  else {
70
54
  throw new Error("Program input file needs to have .json or .qmd / .qmd.html / .md / .md.html extension!");
71
55
  }
72
- if (commander_1.default.output) {
73
- fs_1.default.writeFileSync(commander_1.default.output, JSON.stringify(vmState, null, 2));
56
+ if (options.output) {
57
+ fs.writeFileSync(options.output, JSON.stringify(vmState, null, 2));
74
58
  }
75
- if (commander_1.default.run) {
59
+ if (options.run) {
76
60
  vm.loadVMState(vmState);
77
61
  vm.run();
78
62
  }
79
- }))();
63
+ })();
80
64
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,4CAAoB;AACpB,0DAAgC;AAChC,mDAAgD;AAChD,uCAA4C;AAC5C,wDAAgC;AAEhC,4DAA+B;AAE/B,mBAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;KACpD,MAAM,CAAC,gBAAgB,EAAE,uGAAuG,CAAC;KACjI,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,UAAU,EAAE,oFAAoF,CAAC;KACxG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvB,IAAI,CAAC,mBAAO,CAAC,KAAK,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,SAAe,IAAI;;QACjB,IAAI,UAAU,CAAC;QACf,IAAI,mBAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,mBAAO,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC/E,MAAM,GAAG,GAAG,MAAM,oBAAK,CAAC,mBAAO,CAAC,KAAK,CAAC,CAAC;YACvC,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;SAC/B;aAAM;YACL,MAAM,cAAc,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAO,CAAC,KAAK,CAAC,CAAC;YACjE,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;SACxC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AAED,CAAC,GAAS,EAAE;IACV,MAAM,UAAU,GAAG,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,OAAiB,EAAE,EAAE;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wEAAwE;QACpG,OAAO,kBAAQ,CAAC,MAAM,CAAC,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjB,OAAO,OAAO,CAAC,cAAc,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,OAAO,GAAe,SAAS,CAAC;IAEpC,IAAI,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAe,CAAC;KAChD;SAAM,IAAI,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QACvJ,OAAO,GAAG,6BAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;KAC9C;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAA;KAC1G;IAED,IAAI,mBAAO,CAAC,MAAM,EAAE;QAClB,YAAE,CAAC,aAAa,CAAC,mBAAO,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACpE;IAED,IAAI,mBAAO,CAAC,GAAG,EAAE;QACf,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxB,EAAE,CAAC,GAAG,EAAE,CAAC;KACV;AACH,CAAC,CAAA,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from "./QuestVM";
2
- export * from "./parseMarkdown";
1
+ export * from "./QuestVM.js";
2
+ export * from "./parseMarkdown.js";
@@ -1,15 +1,3 @@
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);
1
+ export * from "./QuestVM.js";
2
+ export * from "./parseMarkdown.js";
15
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
@@ -1,9 +1,19 @@
1
- import removePosition from "unist-util-remove-position";
2
- import { Node } from "unist";
1
+ import { Node as UnistNode } from "unist";
2
+ type Node = UnistNode & {
3
+ value?: string;
4
+ url?: string;
5
+ lang?: string;
6
+ name?: string;
7
+ ordered?: boolean;
8
+ options?: {
9
+ [key: string]: any;
10
+ };
11
+ children?: Node[];
12
+ };
3
13
  import 'array-flat-polyfill';
4
14
  import { TzoVMState } from "tzo";
5
- export declare type Directive = string;
6
- export declare type OptionNode = Node & {
15
+ export type Directive = string;
16
+ export type OptionNode = Node & {
7
17
  type: "option";
8
18
  directives: null | Directive[];
9
19
  preconditionChildren: null | Node[];
@@ -11,15 +21,16 @@ export declare type OptionNode = Node & {
11
21
  text: null | string;
12
22
  link: null | string;
13
23
  };
14
- export declare type QuestMarkVMState = Node & TzoVMState;
24
+ export type QuestMarkVMState = Node & TzoVMState;
15
25
  export declare enum NoLinkBehaviour {
16
- EXIT = 0,
26
+ EXIT = 0,// Exit the quest if no link is found for an option. NOT RECOMMENDED - Prefer using explicit exits instead by calling the `exit` instruction!
17
27
  LOOPBACK_TO_OPTIONS = 1
18
28
  }
19
29
  export declare function parseMarkdown(file_contents: string): {
20
- parsedMDFile: removePosition.NodeWithoutPosition;
30
+ parsedMDFile: undefined;
21
31
  qvmState: {
22
32
  type: "questmarkVMState";
23
33
  children: any[];
24
34
  } & TzoVMState;
25
35
  };
36
+ export {};