yarn-spinner-runner-ts 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.
- package/README.md +180 -0
- package/dist/compile/compiler.d.ts +9 -0
- package/dist/compile/compiler.js +172 -0
- package/dist/compile/compiler.js.map +1 -0
- package/dist/compile/ir.d.ts +47 -0
- package/dist/compile/ir.js +2 -0
- package/dist/compile/ir.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/model/ast.d.ts +72 -0
- package/dist/model/ast.js +2 -0
- package/dist/model/ast.js.map +1 -0
- package/dist/parse/lexer.d.ts +7 -0
- package/dist/parse/lexer.js +78 -0
- package/dist/parse/lexer.js.map +1 -0
- package/dist/parse/parser.d.ts +4 -0
- package/dist/parse/parser.js +433 -0
- package/dist/parse/parser.js.map +1 -0
- package/dist/runtime/commands.d.ts +31 -0
- package/dist/runtime/commands.js +157 -0
- package/dist/runtime/commands.js.map +1 -0
- package/dist/runtime/evaluator.d.ts +52 -0
- package/dist/runtime/evaluator.js +309 -0
- package/dist/runtime/evaluator.js.map +1 -0
- package/dist/runtime/results.d.ts +22 -0
- package/dist/runtime/results.js +2 -0
- package/dist/runtime/results.js.map +1 -0
- package/dist/runtime/runner.d.ts +63 -0
- package/dist/runtime/runner.js +456 -0
- package/dist/runtime/runner.js.map +1 -0
- package/dist/tests/full_featured.test.d.ts +1 -0
- package/dist/tests/full_featured.test.js +130 -0
- package/dist/tests/full_featured.test.js.map +1 -0
- package/dist/tests/index.test.d.ts +1 -0
- package/dist/tests/index.test.js +30 -0
- package/dist/tests/index.test.js.map +1 -0
- package/dist/tests/jump_detour.test.d.ts +1 -0
- package/dist/tests/jump_detour.test.js +47 -0
- package/dist/tests/jump_detour.test.js.map +1 -0
- package/dist/tests/nodes_lines.test.d.ts +1 -0
- package/dist/tests/nodes_lines.test.js +23 -0
- package/dist/tests/nodes_lines.test.js.map +1 -0
- package/dist/tests/once.test.d.ts +1 -0
- package/dist/tests/once.test.js +29 -0
- package/dist/tests/once.test.js.map +1 -0
- package/dist/tests/options.test.d.ts +1 -0
- package/dist/tests/options.test.js +32 -0
- package/dist/tests/options.test.js.map +1 -0
- package/dist/tests/variables_flow_cmds.test.d.ts +1 -0
- package/dist/tests/variables_flow_cmds.test.js +30 -0
- package/dist/tests/variables_flow_cmds.test.js.map +1 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/commands.md +21 -0
- package/docs/compatibility-checklist.md +77 -0
- package/docs/css-attribute.md +47 -0
- package/docs/detour.md +24 -0
- package/docs/enums.md +25 -0
- package/docs/flow-control.md +25 -0
- package/docs/functions.md +20 -0
- package/docs/jumps.md +24 -0
- package/docs/line-groups.md +21 -0
- package/docs/lines-nodes-and-options.md +30 -0
- package/docs/logic-and-variables.md +25 -0
- package/docs/markup.md +19 -0
- package/docs/node-groups.md +13 -0
- package/docs/once.md +21 -0
- package/docs/options.md +45 -0
- package/docs/saliency.md +25 -0
- package/docs/scenes-actors-setup.md +195 -0
- package/docs/scenes.md +64 -0
- package/docs/shadow-lines.md +18 -0
- package/docs/smart-variables.md +19 -0
- package/docs/storylets-and-saliency-a-primer.md +14 -0
- package/docs/tags-metadata.md +18 -0
- package/eslint.config.cjs +33 -0
- package/examples/browser/README.md +40 -0
- package/examples/browser/index.html +23 -0
- package/examples/browser/main.tsx +16 -0
- package/examples/browser/vite.config.ts +22 -0
- package/examples/react/DialogueExample.tsx +2 -0
- package/examples/react/DialogueView.tsx +2 -0
- package/examples/react/useYarnRunner.tsx +2 -0
- package/examples/scenes/scenes.yaml +10 -0
- package/examples/yarn/full_featured.yarn +43 -0
- package/package.json +55 -0
- package/src/compile/compiler.ts +183 -0
- package/src/compile/ir.ts +28 -0
- package/src/index.ts +17 -0
- package/src/model/ast.ts +93 -0
- package/src/parse/lexer.ts +108 -0
- package/src/parse/parser.ts +435 -0
- package/src/react/DialogueExample.tsx +149 -0
- package/src/react/DialogueScene.tsx +107 -0
- package/src/react/DialogueView.tsx +160 -0
- package/src/react/dialogue.css +181 -0
- package/src/react/useYarnRunner.tsx +33 -0
- package/src/runtime/commands.ts +183 -0
- package/src/runtime/evaluator.ts +327 -0
- package/src/runtime/results.ts +27 -0
- package/src/runtime/runner.ts +480 -0
- package/src/scene/parser.ts +83 -0
- package/src/scene/types.ts +17 -0
- package/src/tests/full_featured.test.ts +131 -0
- package/src/tests/index.test.ts +34 -0
- package/src/tests/jump_detour.test.ts +47 -0
- package/src/tests/nodes_lines.test.ts +27 -0
- package/src/tests/once.test.ts +32 -0
- package/src/tests/options.test.ts +34 -0
- package/src/tests/variables_flow_cmds.test.ts +33 -0
- package/src/types.ts +4 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("full featured Yarn script with all elements", () => {
|
|
6
|
+
const script = `
|
|
7
|
+
title: Start
|
|
8
|
+
group: Demo
|
|
9
|
+
color: blue
|
|
10
|
+
---
|
|
11
|
+
Narrator: Welcome to the comprehensive Yarn test.
|
|
12
|
+
<<set score 7>>
|
|
13
|
+
{if score >= 10}
|
|
14
|
+
Narrator: High score branch.
|
|
15
|
+
{else if score >= 5}
|
|
16
|
+
Narrator: Medium score branch.
|
|
17
|
+
{else}
|
|
18
|
+
Narrator: Low score branch.
|
|
19
|
+
{endif}
|
|
20
|
+
|
|
21
|
+
<<once>>
|
|
22
|
+
Narrator: This once block should only appear the first time.
|
|
23
|
+
<<endonce>>
|
|
24
|
+
|
|
25
|
+
-> Take the main path
|
|
26
|
+
Narrator: Proceeding on the main path.
|
|
27
|
+
<<jump NextScene>>
|
|
28
|
+
-> Explore a detour
|
|
29
|
+
Narrator: Let's explore a detour first.
|
|
30
|
+
<<detour AsideInfo>>
|
|
31
|
+
Narrator: Back from detour.
|
|
32
|
+
<<jump NextScene>>
|
|
33
|
+
===
|
|
34
|
+
|
|
35
|
+
title: NextScene
|
|
36
|
+
group: Demo
|
|
37
|
+
---
|
|
38
|
+
Narrator: You have arrived in the next scene.
|
|
39
|
+
-> Ask about features
|
|
40
|
+
Player: What can this system do?
|
|
41
|
+
Narrator: It supports options, conditions, once, jump, and detour.
|
|
42
|
+
-> Finish
|
|
43
|
+
Narrator: Ending the scene.
|
|
44
|
+
===
|
|
45
|
+
|
|
46
|
+
title: AsideInfo
|
|
47
|
+
group: Demo
|
|
48
|
+
---
|
|
49
|
+
Narrator: This is detour content.
|
|
50
|
+
===
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
const doc = parseYarn(script);
|
|
54
|
+
const ir = compile(doc);
|
|
55
|
+
|
|
56
|
+
// First run: once content should appear
|
|
57
|
+
let runner = new YarnRunner(ir, { startAt: "Start" });
|
|
58
|
+
|
|
59
|
+
// Welcome text
|
|
60
|
+
const a = runner.currentResult!;
|
|
61
|
+
strictEqual(a.type, "text");
|
|
62
|
+
if (a.type === "text") strictEqual(/Welcome/.test(a.text), true, "Should show welcome");
|
|
63
|
+
runner.advance();
|
|
64
|
+
|
|
65
|
+
// set command result
|
|
66
|
+
const b = runner.currentResult!;
|
|
67
|
+
strictEqual(b.type, "command", "Should emit command");
|
|
68
|
+
runner.advance();
|
|
69
|
+
|
|
70
|
+
// Medium score branch (score is 7, >= 5 but < 10)
|
|
71
|
+
const c = runner.currentResult!;
|
|
72
|
+
strictEqual(c.type, "text");
|
|
73
|
+
if (c.type === "text") strictEqual(/Medium score branch/.test(c.text), true, "Should take medium branch");
|
|
74
|
+
runner.advance();
|
|
75
|
+
|
|
76
|
+
// Once block content
|
|
77
|
+
const d = runner.currentResult!;
|
|
78
|
+
strictEqual(d.type, "text");
|
|
79
|
+
if (d.type === "text") strictEqual(/This once block should only appear the first time\./.test(d.text), true, "Once block should appear first time");
|
|
80
|
+
runner.advance();
|
|
81
|
+
|
|
82
|
+
// Options
|
|
83
|
+
const e = runner.currentResult!;
|
|
84
|
+
strictEqual(e.type, "options", "Should show options");
|
|
85
|
+
if (e.type === "options") strictEqual(e.options.length, 2, "Should have 2 options");
|
|
86
|
+
|
|
87
|
+
// Choose detour path (index 1)
|
|
88
|
+
runner.advance(1);
|
|
89
|
+
// Body text before detour
|
|
90
|
+
const f = runner.currentResult!;
|
|
91
|
+
strictEqual(f.type, "text");
|
|
92
|
+
if (f.type === "text") strictEqual(/Let's explore a detour first/.test(f.text), true, "Should show option body");
|
|
93
|
+
runner.advance(); // detour executes
|
|
94
|
+
// Detour content should be emitted
|
|
95
|
+
const g = runner.currentResult!;
|
|
96
|
+
strictEqual(g.type, "text");
|
|
97
|
+
if (g.type === "text") strictEqual(/This is detour content/.test(g.text), true, "Should enter detour");
|
|
98
|
+
runner.advance(); // return from detour
|
|
99
|
+
// After detour, should continue with next line
|
|
100
|
+
const h = runner.currentResult!;
|
|
101
|
+
strictEqual(h.type, "text");
|
|
102
|
+
if (h.type === "text") strictEqual(/Back from detour/.test(h.text), true, "Should return from detour");
|
|
103
|
+
runner.advance(); // jump executes
|
|
104
|
+
// NextScene arrival
|
|
105
|
+
const i = runner.currentResult!;
|
|
106
|
+
strictEqual(i.type, "text");
|
|
107
|
+
if (i.type === "text") strictEqual(/arrived in the next scene/.test(i.text), true, "Should jump to NextScene");
|
|
108
|
+
runner.advance();
|
|
109
|
+
// Options in NextScene
|
|
110
|
+
const j = runner.currentResult!;
|
|
111
|
+
strictEqual(j.type, "options", "Should show options in NextScene");
|
|
112
|
+
if (j.type === "options") strictEqual(j.options.length, 2, "Should have 2 options in NextScene");
|
|
113
|
+
|
|
114
|
+
// Second run: once block should be skipped
|
|
115
|
+
runner = new YarnRunner(ir, { startAt: "Start" });
|
|
116
|
+
const k = runner.currentResult!;
|
|
117
|
+
strictEqual(k.type, "text");
|
|
118
|
+
if (k.type === "text") strictEqual(/Welcome/.test(k.text), true, "Welcome should appear");
|
|
119
|
+
runner.advance(); // command
|
|
120
|
+
runner.advance(); // branch line
|
|
121
|
+
// Should skip once and show options immediately after branch
|
|
122
|
+
let l = runner.currentResult!;
|
|
123
|
+
if (l.type === "text") {
|
|
124
|
+
// Advance one more time in case an intermediate text was emitted
|
|
125
|
+
runner.advance();
|
|
126
|
+
l = runner.currentResult!;
|
|
127
|
+
}
|
|
128
|
+
strictEqual(l.type, "options", "Once should be skipped on second run");
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("basic dialogue with options", () => {
|
|
6
|
+
const dialogue = `
|
|
7
|
+
title: Start
|
|
8
|
+
---
|
|
9
|
+
Narrator: Hi
|
|
10
|
+
-> Opt A
|
|
11
|
+
Narrator: A chosen
|
|
12
|
+
-> Opt B
|
|
13
|
+
Narrator: B chosen
|
|
14
|
+
===
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
const doc = parseYarn(dialogue);
|
|
18
|
+
const ir = compile(doc);
|
|
19
|
+
const runner = new YarnRunner(ir, { startAt: "Start" });
|
|
20
|
+
|
|
21
|
+
const r1 = runner.currentResult!;
|
|
22
|
+
strictEqual(r1.type, "text");
|
|
23
|
+
runner.advance();
|
|
24
|
+
const r2 = runner.currentResult!;
|
|
25
|
+
strictEqual(r2.type, "options");
|
|
26
|
+
runner.advance(0);
|
|
27
|
+
const r3 = runner.currentResult!;
|
|
28
|
+
strictEqual(r3.type, "text");
|
|
29
|
+
if (r3.type === "text") {
|
|
30
|
+
strictEqual(r3.text.includes("A chosen"), true);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("jump and detour", () => {
|
|
6
|
+
const script = `
|
|
7
|
+
title: Start
|
|
8
|
+
---
|
|
9
|
+
Narrator: Go to Next
|
|
10
|
+
<<jump Next>>
|
|
11
|
+
===
|
|
12
|
+
|
|
13
|
+
title: Next
|
|
14
|
+
---
|
|
15
|
+
Narrator: In Next
|
|
16
|
+
<<detour Aside>>
|
|
17
|
+
Narrator: Back from Aside
|
|
18
|
+
===
|
|
19
|
+
|
|
20
|
+
title: Aside
|
|
21
|
+
---
|
|
22
|
+
Narrator: Inside Aside
|
|
23
|
+
===
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
const doc = parseYarn(script);
|
|
27
|
+
const ir = compile(doc);
|
|
28
|
+
const runner = new YarnRunner(ir, { startAt: "Start" });
|
|
29
|
+
|
|
30
|
+
const a = runner.currentResult!;
|
|
31
|
+
strictEqual(a.type, "text");
|
|
32
|
+
if (a.type === "text") strictEqual(/Go to Next/.test(a.text), true, "Expect first line");
|
|
33
|
+
runner.advance(); // executes jump, should produce Next's first line
|
|
34
|
+
const b = runner.currentResult!;
|
|
35
|
+
strictEqual(b.type, "text");
|
|
36
|
+
if (b.type === "text") strictEqual(/In Next/.test(b.text), true, "Expect Next node line");
|
|
37
|
+
runner.advance(); // should detour into Aside and emit its first line
|
|
38
|
+
const c = runner.currentResult!;
|
|
39
|
+
strictEqual(c.type, "text");
|
|
40
|
+
if (c.type === "text") strictEqual(/Inside Aside/.test(c.text), true, "Expect detour content");
|
|
41
|
+
runner.advance(); // should return from detour and continue
|
|
42
|
+
const d = runner.currentResult!;
|
|
43
|
+
strictEqual(d.type, "text");
|
|
44
|
+
if (d.type === "text") strictEqual(/Back from Aside/.test(d.text), true, "Expect return from detour");
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("nodes and lines delivery", () => {
|
|
6
|
+
const script = `
|
|
7
|
+
title: Start
|
|
8
|
+
---
|
|
9
|
+
Narrator: Line one
|
|
10
|
+
Narrator: Line two
|
|
11
|
+
===
|
|
12
|
+
`;
|
|
13
|
+
|
|
14
|
+
const doc = parseYarn(script);
|
|
15
|
+
const ir = compile(doc);
|
|
16
|
+
const runner = new YarnRunner(ir, { startAt: "Start" });
|
|
17
|
+
|
|
18
|
+
strictEqual(runner.currentResult?.type, "text", "Expected first result to be text");
|
|
19
|
+
strictEqual(runner.currentResult?.text.includes("Line one"), true, "Expected 'Line one'");
|
|
20
|
+
runner.advance();
|
|
21
|
+
strictEqual(runner.currentResult?.type, "text", "Should still be text");
|
|
22
|
+
strictEqual(runner.currentResult?.text.includes("Line two"), true, "Expected 'Line two'");
|
|
23
|
+
runner.advance();
|
|
24
|
+
strictEqual(runner.currentResult?.isDialogueEnd, true, "Expected dialogue end after lines");
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("once block behavior", () => {
|
|
6
|
+
const script = `
|
|
7
|
+
title: Start
|
|
8
|
+
---
|
|
9
|
+
<<once>>
|
|
10
|
+
Narrator: One time only
|
|
11
|
+
<<endonce>>
|
|
12
|
+
Narrator: Always
|
|
13
|
+
===
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
const doc = parseYarn(script);
|
|
17
|
+
const ir = compile(doc);
|
|
18
|
+
|
|
19
|
+
// First run
|
|
20
|
+
let runner = new YarnRunner(ir, { startAt: "Start" });
|
|
21
|
+
const a = runner.currentResult!;
|
|
22
|
+
strictEqual(a.type, "text");
|
|
23
|
+
if (a.type === "text") strictEqual(/One time only/.test(a.text), true, "Expect once block content on first run");
|
|
24
|
+
runner.advance();
|
|
25
|
+
const b = runner.currentResult!;
|
|
26
|
+
strictEqual(b.type, "text");
|
|
27
|
+
if (b.type === "text") strictEqual(/Always/.test(b.text), true, "Expect always line after once");
|
|
28
|
+
|
|
29
|
+
// Note: persistence of once across sessions depends on integration; not asserting second run behavior here.
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("options selection", () => {
|
|
6
|
+
const script = `
|
|
7
|
+
title: Start
|
|
8
|
+
---
|
|
9
|
+
Narrator: Choose one
|
|
10
|
+
-> A
|
|
11
|
+
Narrator: Picked A
|
|
12
|
+
-> B
|
|
13
|
+
Narrator: Picked B
|
|
14
|
+
===
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
const doc = parseYarn(script);
|
|
18
|
+
const ir = compile(doc);
|
|
19
|
+
const runner = new YarnRunner(ir, { startAt: "Start" });
|
|
20
|
+
|
|
21
|
+
const a = runner.currentResult!;
|
|
22
|
+
strictEqual(a.type, "text", "Expected intro text");
|
|
23
|
+
runner.advance();
|
|
24
|
+
const b = runner.currentResult!;
|
|
25
|
+
strictEqual(b.type, "options", "Expected options after intro");
|
|
26
|
+
if (b.type === "options") strictEqual(b.options.length, 2, "Should have 2 options");
|
|
27
|
+
// choose B (index 1)
|
|
28
|
+
runner.advance(1);
|
|
29
|
+
const c = runner.currentResult!;
|
|
30
|
+
strictEqual(c.type, "text", "Should be text after selection");
|
|
31
|
+
if (c.type === "text") strictEqual(c.text.includes("Picked B"), true, "Expected body of option B");
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import { strictEqual } from "node:assert";
|
|
3
|
+
import { parseYarn, compile, YarnRunner } from "../index.js";
|
|
4
|
+
|
|
5
|
+
test("variables, flow control, and commands", () => {
|
|
6
|
+
const script = `
|
|
7
|
+
title: Start
|
|
8
|
+
---
|
|
9
|
+
<<set $score to 10>>
|
|
10
|
+
<<if $score >= 10>>
|
|
11
|
+
Narrator: High
|
|
12
|
+
<<else>>
|
|
13
|
+
Narrator: Low
|
|
14
|
+
<<endif>>
|
|
15
|
+
===
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
const doc = parseYarn(script);
|
|
19
|
+
const ir = compile(doc);
|
|
20
|
+
const runner = new YarnRunner(ir, { startAt: "Start" });
|
|
21
|
+
|
|
22
|
+
// After command, expect if-branch 'High'
|
|
23
|
+
// First result should be command emission
|
|
24
|
+
const a = runner.currentResult!;
|
|
25
|
+
strictEqual(a.type, "command", "First result should be command");
|
|
26
|
+
runner.advance();
|
|
27
|
+
const b = runner.currentResult!;
|
|
28
|
+
strictEqual(b.type, "text", "Should be text after command");
|
|
29
|
+
if (b.type === "text") strictEqual(/High/.test(b.text), true, "Expected High branch");
|
|
30
|
+
strictEqual(runner.getVariable("score"), 10, "Variable should be set");
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { YarnDocument, YarnNode, Statement, Line, Command, OptionGroup, Option, IfBlock, OnceBlock, Jump, Detour } from "./model/ast";
|
|
2
|
+
export type { IRProgram, IRNode, IRInstruction } from "./compile/ir";
|
|
3
|
+
export type { RuntimeResult, TextResult, OptionsResult, CommandResult } from "./runtime/results";
|
|
4
|
+
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2021",
|
|
4
|
+
"module": "ES2022",
|
|
5
|
+
"moduleResolution": "Bundler",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"outDir": "dist",
|
|
8
|
+
"rootDir": "src",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"esModuleInterop": true,
|
|
12
|
+
"forceConsistentCasingInFileNames": true,
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"jsx": "react-jsx",
|
|
16
|
+
"lib": ["ES2021", "DOM"]
|
|
17
|
+
},
|
|
18
|
+
"include": ["src/**/*.ts", "src/**/*.tsx"],
|
|
19
|
+
"exclude": ["node_modules", "dist"]
|
|
20
|
+
}
|
|
21
|
+
|