webgal-parser 4.3.1-1.1
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/.babelrc +14 -0
- package/build/index.global.js +482 -0
- package/build/index.global.js.map +1 -0
- package/build/index.js +460 -0
- package/build/index.js.map +1 -0
- package/build/types/index.d.ts +10 -0
- package/build/types/interface/assets.d.ts +12 -0
- package/build/types/interface/runtimeInterface.d.ts +9 -0
- package/build/types/interface/sceneInterface.d.ts +94 -0
- package/build/types/sceneParser.d.ts +14 -0
- package/build/types/scriptParser/argsParser.d.ts +9 -0
- package/build/types/scriptParser/assetsScanner.d.ts +9 -0
- package/build/types/scriptParser/commandParser.d.ts +9 -0
- package/build/types/scriptParser/contentParser.d.ts +9 -0
- package/build/types/scriptParser/scriptParser.d.ts +9 -0
- package/build/types/scriptParser/subSceneScanner.d.ts +7 -0
- package/config/scriptConfig.js +46 -0
- package/config/scriptConfig.ts +44 -0
- package/index.d.ts +10 -0
- package/index.js +483 -0
- package/index.js.map +1 -0
- package/index.ts +25 -0
- package/interface/assets.d.ts +12 -0
- package/interface/assets.js +16 -0
- package/interface/assets.ts +12 -0
- package/interface/runtimeInterface.d.ts +9 -0
- package/interface/runtimeInterface.js +2 -0
- package/interface/runtimeInterface.ts +9 -0
- package/interface/sceneInterface.d.ts +91 -0
- package/interface/sceneInterface.js +32 -0
- package/interface/sceneInterface.ts +101 -0
- package/package.json +33 -0
- package/rollup.config.js +32 -0
- package/sceneParser.d.ts +14 -0
- package/sceneParser.js +53 -0
- package/sceneParser.ts +47 -0
- package/scriptParser/argsParser.d.ts +9 -0
- package/scriptParser/argsParser.js +70 -0
- package/scriptParser/argsParser.ts +62 -0
- package/scriptParser/assetsScanner.d.ts +9 -0
- package/scriptParser/assetsScanner.js +75 -0
- package/scriptParser/assetsScanner.ts +72 -0
- package/scriptParser/commandParser.d.ts +9 -0
- package/scriptParser/commandParser.js +60 -0
- package/scriptParser/commandParser.ts +57 -0
- package/scriptParser/contentParser.d.ts +9 -0
- package/scriptParser/contentParser.js +68 -0
- package/scriptParser/contentParser.ts +66 -0
- package/scriptParser/scriptParser.d.ts +9 -0
- package/scriptParser/scriptParser.js +81 -0
- package/scriptParser/scriptParser.ts +87 -0
- package/scriptParser/subSceneScanner.d.ts +7 -0
- package/scriptParser/subSceneScanner.js +26 -0
- package/scriptParser/subSceneScanner.ts +23 -0
- package/test/test.js +10 -0
- package/test/test.ts +117 -0
- package/tsconfig.json +29 -0
- package/tsconfig.node.json +10 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.subSceneScanner = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 扫描子场景
|
|
6
|
+
* @param content 语句内容
|
|
7
|
+
* @return {Array<string>} 子场景列表
|
|
8
|
+
*/
|
|
9
|
+
var sceneInterface_1 = require("../interface/sceneInterface");
|
|
10
|
+
var subSceneScanner = function (command, content) {
|
|
11
|
+
var subSceneList = [];
|
|
12
|
+
if (command === sceneInterface_1.commandType.changeScene || command === sceneInterface_1.commandType.callScene) {
|
|
13
|
+
subSceneList.push(content);
|
|
14
|
+
}
|
|
15
|
+
if (command === sceneInterface_1.commandType.choose) {
|
|
16
|
+
var chooseList = content.split('|');
|
|
17
|
+
var chooseValue = chooseList.map(function (e) { return e.split(':')[1]; });
|
|
18
|
+
chooseValue.forEach(function (e) {
|
|
19
|
+
if (e.match(/\./)) {
|
|
20
|
+
subSceneList.push(e);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return subSceneList;
|
|
25
|
+
};
|
|
26
|
+
exports.subSceneScanner = subSceneScanner;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 扫描子场景
|
|
3
|
+
* @param content 语句内容
|
|
4
|
+
* @return {Array<string>} 子场景列表
|
|
5
|
+
*/
|
|
6
|
+
import { commandType } from '../interface/sceneInterface';
|
|
7
|
+
|
|
8
|
+
export const subSceneScanner = (command: commandType, content: string): Array<string> => {
|
|
9
|
+
const subSceneList: Array<string> = [];
|
|
10
|
+
if (command === commandType.changeScene || command === commandType.callScene) {
|
|
11
|
+
subSceneList.push(content);
|
|
12
|
+
}
|
|
13
|
+
if (command === commandType.choose) {
|
|
14
|
+
const chooseList = content.split('|');
|
|
15
|
+
const chooseValue = chooseList.map((e) => e.split(':')[1]);
|
|
16
|
+
chooseValue.forEach((e) => {
|
|
17
|
+
if (e.match(/\./)) {
|
|
18
|
+
subSceneList.push(e);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return subSceneList;
|
|
23
|
+
};
|
package/test/test.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
var index_1 = require("../index");
|
|
4
|
+
var scriptConfig_1 = require("./scriptConfig");
|
|
5
|
+
var parser = new index_1.SceneParser(function (assetList) {
|
|
6
|
+
}, function (fileName, assetType) {
|
|
7
|
+
return fileName;
|
|
8
|
+
}, scriptConfig_1.ADD_NEXT_ARG_LIST, scriptConfig_1.SCRIPT_CONFIG);
|
|
9
|
+
var result = parser.parse("\n; \u521D\u59CB\u573A\u666F\uFF0C\u4EE5\u53CA\u7279\u6548\u6F14\u793A\nchangeBg:c4.jpg -next;\nunlockCg:c4.jpg -name=\u8857\u524D; \u89E3\u9501\u90E8\u5206CG\nunlockCg:xgmain.jpeg -name=\u661F\u5149\u5496\u5561\u9986\u4E0E\u6B7B\u795E\u4E4B\u8776;\nunlockBgm:s_Title.mp3 -name=Smiling-Swinging!!;\nWebGAL:\u7279\u6548\u7CFB\u7EDF\u662F3.9.2\u7248\u672C\u65B0\u5F15\u5165\u7684\u7CFB\u7EDF\uFF0C\u4F60\u60F3\u8981\u770B\u7279\u6548\u7684\u6F14\u793A\u5417\uFF1F;\nchoose:\u89C2\u770B\u7279\u6548\u6F14\u793A:demo|\u6211\u4E0D\u8981\u770B\u7279\u6548\uFF0C\u76F4\u63A5\u6765\u5427\uFF01:toStart;\nlabel:demo;\npixiInit;\npixiPerform:rain;\nWebGAL:\u73B0\u5728\u5C55\u793A\u7684\u662F\u4E0B\u96E8\u7684\u7279\u6548\u3002;\npixiInit;\npixiPerform:snow;\nWebGAL:\u73B0\u5728\u5C55\u793A\u7684\u662F\u4E0B\u96EA\u7684\u7279\u6548\u3002;\nsetTextbox:hide;\npixiInit;\nsetTextbox:on -next;\nWebGAL:\u7279\u6548\u7684\u6F14\u793A\u5DF2\u7ECF\u7ED3\u675F\uFF0C\u73B0\u5728\u6211\u4EEC\u6B63\u5F0F\u5F00\u59CB\u5427\uFF01;\n\n; \u6B63\u5F0F\u573A\u666F\nlabel:toStart;\nplayVideo:OP.mp4;\nchangeBg:c3.jpg -next;\nunlockCg:c3.jpg -name=cafe;\nchangeFigure:m2.png -left -next;\nbgm:cb1.mp3;\nunlockBgm:cb1.mp3 -name=\u3072\u3068\u3059\u3058\u306E\u5149\u660E;\nsetAnimation:enter-from-left -target=fig-left -next;\n\u7C73\u5496\u591A:\u86CB\u5305\u996D\u662F\u681E\u90A3\u505A\u7684\uFF0C\u4F46\u7EA2\u8336\u662F\u590F\u76EE\u6CE1\u7684\u3002 -v1.ogg;\n\u6602\u6674:......;\n\u987A\u4FBF\u95EE\u4E00\u4E0B\uFF0C\u4F60\u662F\u6253\u7B97\u505A\u4EC0\u4E48\u7684\uFF1F;\nchangeFigure:m1.png -left -next;\n\u7C73\u5496\u591A:\u5C31\u662F\u5012\u996E\u6599\u3002\u7136\u540E\u5496\u5561\u548C\u7EA2\u8336\u7684\u51B2\u6CE1\u65B9\u5F0F\u6211\u8FD8\u662F\u8BB0\u4F4F\u4E86\u7684\u3002 -v2.ogg;\n\u6602\u6674:\u8FD9\u3001\u8FD9\u6837\u4E48......;\n:\u8FD9\u732B\u722A\u5B50\u771F\u7684\u80FD\u6CE1\u8336\u4E48\u3002;\n\u62FF\u5F97\u4E86\u6C34\u58F6\u5417\uFF1F\u5C31\u51ED\u4ED6\u90A3\u4E2A\u8089\u7403\u722A\u5B50......;\n\u96BE\u9053\u8FD9\u4E9B\u4E5F\u662F\u51ED\u501F\u732B\u5996\u7684\u5947\u7279\u529B\u91CF\u505A\u5230\u7684\u5417\uFF1F;\nchangeFigure:none -left -next;\nchangeFigure:k1.png -next;\nsetAnimation:enter-from-bottom -target=fig-center -next;\n\u681E\u90A3:\u90A3\u4E48\uFF0C\u4F60\u60F3\u5148\u5C1D\u54EA\u4E2A\uFF1F -v3.ogg;\nchoose:\u54C1\u5C1D\u86CB\u5305\u996D:dbf|\u54C1\u5C1D\u7EA2\u8336:hc;\n\n; \u681E\u90A3\u9009\u9879\nlabel:dbf;\n\u6602\u6674:\u603B\u4E4B\uFF0C\u5148\u786E\u8BA4\u4E0B\u86CB\u5305\u996D\u7684\u5473\u9053\u5427;\nchangeFigure:k2.png -next;\n\u681E\u90A3:\u660E\u767D\u4E86\uFF0C\u4EA4\u7ED9\u6211\u5427 -v4.ogg;\nchangeFigure:none -next;\nchangeFigure:m2.png -left -next;\nchangeFigure:k3.png -right -next;\nsetAnimation:enter-from-left -target=fig-left -next;\nsetAnimation:enter-from-right -target=fig-right -next;\n\u681E\u90A3:\u90A3\u4E48\u7C73\u5496\u591A\u5148\u751F\uFF0C\u6211\u53BB\u505A\u4E00\u4E0B\u8BD5\u4F5C\u54C1 -v5.ogg;\n\u7C73\u5496\u591A:\u55EF\u3002\u53BB\u5427 -v6.ogg;\nchangeFigure:none -left -next;\nchangeFigure:none -right -next;\nchangeFigure:k4.png -next;\nsetAnimation:enter-from-bottom -target=fig-center -next;\n\u681E\u90A3:\u90A3\u4E48\u9AD8\u5CAD\u540C\u5B66\uFF0C\u6211\u4EEC\u79FB\u52A8\u5230\u53A8\u623F\u5427 -v7.ogg;\nchangeFigure:none -next;\nbgm:cb2.mp3;\nunlockBgm:cb2.mp3 -name=Tea Break;\nchangeBg:c2.jpg;\nunlockCg:c2.jpg -name=\u53A8\u623F;\nchangeFigure:k2.png -next;\n\u681E\u90A3:\u8BDD\u4E0D\u591A\u8BF4\u5F00\u59CB\u505A\u5427 -v8.ogg;\njumpLabel:end;\n\n; \u590F\u76EE\u9009\u9879\nlabel:hc;\nchangeFigure:none -next;\nchangeFigure:m1.png -left -next;\nchangeFigure:k1.png -right -next;\nsetAnimation:enter-from-left -target=fig-left -next;\nsetAnimation:enter-from-right -target=fig-right -next;\n\u7C73\u5496\u591A:\u90A3\u4E48\u5C31\u662F\uFF0C\u590F\u76EE\u4E86\u5427 -v9.ogg;\nchangeFigure:k6.png -right -next;\n\u681E\u90A3:\u5979\u521A\u53BB\u4F11\u606F\uFF0C\u8981\u4E0D\u8981\u6211\u53EB\u56DE\u6765\u5462\uFF1F -v10.ogg;\n\u6602\u6674:\u6CA1\u4E8B\uFF0C\u6211\u81EA\u5DF1\u53BB\u5427;\nchangeFigure:none -left -next;\nchangeFigure:none -right -next;\nbgm:cb2.mp3;\nchangeBg:c1.jpg -next;\nunlockCg:c1.jpg -name=\u4F11\u606F\u5BA4;\n:\u6211\u5148\u6572\u4E86\u6572\u95E8;\nminiAvatar:n1.png;\n\u590F\u76EE:\u54EA\u4F4D\uFF1F -v11.ogg;\n\u6602\u6674:\u6211\u662F\u9AD8\u5CAD\uFF0C\u53EF\u4EE5\u8FDB\u53BB\u5417\uFF1F;\n\u590F\u76EE:\u53EF\u4EE5\uFF0C\u6CA1\u95EE\u9898 -v12.ogg;\n\u6602\u6674:\u6253\u6405\u4E86;\nminiAvatar:none;\nchangeFigure:n4.png -next;\n\u6602\u6674:\u6253\u6405\u4F60\u4F11\u606F\u4E86;\n\u590F\u76EE:\u4E0D\u7528\u5728\u610F\uFF0C\u600E\u4E48\u4E86\uFF1F -v13.ogg;\nchangeFigure:n2.png -next;\n:\u5979\u5E76\u6CA1\u6709\u65E0\u7CBE\u6253\u91C7\uFF0C\u6BD4\u60F3\u8C61\u4E2D\u7CBE\u795E\u591A\u4E86;\n\u6602\u6674:\u95EE\u9053\u62FF\u624B\u83DC\u8C31\uFF0C\u5C31\u542C\u8BF4\u56DB\u5B63\u540C\u5B66\u6CE1\u7684\u7EA2\u8336\u5473\u9053\u4E0D\u9519\uFF0C\u6211\u4E5F\u60F3\u54C1\u5C1D\u4E00\u4E0B;\n\u590F\u76EE:\u660E\u767D\u4E86\uFF0C\u90A3\u6211\u4EEC\u56DE\u53BB\u5427 -v14.ogg;\njumpLabel:end;\n\n; \u7ED3\u675F\u573A\u666F\nlabel:end;\nchangeFigure:none -next;\nWebGAL:\u57FA\u7840\u6F14\u51FA\u7684\u5C55\u793A\u5DF2\u7ECF\u7ED3\u675F\u3002;\n", "test", "/test.txt");
|
|
10
|
+
console.log(result);
|
package/test/test.ts
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { SceneParser } from "../index";
|
|
2
|
+
import { ADD_NEXT_ARG_LIST, SCRIPT_CONFIG } from "../config/scriptConfig";
|
|
3
|
+
|
|
4
|
+
const parser = new SceneParser((assetList) => {
|
|
5
|
+
}, (fileName, assetType) => {
|
|
6
|
+
return fileName;
|
|
7
|
+
}, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG);
|
|
8
|
+
|
|
9
|
+
const result = parser.parse(`
|
|
10
|
+
; 初始场景,以及特效演示
|
|
11
|
+
changeBg:c4.jpg -next;
|
|
12
|
+
unlockCg:c4.jpg -name=街前; 解锁部分CG
|
|
13
|
+
unlockCg:xgmain.jpeg -name=星光咖啡馆与死神之蝶;
|
|
14
|
+
unlockBgm:s_Title.mp3 -name=Smiling-Swinging!!;
|
|
15
|
+
WebGAL:特效系统是3.9.2版本新引入的系统,你想要看特效的演示吗?;
|
|
16
|
+
choose:观看特效演示:demo|我不要看特效,直接来吧!:toStart;
|
|
17
|
+
label:demo;
|
|
18
|
+
pixiInit;
|
|
19
|
+
pixiPerform:rain;
|
|
20
|
+
WebGAL:现在展示的是下雨的特效。;
|
|
21
|
+
pixiInit;
|
|
22
|
+
pixiPerform:snow;
|
|
23
|
+
WebGAL:现在展示的是下雪的特效。;
|
|
24
|
+
setTextbox:hide;
|
|
25
|
+
pixiInit;
|
|
26
|
+
setTextbox:on -next;
|
|
27
|
+
WebGAL:特效的演示已经结束,现在我们正式开始吧!;
|
|
28
|
+
|
|
29
|
+
; 正式场景
|
|
30
|
+
label:toStart;
|
|
31
|
+
playVideo:OP.mp4;
|
|
32
|
+
changeBg:c3.jpg -next;
|
|
33
|
+
unlockCg:c3.jpg -name=cafe;
|
|
34
|
+
changeFigure:m2.png -left -next;
|
|
35
|
+
bgm:cb1.mp3;
|
|
36
|
+
unlockBgm:cb1.mp3 -name=ひとすじの光明;
|
|
37
|
+
setAnimation:enter-from-left -target=fig-left -next;
|
|
38
|
+
米咖多:蛋包饭是栞那做的,但红茶是夏目泡的。 -v1.ogg;
|
|
39
|
+
昂晴:......;
|
|
40
|
+
顺便问一下,你是打算做什么的?;
|
|
41
|
+
changeFigure:m1.png -left -next;
|
|
42
|
+
米咖多:就是倒饮料。然后咖啡和红茶的冲泡方式我还是记住了的。 -v2.ogg;
|
|
43
|
+
昂晴:这、这样么......;
|
|
44
|
+
:这猫爪子真的能泡茶么。;
|
|
45
|
+
拿得了水壶吗?就凭他那个肉球爪子......;
|
|
46
|
+
难道这些也是凭借猫妖的奇特力量做到的吗?;
|
|
47
|
+
changeFigure:none -left -next;
|
|
48
|
+
changeFigure:k1.png -next;
|
|
49
|
+
setAnimation:enter-from-bottom -target=fig-center -next;
|
|
50
|
+
栞那:那么,你想先尝哪个? -v3.ogg;
|
|
51
|
+
choose:品尝蛋包饭:dbf|品尝红茶:hc;
|
|
52
|
+
|
|
53
|
+
; 栞那选项
|
|
54
|
+
label:dbf;
|
|
55
|
+
昂晴:总之,先确认下蛋包饭的味道吧;
|
|
56
|
+
changeFigure:k2.png -next;
|
|
57
|
+
栞那:明白了,交给我吧 -v4.ogg;
|
|
58
|
+
changeFigure:none -next;
|
|
59
|
+
changeFigure:m2.png -left -next;
|
|
60
|
+
changeFigure:k3.png -right -next;
|
|
61
|
+
setAnimation:enter-from-left -target=fig-left -next;
|
|
62
|
+
setAnimation:enter-from-right -target=fig-right -next;
|
|
63
|
+
栞那:那么米咖多先生,我去做一下试作品 -v5.ogg;
|
|
64
|
+
米咖多:嗯。去吧 -v6.ogg;
|
|
65
|
+
changeFigure:none -left -next;
|
|
66
|
+
changeFigure:none -right -next;
|
|
67
|
+
changeFigure:k4.png -next;
|
|
68
|
+
setAnimation:enter-from-bottom -target=fig-center -next;
|
|
69
|
+
栞那:那么高岭同学,我们移动到厨房吧 -v7.ogg;
|
|
70
|
+
changeFigure:none -next;
|
|
71
|
+
bgm:cb2.mp3;
|
|
72
|
+
unlockBgm:cb2.mp3 -name=Tea Break;
|
|
73
|
+
changeBg:c2.jpg;
|
|
74
|
+
unlockCg:c2.jpg -name=厨房;
|
|
75
|
+
changeFigure:k2.png -next;
|
|
76
|
+
栞那:话不多说开始做吧 -v8.ogg;
|
|
77
|
+
jumpLabel:end;
|
|
78
|
+
|
|
79
|
+
; 夏目选项
|
|
80
|
+
label:hc;
|
|
81
|
+
changeFigure:none -next;
|
|
82
|
+
changeFigure:m1.png -left -next;
|
|
83
|
+
changeFigure:k1.png -right -next;
|
|
84
|
+
setAnimation:enter-from-left -target=fig-left -next;
|
|
85
|
+
setAnimation:enter-from-right -target=fig-right -next;
|
|
86
|
+
米咖多:那么就是,夏目了吧 -v9.ogg;
|
|
87
|
+
changeFigure:k6.png -right -next;
|
|
88
|
+
栞那:她刚去休息,要不要我叫回来呢? -v10.ogg;
|
|
89
|
+
昂晴:没事,我自己去吧;
|
|
90
|
+
changeFigure:none -left -next;
|
|
91
|
+
changeFigure:none -right -next;
|
|
92
|
+
bgm:cb2.mp3;
|
|
93
|
+
changeBg:c1.jpg -next;
|
|
94
|
+
unlockCg:c1.jpg -name=休息室;
|
|
95
|
+
:我先敲了敲门;
|
|
96
|
+
miniAvatar:n1.png;
|
|
97
|
+
夏目:哪位? -v11.ogg;
|
|
98
|
+
昂晴:我是高岭,可以进去吗?;
|
|
99
|
+
夏目:可以,没问题 -v12.ogg;
|
|
100
|
+
昂晴:打搅了;
|
|
101
|
+
miniAvatar:none;
|
|
102
|
+
changeFigure:n4.png -next;
|
|
103
|
+
昂晴:打搅你休息了;
|
|
104
|
+
夏目:不用在意,怎么了? -v13.ogg;
|
|
105
|
+
changeFigure:n2.png -next;
|
|
106
|
+
:她并没有无精打采,比想象中精神多了;
|
|
107
|
+
昂晴:问道拿手菜谱,就听说四季同学泡的红茶味道不错,我也想品尝一下;
|
|
108
|
+
夏目:明白了,那我们回去吧 -v14.ogg;
|
|
109
|
+
jumpLabel:end;
|
|
110
|
+
|
|
111
|
+
; 结束场景
|
|
112
|
+
label:end;
|
|
113
|
+
changeFigure:none -next;
|
|
114
|
+
WebGAL:基础演出的展示已经结束。;
|
|
115
|
+
`, "test", "/test.txt");
|
|
116
|
+
|
|
117
|
+
console.log(result);
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"declaration": true,
|
|
4
|
+
"declarationDir": "build/types",
|
|
5
|
+
"target": "ESNext",
|
|
6
|
+
"useDefineForClassFields": true,
|
|
7
|
+
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
|
8
|
+
"allowJs": false,
|
|
9
|
+
"skipLibCheck": false,
|
|
10
|
+
"esModuleInterop": false,
|
|
11
|
+
"allowSyntheticDefaultImports": true,
|
|
12
|
+
"strict": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"module": "ESNext",
|
|
15
|
+
"noImplicitAny": false,
|
|
16
|
+
"moduleResolution": "Node",
|
|
17
|
+
"resolveJsonModule": true,
|
|
18
|
+
"isolatedModules": true,
|
|
19
|
+
"noEmit": true,
|
|
20
|
+
"jsx": "react-jsx",
|
|
21
|
+
"paths": {
|
|
22
|
+
"@/*": ["./src/*"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"include": [
|
|
26
|
+
"src"
|
|
27
|
+
],
|
|
28
|
+
"references": [{ "path": "./tsconfig.node.json"}]
|
|
29
|
+
}
|