@bscotch/gcdata 0.14.2
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/LICENSE.md +29 -0
- package/README.md +36 -0
- package/dist/GameChanger.d.ts +209 -0
- package/dist/GameChanger.d.ts.map +1 -0
- package/dist/GameChanger.events.d.ts +13 -0
- package/dist/GameChanger.events.d.ts.map +1 -0
- package/dist/GameChanger.events.js +3 -0
- package/dist/GameChanger.events.js.map +1 -0
- package/dist/GameChanger.js +478 -0
- package/dist/GameChanger.js.map +1 -0
- package/dist/SpellChecker.d.ts +31 -0
- package/dist/SpellChecker.d.ts.map +1 -0
- package/dist/SpellChecker.js +92 -0
- package/dist/SpellChecker.js.map +1 -0
- package/dist/assert.d.ts +6 -0
- package/dist/assert.d.ts.map +1 -0
- package/dist/assert.js +22 -0
- package/dist/assert.js.map +1 -0
- package/dist/cl2.loc.d.ts +1 -0
- package/dist/cl2.loc.d.ts.map +1 -0
- package/dist/cl2.loc.js +2 -0
- package/dist/cl2.loc.js.map +1 -0
- package/dist/cl2.quest.d.ts +4 -0
- package/dist/cl2.quest.d.ts.map +1 -0
- package/dist/cl2.quest.js +4 -0
- package/dist/cl2.quest.js.map +1 -0
- package/dist/cl2.quest.parse.d.ts +7 -0
- package/dist/cl2.quest.parse.d.ts.map +1 -0
- package/dist/cl2.quest.parse.js +825 -0
- package/dist/cl2.quest.parse.js.map +1 -0
- package/dist/cl2.quest.pointers.d.ts +3 -0
- package/dist/cl2.quest.pointers.d.ts.map +1 -0
- package/dist/cl2.quest.pointers.js +2 -0
- package/dist/cl2.quest.pointers.js.map +1 -0
- package/dist/cl2.quest.stringify.d.ts +5 -0
- package/dist/cl2.quest.stringify.d.ts.map +1 -0
- package/dist/cl2.quest.stringify.js +148 -0
- package/dist/cl2.quest.stringify.js.map +1 -0
- package/dist/cl2.quest.types.d.ts +168 -0
- package/dist/cl2.quest.types.d.ts.map +1 -0
- package/dist/cl2.quest.types.js +116 -0
- package/dist/cl2.quest.types.js.map +1 -0
- package/dist/cl2.quest.utils.d.ts +16 -0
- package/dist/cl2.quest.utils.d.ts.map +1 -0
- package/dist/cl2.quest.utils.js +105 -0
- package/dist/cl2.quest.utils.js.map +1 -0
- package/dist/cl2.storyline.d.ts +4 -0
- package/dist/cl2.storyline.d.ts.map +1 -0
- package/dist/cl2.storyline.js +4 -0
- package/dist/cl2.storyline.js.map +1 -0
- package/dist/cl2.storyline.parse.d.ts +7 -0
- package/dist/cl2.storyline.parse.d.ts.map +1 -0
- package/dist/cl2.storyline.parse.js +208 -0
- package/dist/cl2.storyline.parse.js.map +1 -0
- package/dist/cl2.storyline.pointers.d.ts +3 -0
- package/dist/cl2.storyline.pointers.d.ts.map +1 -0
- package/dist/cl2.storyline.pointers.js +2 -0
- package/dist/cl2.storyline.pointers.js.map +1 -0
- package/dist/cl2.storyline.stringify.d.ts +4 -0
- package/dist/cl2.storyline.stringify.d.ts.map +1 -0
- package/dist/cl2.storyline.stringify.js +18 -0
- package/dist/cl2.storyline.stringify.js.map +1 -0
- package/dist/cl2.storyline.types.d.ts +24 -0
- package/dist/cl2.storyline.types.d.ts.map +1 -0
- package/dist/cl2.storyline.types.js +87 -0
- package/dist/cl2.storyline.types.js.map +1 -0
- package/dist/cl2.storyline.utils.d.ts +1 -0
- package/dist/cl2.storyline.utils.d.ts.map +1 -0
- package/dist/cl2.storyline.utils.js +2 -0
- package/dist/cl2.storyline.utils.js.map +1 -0
- package/dist/cl2.types.auto.d.ts +22682 -0
- package/dist/cl2.types.auto.d.ts.map +1 -0
- package/dist/cl2.types.auto.js +2 -0
- package/dist/cl2.types.auto.js.map +1 -0
- package/dist/cl2.types.editor.d.ts +31 -0
- package/dist/cl2.types.editor.d.ts.map +1 -0
- package/dist/cl2.types.editor.js +2 -0
- package/dist/cl2.types.editor.js.map +1 -0
- package/dist/dict.d.ts +3 -0
- package/dist/dict.d.ts.map +1 -0
- package/dist/dict.js +49777 -0
- package/dist/dict.js.map +1 -0
- package/dist/helpers.d.ts +44 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +149 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types.cl2.rumpus.d.ts +190 -0
- package/dist/types.cl2.rumpus.d.ts.map +1 -0
- package/dist/types.cl2.rumpus.js +30 -0
- package/dist/types.cl2.rumpus.js.map +1 -0
- package/dist/types.d.ts +586 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.editor.d.ts +25 -0
- package/dist/types.editor.d.ts.map +1 -0
- package/dist/types.editor.js +2 -0
- package/dist/types.editor.js.map +1 -0
- package/dist/types.js +98 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +42 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +272 -0
- package/dist/util.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const questSchemaId = 'cl2_quest';
|
|
3
|
+
export function listQuests(gcData) {
|
|
4
|
+
return gcData.listMotesBySchema(questSchemaId);
|
|
5
|
+
}
|
|
6
|
+
export function isQuestMote(mote) {
|
|
7
|
+
return mote.schema_id === questSchemaId;
|
|
8
|
+
}
|
|
9
|
+
export const sections = ['start moments', 'end moments'];
|
|
10
|
+
const linePartsSchema = z.object({
|
|
11
|
+
indicator: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe('The symbol prefixing the line to indicate what the line type is'),
|
|
15
|
+
arrayTag: z
|
|
16
|
+
.string()
|
|
17
|
+
.regex(/^[a-z0-9]+$/)
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("BsArrayElement identifier (without the '#' prefix)"),
|
|
20
|
+
moteTag: z
|
|
21
|
+
.string()
|
|
22
|
+
.regex(/^[\w_-]+$/)
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("MoteId (without the '@' prefix)"),
|
|
25
|
+
moteName: z.string().optional().describe('Mote Name'),
|
|
26
|
+
emojiGroup: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe('The emoji name, including the outer `()`'),
|
|
30
|
+
emojiName: z.string().optional().describe("The emoji's mote name"),
|
|
31
|
+
labelGroup: z.string().optional().describe('The label, including the `:`'),
|
|
32
|
+
label: z.string().optional().describe('For `Label:Value` elements'),
|
|
33
|
+
sep: z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe('Separator between the line prefix and content.'),
|
|
37
|
+
text: z
|
|
38
|
+
.string()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe('For dialog and similar, the text content'),
|
|
41
|
+
style: z
|
|
42
|
+
.string()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe('For array elements whose values come in distinct flavors, the identifier indicating which flavor it is'),
|
|
45
|
+
status: z
|
|
46
|
+
.string()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe('For entries that have some kind of "status" concept'),
|
|
49
|
+
});
|
|
50
|
+
export const arrayTagPattern = '(?:#(?<arrayTag>[a-z0-9]+))';
|
|
51
|
+
const moteTagPattern = '(?:@(?<moteTag>[a-z0-9_]+))';
|
|
52
|
+
const moteNamePattern = "(?<moteName>[A-Za-z0-9:&?! ',()/-]+)";
|
|
53
|
+
const emojiGroupPattern = '(?<emojiGroup>\\(\\s*(?<emojiName>[^)]*?)\\s*\\))';
|
|
54
|
+
export const linePatterns = [
|
|
55
|
+
/** Label:Text */
|
|
56
|
+
`^(?<labelGroup>(?<label>Name|Log|Draft)\\s*:)\\s*(?<text>.*?)\\s*$`,
|
|
57
|
+
/** Labeled Mote */
|
|
58
|
+
`^(?<labelGroup>(?<label>[\\w ]+)${arrayTagPattern}?\\s*:)\\s*(${moteNamePattern}${moteTagPattern}?)?\\s*$`,
|
|
59
|
+
/** Dialogue Speaker */
|
|
60
|
+
`^(?<indicator>\\t)(${moteNamePattern}${moteTagPattern}?)?\\s*$`,
|
|
61
|
+
/** Dialogue Text */
|
|
62
|
+
`^(?<indicator>>)\\s*?${arrayTagPattern}?(\\s+${emojiGroupPattern}?(\\s*(?<text>.*)))?\\s*$`,
|
|
63
|
+
/** Comment Line */
|
|
64
|
+
`^(?<indicator>//)\\s*?${arrayTagPattern}?\\s*(?<text>.*?)\\s*$`,
|
|
65
|
+
/** Emote Declaration */
|
|
66
|
+
`^(?<indicator>:\\))\\s*${arrayTagPattern}?\\s*$`,
|
|
67
|
+
/** Emote */
|
|
68
|
+
`^(?<indicator>!)\\s*?${arrayTagPattern}?(?<sep>\\s+)(${moteNamePattern}${moteTagPattern}\\s+${emojiGroupPattern})?\\s*$`,
|
|
69
|
+
/** Requirement: Quest */
|
|
70
|
+
// for e.g. `?#qpzc Quest Complete: Square Shaped@q_petget1_rc_c0_n5_2d`
|
|
71
|
+
`^(?<indicator>\\?)\\s*${arrayTagPattern}?\\s+(?<style>Quest)\\s+(?<status>Complete|Started|Not Started)\\s*:(?<sep>\\s+)(${moteNamePattern}${moteTagPattern}?)?$`,
|
|
72
|
+
/** Non-Dialog Moment */
|
|
73
|
+
`^(?<indicator>\\?)\\s*?${arrayTagPattern}?(?<sep>\\s+)(?<style>.*?)?\\s*$`,
|
|
74
|
+
];
|
|
75
|
+
export function parseIfMatch(pattern, line, startPosition) {
|
|
76
|
+
const rawMatch = line.match(new RegExp(pattern));
|
|
77
|
+
if (!rawMatch)
|
|
78
|
+
return null;
|
|
79
|
+
const parsedLine = linePartsSchema.parse(rawMatch.groups);
|
|
80
|
+
const result = {
|
|
81
|
+
_: {
|
|
82
|
+
start: startPosition,
|
|
83
|
+
end: { ...startPosition },
|
|
84
|
+
value: line,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
result._.end.character += line.length;
|
|
88
|
+
result._.end.index += line.length;
|
|
89
|
+
for (const [key, value] of Object.entries(parsedLine)) {
|
|
90
|
+
if (typeof value !== 'undefined') {
|
|
91
|
+
// Figure out where this is in the matches so we
|
|
92
|
+
// can get the start and end positions.
|
|
93
|
+
const startChar = line.indexOf(`${value}`);
|
|
94
|
+
const endChar = startChar + `${value}`.length;
|
|
95
|
+
const start = { ...startPosition };
|
|
96
|
+
start.character += startChar;
|
|
97
|
+
start.index += startChar;
|
|
98
|
+
const end = { ...startPosition };
|
|
99
|
+
end.character += endChar;
|
|
100
|
+
end.index += endChar;
|
|
101
|
+
result[key] = {
|
|
102
|
+
start,
|
|
103
|
+
end,
|
|
104
|
+
value: value,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
export function lineIsArrayItem(line) {
|
|
111
|
+
if (line.match(/^(\t|name|draft|storyline|(start|end) (moments|requirements)|log|giver|receiver)/i)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=cl2.quest.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.quest.types.js","sourceRoot":"","sources":["../src/cl2.quest.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAKzC,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,iBAAiB,CAAY,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAS;IACnC,OAAO,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC;AAC1C,CAAC;AAkID,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,eAAe,EAAE,aAAa,CAAU,CAAC;AAMlE,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iEAAiE,CAClE;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,WAAW,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACrD,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAClE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC1E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACnE,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wGAAwG,CACzG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAC7D,MAAM,cAAc,GAAG,6BAA6B,CAAC;AACrD,MAAM,eAAe,GAAG,sCAAsC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB;IACjB,oEAAoE;IACpE,mBAAmB;IACnB,mCAAmC,eAAe,eAAe,eAAe,GAAG,cAAc,UAAU;IAC3G,uBAAuB;IACvB,sBAAsB,eAAe,GAAG,cAAc,UAAU;IAChE,oBAAoB;IACpB,wBAAwB,eAAe,SAAS,iBAAiB,2BAA2B;IAC5F,mBAAmB;IACnB,yBAAyB,eAAe,wBAAwB;IAChE,wBAAwB;IACxB,0BAA0B,eAAe,QAAQ;IACjD,YAAY;IACZ,wBAAwB,eAAe,iBAAiB,eAAe,GAAG,cAAc,OAAO,iBAAiB,SAAS;IACzH,yBAAyB;IACzB,wEAAwE;IACxE,yBAAyB,eAAe,oFAAoF,eAAe,GAAG,cAAc,MAAM;IAClK,wBAAwB;IACxB,0BAA0B,eAAe,kCAAkC;CAC5E,CAAC;AAEF,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,IAAY,EACZ,aAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAe;QACzB,CAAC,EAAE;YACD,KAAK,EAAE,aAAa;YACpB,GAAG,EAAE,EAAE,GAAG,aAAa,EAAE;YACzB,KAAK,EAAE,IAAI;SACZ;KACF,CAAC;IACF,MAAM,CAAC,CAAE,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;IACvC,MAAM,CAAC,CAAE,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;IACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACrD,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,gDAAgD;YAChD,uCAAuC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,SAAS,GAAG,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC;YAC9C,MAAM,KAAK,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;YACnC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC;YAC7B,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;YACzB,MAAM,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;YACjC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;YACzB,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC;YACrB,MAAM,CAAC,GAAuB,CAAC,GAAG;gBAChC,KAAK;gBACL,GAAG;gBACH,KAAK,EAAE,KAAY;aACb,CAAC;SACV;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IACE,IAAI,CAAC,KAAK,CACR,mFAAmF,CACpF,EACD;QACA,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Gcdata } from './GameChanger.js';
|
|
2
|
+
import { Crashlands2 } from './cl2.types.auto.js';
|
|
3
|
+
export declare function getMoteLists(packed: Gcdata): {
|
|
4
|
+
allowedSpeakers: import("./types.js").Mote<unknown, string>[];
|
|
5
|
+
allowedGivers: import("./types.js").Mote<unknown, string>[];
|
|
6
|
+
storylines: import("./types.js").Mote<Crashlands2.Storyline1, string>[];
|
|
7
|
+
quests: import("./types.js").Mote<Crashlands2.Quest, string>[];
|
|
8
|
+
emojis: import("./types.js").Mote<Crashlands2.Emoji8, string>[];
|
|
9
|
+
};
|
|
10
|
+
export declare function getReuirementQuestStatuses(packed: Gcdata): string[];
|
|
11
|
+
export declare function getRequirementStyleNames(packed: Gcdata): string[];
|
|
12
|
+
export declare function getMomentStyleNames(packed: Gcdata): string[];
|
|
13
|
+
export declare function isEmoteMoment<T extends Crashlands2.QuestMoment>(moment: T): moment is T & {
|
|
14
|
+
style: 'Emote';
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=cl2.quest.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.quest.utils.d.ts","sourceRoot":"","sources":["../src/cl2.quest.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM;;;;;;EA+B1C;AA2BD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBnE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB5D;AAsBD,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,WAAW,EAC7D,MAAM,EAAE,CAAC,GACR,MAAM,IAAI,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAElC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { assert } from './assert.js';
|
|
2
|
+
import { resolvePointerInSchema } from './util.js';
|
|
3
|
+
export function getMoteLists(packed) {
|
|
4
|
+
const allowedSpeakers = getAllowedSpeakers(packed);
|
|
5
|
+
assert(allowedSpeakers.length > 0, 'Should have at least one allowed speaker mote');
|
|
6
|
+
const allowedGivers = getAllowedGivers(packed);
|
|
7
|
+
assert(allowedGivers.length > 0, 'Should have at least one allowed giver mote');
|
|
8
|
+
const storylines = packed.listMotesBySchema('cl2_storyline');
|
|
9
|
+
assert(storylines.length > 0, 'Should have at least one storyline mote');
|
|
10
|
+
const quests = packed.listMotesBySchema('cl2_quest');
|
|
11
|
+
assert(quests.length > 0, 'Should have at least one quest mote');
|
|
12
|
+
const emojis = packed.listMotesBySchema('cl2_emoji');
|
|
13
|
+
assert(emojis.length > 0, 'Should have at least one emoji mote');
|
|
14
|
+
return {
|
|
15
|
+
allowedSpeakers,
|
|
16
|
+
allowedGivers,
|
|
17
|
+
storylines,
|
|
18
|
+
quests,
|
|
19
|
+
emojis,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function getAllowedSpeakers(packed) {
|
|
23
|
+
const speakerSubchema = resolvePointerInSchema(['quest_start_moments', 'anykey', 'element', 'speech', 'speaker'], {
|
|
24
|
+
schema_id: 'cl2_quest',
|
|
25
|
+
data: {
|
|
26
|
+
quest_start_moments: {
|
|
27
|
+
anykey: {
|
|
28
|
+
element: {
|
|
29
|
+
style: 'Dialogue',
|
|
30
|
+
speech: {
|
|
31
|
+
speaker: 'any',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
}, packed);
|
|
38
|
+
return packed.listMotesBySchema(...speakerSubchema.formatProperties.allowSchemas);
|
|
39
|
+
}
|
|
40
|
+
export function getReuirementQuestStatuses(packed) {
|
|
41
|
+
const subschema = resolvePointerInSchema(['quest_start_requirements', 'anykey', 'element', 'quest_status'], {
|
|
42
|
+
schema_id: 'cl2_quest',
|
|
43
|
+
data: {
|
|
44
|
+
quest_start_requirements: {
|
|
45
|
+
anykey: {
|
|
46
|
+
element: {
|
|
47
|
+
style: 'Quest',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
}, packed);
|
|
53
|
+
const statuses = subschema.enum;
|
|
54
|
+
assert(statuses.length, 'Should have required quest statuses');
|
|
55
|
+
return statuses;
|
|
56
|
+
}
|
|
57
|
+
export function getRequirementStyleNames(packed) {
|
|
58
|
+
const subschema = resolvePointerInSchema(['quest_start_requirements', 'anykey'], {
|
|
59
|
+
schema_id: 'cl2_quest',
|
|
60
|
+
data: {
|
|
61
|
+
quest_start_requirements: {
|
|
62
|
+
anykey: {
|
|
63
|
+
element: {},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
}, packed);
|
|
68
|
+
const element = subschema.properties.element;
|
|
69
|
+
const styles = element.oneOf.map((s) => s.properties.style.bConst);
|
|
70
|
+
assert(styles.length, 'Should have moment styles');
|
|
71
|
+
return styles;
|
|
72
|
+
}
|
|
73
|
+
export function getMomentStyleNames(packed) {
|
|
74
|
+
const subschema = resolvePointerInSchema(['quest_start_moments', 'anykey'], {
|
|
75
|
+
schema_id: 'cl2_quest',
|
|
76
|
+
data: {
|
|
77
|
+
quest_start_moments: {
|
|
78
|
+
anykey: {
|
|
79
|
+
element: {},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
}, packed);
|
|
84
|
+
const element = subschema.properties.element;
|
|
85
|
+
const styles = element.oneOf.map((s) => s.properties.style.bConst);
|
|
86
|
+
assert(styles.length, 'Should have moment styles');
|
|
87
|
+
return styles;
|
|
88
|
+
}
|
|
89
|
+
function getAllowedGivers(packed) {
|
|
90
|
+
const giverSubchema = resolvePointerInSchema('quest_giver/item', {
|
|
91
|
+
schema_id: 'cl2_quest',
|
|
92
|
+
data: {
|
|
93
|
+
quest_giver: {
|
|
94
|
+
item: {
|
|
95
|
+
item: 'any',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
}, packed);
|
|
100
|
+
return packed.listMotesBySchema(...giverSubchema.formatProperties.allowSchemas);
|
|
101
|
+
}
|
|
102
|
+
export function isEmoteMoment(moment) {
|
|
103
|
+
return moment.style === 'Emote';
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=cl2.quest.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.quest.utils.js","sourceRoot":"","sources":["../src/cl2.quest.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { parseStringifiedStoryline, updateChangesFromParsedStoryline, } from './cl2.storyline.parse.js';
|
|
2
|
+
export { stringifyStoryline } from './cl2.storyline.stringify.js';
|
|
3
|
+
export { isStorylineMote, listStorylines, storylineSchemaId, type StorylineData, type StorylineMote, type StorylineUpdateResult, } from './cl2.storyline.types.js';
|
|
4
|
+
//# sourceMappingURL=cl2.storyline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.d.ts","sourceRoot":"","sources":["../src/cl2.storyline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { parseStringifiedStoryline, updateChangesFromParsedStoryline, } from './cl2.storyline.parse.js';
|
|
2
|
+
export { stringifyStoryline } from './cl2.storyline.stringify.js';
|
|
3
|
+
export { isStorylineMote, listStorylines, storylineSchemaId, } from './cl2.storyline.types.js';
|
|
4
|
+
//# sourceMappingURL=cl2.storyline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.js","sourceRoot":"","sources":["../src/cl2.storyline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,GAIlB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GameChanger } from './GameChanger.js';
|
|
2
|
+
import { type StorylineUpdateResult } from './cl2.storyline.types.js';
|
|
3
|
+
export declare function parseStringifiedStoryline(text: string, packed: GameChanger, options?: {
|
|
4
|
+
checkSpelling?: boolean;
|
|
5
|
+
}): StorylineUpdateResult;
|
|
6
|
+
export declare function updateChangesFromParsedStoryline(parsed: StorylineUpdateResult['parsed'], moteId: string, packed: GameChanger): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=cl2.storyline.parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.parse.d.ts","sourceRoot":"","sources":["../src/cl2.storyline.parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAQL,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,qBAAqB,CA8IvB;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAqEf"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { assert } from './assert.js';
|
|
2
|
+
import { arrayTagPattern, getStorylineMote, getStorylineSchema, lineIsArrayItem, linePatterns, parseIfMatch, storylineSchemaId, } from './cl2.storyline.types.js';
|
|
3
|
+
import { bsArrayToArray, createBsArrayKey, updateBsArrayOrder, } from './helpers.js';
|
|
4
|
+
import { parsedItemToWords } from './util.js';
|
|
5
|
+
export function parseStringifiedStoryline(text, packed, options = {}) {
|
|
6
|
+
const result = {
|
|
7
|
+
diagnostics: [],
|
|
8
|
+
hovers: [],
|
|
9
|
+
edits: [],
|
|
10
|
+
completions: [],
|
|
11
|
+
words: [],
|
|
12
|
+
parsed: {
|
|
13
|
+
comments: [],
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const checkSpelling = (item) => {
|
|
17
|
+
if (!item || !options.checkSpelling)
|
|
18
|
+
return;
|
|
19
|
+
// Parse out the word positions so they can be used as ranges to check cursor position
|
|
20
|
+
const words = parsedItemToWords(item);
|
|
21
|
+
for (const word of words) {
|
|
22
|
+
result.words.push(packed.spellChecker.checkWord(word));
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const lines = text.split(/(\r?\n)/g);
|
|
26
|
+
let index = 0;
|
|
27
|
+
let lineNumber = 0;
|
|
28
|
+
for (const line of lines) {
|
|
29
|
+
const trace = [];
|
|
30
|
+
try {
|
|
31
|
+
// Is this just a newline?
|
|
32
|
+
if (line.match(/\r?\n/)) {
|
|
33
|
+
// Then we just need to increment the index
|
|
34
|
+
index += line.length;
|
|
35
|
+
lineNumber++;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
// Is this just a blank line?
|
|
39
|
+
if (!line) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const lineRange = {
|
|
43
|
+
start: {
|
|
44
|
+
index,
|
|
45
|
+
line: lineNumber,
|
|
46
|
+
character: 0,
|
|
47
|
+
},
|
|
48
|
+
end: {
|
|
49
|
+
index: index + line.length,
|
|
50
|
+
line: lineNumber,
|
|
51
|
+
character: line.length,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
// Find the first matching pattern and pull the values from it.
|
|
55
|
+
let parsedLine = null;
|
|
56
|
+
for (const pattern of linePatterns) {
|
|
57
|
+
parsedLine = parseIfMatch(pattern, line, lineRange.start);
|
|
58
|
+
if (parsedLine)
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
if (!parsedLine) {
|
|
62
|
+
// Then this is likely the result of uncommenting something
|
|
63
|
+
// that was commented out, resulting in a line that starts with
|
|
64
|
+
// the comment's array tag. Provide a deletion edit!
|
|
65
|
+
parsedLine = parseIfMatch(`^${arrayTagPattern} +(?<text>.*)$`, line, lineRange.start);
|
|
66
|
+
if (parsedLine) {
|
|
67
|
+
result.edits.push({
|
|
68
|
+
start: lineRange.start,
|
|
69
|
+
end: lineRange.end,
|
|
70
|
+
newText: parsedLine.text.value,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
result.diagnostics.push({
|
|
75
|
+
message: `Unfamiliar syntax: ${line}`,
|
|
76
|
+
...lineRange,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
index += line.length;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Ensure the array tag. It goes right after the label or indicator.
|
|
83
|
+
if (!parsedLine.arrayTag?.value && lineIsArrayItem(line)) {
|
|
84
|
+
const arrayTag = createBsArrayKey();
|
|
85
|
+
const start = parsedLine.indicator?.end || parsedLine.label?.end;
|
|
86
|
+
result.edits.push({
|
|
87
|
+
start,
|
|
88
|
+
end: start,
|
|
89
|
+
newText: `#${arrayTag}`,
|
|
90
|
+
});
|
|
91
|
+
parsedLine.arrayTag = {
|
|
92
|
+
start,
|
|
93
|
+
end: start,
|
|
94
|
+
value: arrayTag,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Work through each line type to add diagnostics and completions
|
|
98
|
+
const labelLower = parsedLine.label?.value?.toLowerCase();
|
|
99
|
+
const indicator = parsedLine.indicator?.value;
|
|
100
|
+
if (indicator === '//') {
|
|
101
|
+
// Then this is a comment/note
|
|
102
|
+
result.parsed.comments.push({
|
|
103
|
+
id: parsedLine.arrayTag?.value?.trim(),
|
|
104
|
+
text: parsedLine.text?.value?.trim(),
|
|
105
|
+
});
|
|
106
|
+
checkSpelling(parsedLine.text);
|
|
107
|
+
}
|
|
108
|
+
else if (labelLower === 'name') {
|
|
109
|
+
result.parsed.name = parsedLine.text?.value?.trim();
|
|
110
|
+
if (!result.parsed.name) {
|
|
111
|
+
result.diagnostics.push({
|
|
112
|
+
message: `Quest name required!`,
|
|
113
|
+
...lineRange,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (labelLower === 'description') {
|
|
118
|
+
result.parsed.description = parsedLine.text?.value?.trim();
|
|
119
|
+
checkSpelling(parsedLine.text);
|
|
120
|
+
}
|
|
121
|
+
else if (labelLower === 'draft') {
|
|
122
|
+
result.parsed.draft = parsedLine.text?.value?.trim() === 'true';
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Then we're in an error state on this line!
|
|
126
|
+
result.diagnostics.push({
|
|
127
|
+
message: `Unfamiliar syntax: ${line}`,
|
|
128
|
+
...lineRange,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
if (err instanceof Error) {
|
|
134
|
+
err.cause = trace;
|
|
135
|
+
}
|
|
136
|
+
throw err;
|
|
137
|
+
}
|
|
138
|
+
index += line.length;
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
export async function updateChangesFromParsedStoryline(parsed, moteId, packed) {
|
|
143
|
+
const _traceLogs = [];
|
|
144
|
+
const trace = (log) => _traceLogs.push(log);
|
|
145
|
+
trace(`Updating mote ${moteId}`);
|
|
146
|
+
try {
|
|
147
|
+
// We're always going to be computing ALL changes, so clear whatever
|
|
148
|
+
// we previously had.
|
|
149
|
+
packed.clearMoteChanges(moteId);
|
|
150
|
+
const storylineMoteBase = getStorylineMote(packed.base, moteId);
|
|
151
|
+
const storylineMoteWorking = getStorylineMote(packed.working, moteId);
|
|
152
|
+
const schema = getStorylineSchema(packed.working);
|
|
153
|
+
assert(schema, `${storylineSchemaId} schema not found in working copy`);
|
|
154
|
+
assert(schema.name, 'Quest mote must have a name pointer');
|
|
155
|
+
const updateMote = (path, value) => {
|
|
156
|
+
packed.updateMoteData(moteId, path, value);
|
|
157
|
+
};
|
|
158
|
+
updateMote('data/name/text', parsed.name);
|
|
159
|
+
updateMote('data/description/text', parsed.description);
|
|
160
|
+
updateMote('data/wip/draft', parsed.draft);
|
|
161
|
+
const parsedComments = parsed.comments.filter((c) => !!c.text);
|
|
162
|
+
//#region COMMENTS
|
|
163
|
+
// Add/Update COMMENTS
|
|
164
|
+
trace(`Updating comments`);
|
|
165
|
+
for (const comment of parsedComments) {
|
|
166
|
+
trace(`Updating comment ${comment.id} with text "${comment.text}"`);
|
|
167
|
+
updateMote(`data/wip/comments/${comment.id}/element`, comment.text);
|
|
168
|
+
}
|
|
169
|
+
// Remove deleted comments
|
|
170
|
+
for (const existingComment of bsArrayToArray(storylineMoteBase?.data.wip?.comments || {})) {
|
|
171
|
+
if (!parsedComments.find((c) => c.id === existingComment.id)) {
|
|
172
|
+
trace(`Deleting comment ${existingComment.id}`);
|
|
173
|
+
updateMote(`data/wip/comments/${existingComment.id}`, null);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Get the BASE order of the comments (if any) and use those
|
|
177
|
+
// as the starting point for an up to date order.
|
|
178
|
+
const comments = parsedComments.map((c) => {
|
|
179
|
+
// Look up the base comment
|
|
180
|
+
let comment = storylineMoteBase?.data.wip?.comments?.[c.id];
|
|
181
|
+
if (!comment) {
|
|
182
|
+
comment = storylineMoteWorking?.data.wip?.comments?.[c.id];
|
|
183
|
+
// @ts-expect-error - order is a required field, but it'll be re-added
|
|
184
|
+
delete comment?.order;
|
|
185
|
+
}
|
|
186
|
+
assert(comment, `Comment ${c.id} not found in base or working mote`);
|
|
187
|
+
return { ...comment, id: c.id };
|
|
188
|
+
});
|
|
189
|
+
trace('Updating comment order');
|
|
190
|
+
updateBsArrayOrder(comments);
|
|
191
|
+
comments.forEach((comment) => {
|
|
192
|
+
trace(`Updating comment ${comment.id} order to ${comment.order}`);
|
|
193
|
+
updateMote(`data/wip/comments/${comment.id}/order`, comment.order);
|
|
194
|
+
});
|
|
195
|
+
//#endregion
|
|
196
|
+
trace(`Writing changes`);
|
|
197
|
+
await packed.writeChanges();
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
console.error(err);
|
|
201
|
+
console.error(_traceLogs);
|
|
202
|
+
if (err instanceof Error) {
|
|
203
|
+
err.cause = _traceLogs;
|
|
204
|
+
}
|
|
205
|
+
throw err;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=cl2.storyline.parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.parse.js","sourceRoot":"","sources":["../src/cl2.storyline.parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type StorylineMoteDataPointer = `data/${StorylineMotePointer}`;
|
|
2
|
+
export type StorylineMotePointer = `` | `description/description` | `description/text` | `description` | `icon` | `name/description` | `name/text` | `name` | `order` | `wip/audio` | `wip/balance` | `wip/comments/${string}/element` | `wip/comments/${string}/order` | `wip/comments/${string}` | `wip/comments` | `wip/draft` | `wip/integration` | `wip/mechanics` | `wip/text` | `wip/visuals` | `wip`;
|
|
3
|
+
//# sourceMappingURL=cl2.storyline.pointers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.pointers.d.ts","sourceRoot":"","sources":["../src/cl2.storyline.pointers.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG,QAAQ,oBAAoB,EAAE,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,EAAE,GACjC,yBAAyB,GACzB,kBAAkB,GAClB,aAAa,GACb,MAAM,GACN,kBAAkB,GAClB,WAAW,GACX,MAAM,GACN,OAAO,GACP,WAAW,GACX,aAAa,GACb,gBAAgB,MAAM,UAAU,GAChC,gBAAgB,MAAM,QAAQ,GAC9B,gBAAgB,MAAM,EAAE,GACxB,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,eAAe,GACf,UAAU,GACV,aAAa,GACb,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.pointers.js","sourceRoot":"","sources":["../src/cl2.storyline.pointers.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.stringify.d.ts","sourceRoot":"","sources":["../src/cl2.storyline.stringify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,WAAW,GAClB,MAAM,CAsBR"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { bsArrayToArray, toArrayTag } from './helpers.js';
|
|
2
|
+
export function stringifyStoryline(mote, packed) {
|
|
3
|
+
// METADATA
|
|
4
|
+
const blocks = [
|
|
5
|
+
`Name: ${packed.working.getMoteName(mote)}`,
|
|
6
|
+
`Description: ${mote.data.description?.text || ''}\n`,
|
|
7
|
+
`Draft: ${mote.data.wip?.draft ? 'true' : 'false'}\n`,
|
|
8
|
+
];
|
|
9
|
+
// NOTES
|
|
10
|
+
if (mote.data.wip?.comments) {
|
|
11
|
+
const comments = bsArrayToArray(mote.data.wip.comments);
|
|
12
|
+
if (comments.length) {
|
|
13
|
+
blocks.push(...bsArrayToArray(mote.data.wip.comments).map((c) => `//${toArrayTag(c.id)} ${c.element}`), '');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return blocks.join('\n');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=cl2.storyline.stringify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.stringify.js","sourceRoot":"","sources":["../src/cl2.storyline.stringify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAChC,IAAmB,EACnB,MAAmB;IAEnB,WAAW;IACX,MAAM,MAAM,GAAa;QACvB,SAAS,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC3C,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,IAAI;QACrD,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI;KACtD,CAAC;IAEF,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;QAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,CAAC,IAAI,CACT,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAC5C,EACD,EAAE,CACH,CAAC;SACH;KACF;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Gcdata } from './GameChanger.js';
|
|
2
|
+
import type { ParsedLine } from './cl2.quest.types.js';
|
|
3
|
+
import type { Crashlands2 } from './cl2.types.auto.js';
|
|
4
|
+
import type { ParsedBase, ParserResult } from './cl2.types.editor.js';
|
|
5
|
+
import type { Position } from './types.editor.js';
|
|
6
|
+
import type { BschemaRoot, Mote } from './types.js';
|
|
7
|
+
export declare const storylineSchemaId = "cl2_storyline";
|
|
8
|
+
export type StorylineData = Crashlands2.Schemas['cl2_storyline'];
|
|
9
|
+
export type StorylineMote = Mote<StorylineData>;
|
|
10
|
+
export interface StorylineUpdateResult extends ParserResult {
|
|
11
|
+
parsed: ParsedBase & {
|
|
12
|
+
description?: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function listStorylines(gcData: Gcdata): StorylineMote[];
|
|
16
|
+
export declare function isStorylineMote(mote: any): mote is StorylineMote;
|
|
17
|
+
export declare function getStorylineMote(gcData: Gcdata, moteId: string): StorylineMote | undefined;
|
|
18
|
+
export declare function getStorylineMotes(gcData: Gcdata): StorylineMote[];
|
|
19
|
+
export declare function getStorylineSchema(gcData: Gcdata): BschemaRoot | undefined;
|
|
20
|
+
export declare const arrayTagPattern = "(?:#(?<arrayTag>[a-z0-9]+))";
|
|
21
|
+
export declare const linePatterns: string[];
|
|
22
|
+
export declare function parseIfMatch(pattern: string, line: string, startPosition: Position): ParsedLine | null;
|
|
23
|
+
export declare function lineIsArrayItem(line: string): boolean;
|
|
24
|
+
//# sourceMappingURL=cl2.storyline.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.storyline.types.d.ts","sourceRoot":"","sources":["../src/cl2.storyline.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAEhD,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,MAAM,EAAE,UAAU,GAAG;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAE9D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,aAAa,CAEhE;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,aAAa,GAAG,SAAS,CAI3B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE1E;AAyBD,eAAO,MAAM,eAAe,gCAAgC,CAAC;AAE7D,eAAO,MAAM,YAAY,UAKxB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,QAAQ,GACtB,UAAU,GAAG,IAAI,CAmCnB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
|