@bscotch/gcdata 0.22.0 → 0.23.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 (50) hide show
  1. package/dist/GameChanger.d.ts +7 -1
  2. package/dist/GameChanger.d.ts.map +1 -1
  3. package/dist/GameChanger.js +63 -3
  4. package/dist/GameChanger.js.map +1 -1
  5. package/dist/cl2.character.parse.d.ts.map +1 -1
  6. package/dist/cl2.character.parse.js +30 -3
  7. package/dist/cl2.character.parse.js.map +1 -1
  8. package/dist/cl2.character.types.js +2 -2
  9. package/dist/cl2.character.types.js.map +1 -1
  10. package/dist/cl2.chat.d.ts +7 -0
  11. package/dist/cl2.chat.d.ts.map +1 -0
  12. package/dist/cl2.chat.js +20 -0
  13. package/dist/cl2.chat.js.map +1 -0
  14. package/dist/cl2.chat.parse.d.ts +7 -0
  15. package/dist/cl2.chat.parse.d.ts.map +1 -0
  16. package/dist/cl2.chat.parse.js +314 -0
  17. package/dist/cl2.chat.parse.js.map +1 -0
  18. package/dist/cl2.chat.stringify.d.ts +4 -0
  19. package/dist/cl2.chat.stringify.d.ts.map +1 -0
  20. package/dist/cl2.chat.stringify.js +49 -0
  21. package/dist/cl2.chat.stringify.js.map +1 -0
  22. package/dist/cl2.chat.types.d.ts +22 -0
  23. package/dist/cl2.chat.types.d.ts.map +1 -0
  24. package/dist/cl2.chat.types.js +19 -0
  25. package/dist/cl2.chat.types.js.map +1 -0
  26. package/dist/cl2.chats.d.ts +1 -0
  27. package/dist/cl2.chats.d.ts.map +1 -0
  28. package/dist/cl2.chats.js +2 -0
  29. package/dist/cl2.chats.js.map +1 -0
  30. package/dist/cl2.comfort.parse.d.ts.map +1 -1
  31. package/dist/cl2.comfort.parse.js +7 -1
  32. package/dist/cl2.comfort.parse.js.map +1 -1
  33. package/dist/cl2.quest.parse.d.ts.map +1 -1
  34. package/dist/cl2.quest.parse.js +16 -5
  35. package/dist/cl2.quest.parse.js.map +1 -1
  36. package/dist/cl2.shared.parse.d.ts.map +1 -1
  37. package/dist/cl2.shared.parse.js +7 -7
  38. package/dist/cl2.shared.parse.js.map +1 -1
  39. package/dist/cl2.shared.types.d.ts +12 -0
  40. package/dist/cl2.shared.types.d.ts.map +1 -1
  41. package/dist/cl2.shared.types.js +15 -0
  42. package/dist/cl2.shared.types.js.map +1 -1
  43. package/dist/cl2.storyline.parse.d.ts.map +1 -1
  44. package/dist/cl2.storyline.parse.js +6 -1
  45. package/dist/cl2.storyline.parse.js.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/index.js.map +1 -1
  50. package/package.json +1 -1
@@ -0,0 +1,314 @@
1
+ import { assert } from './assert.js';
2
+ import { linePatterns, } from './cl2.chat.types.js';
3
+ import { isCommentLine, isStageLine, prepareParserHelpers, updateWipChangesFromParsed, } from './cl2.shared.parse.js';
4
+ import { chatSchemaId, listAllCharacters, } from './cl2.shared.types.js';
5
+ import { bsArrayToArray, changedPosition, createBsArrayKey, updateBsArrayOrder, } from './helpers.js';
6
+ export function parseStringifiedChat(text, packed, options = {}) {
7
+ const result = {
8
+ diagnostics: [],
9
+ hovers: [],
10
+ edits: [],
11
+ completions: [],
12
+ words: [],
13
+ parsed: {
14
+ comments: [],
15
+ moments: [],
16
+ },
17
+ };
18
+ const characters = listAllCharacters(packed.working);
19
+ const helpers = prepareParserHelpers(text, packed, {
20
+ ...options,
21
+ schemaId: chatSchemaId,
22
+ globalLabels: new Set(['Stage', 'Name', 'Moments']),
23
+ }, result);
24
+ let isInMoments = false;
25
+ let currentMoment;
26
+ let currentPhrase;
27
+ for (const line of helpers.lines) {
28
+ const trace = [];
29
+ try {
30
+ const lineRange = helpers.currentLineRange;
31
+ // Is this just a blank line?
32
+ if (!line) {
33
+ // If we have a blank line then we're no longer in the same moment
34
+ currentMoment = undefined;
35
+ continue;
36
+ }
37
+ const parsedLine = helpers.parseCurrentLine(linePatterns);
38
+ if (!parsedLine)
39
+ continue;
40
+ let requiresEmoji;
41
+ // Work through each line type to add diagnostics and completions
42
+ const labelLower = parsedLine.label?.value?.toLowerCase();
43
+ const indicator = parsedLine.indicator?.value;
44
+ if (isCommentLine(parsedLine)) {
45
+ helpers.addComment(parsedLine);
46
+ }
47
+ else if (labelLower === 'name') {
48
+ result.parsed.name = parsedLine.text?.value?.trim();
49
+ if (!result.parsed.name) {
50
+ result.diagnostics.push({
51
+ message: `Chat name required!`,
52
+ ...lineRange,
53
+ });
54
+ }
55
+ }
56
+ else if (isStageLine(parsedLine)) {
57
+ helpers.addStage(parsedLine);
58
+ }
59
+ else if (labelLower === 'moments') {
60
+ if (isInMoments) {
61
+ result.diagnostics.push({
62
+ message: `Moments section already started!`,
63
+ ...lineRange,
64
+ });
65
+ }
66
+ isInMoments = true;
67
+ }
68
+ else if (indicator === '\t') {
69
+ if (!isInMoments) {
70
+ result.diagnostics.push({
71
+ message: `Not inside the Moments section!`,
72
+ ...lineRange,
73
+ });
74
+ }
75
+ else {
76
+ // Then we're in a moments header, e.g. "#rt10#kqbq RONXX@brubus_northwatch3"
77
+ // Need to auto-insert array tags if missing
78
+ let momentId = parsedLine.arrayTag?.value ||
79
+ currentMoment?.id ||
80
+ createBsArrayKey();
81
+ if (!currentMoment || currentMoment.id !== momentId) {
82
+ currentMoment = {
83
+ id: momentId,
84
+ phrases: [],
85
+ };
86
+ result.parsed.moments.push(currentMoment);
87
+ }
88
+ let phraseId = parsedLine.arrayTag2?.value || createBsArrayKey();
89
+ currentPhrase = {
90
+ id: phraseId,
91
+ speaker: parsedLine.moteTag?.value,
92
+ // text and emoji are added later!
93
+ };
94
+ currentMoment.phrases.push(currentPhrase);
95
+ let insertedTags = '';
96
+ if (!parsedLine.arrayTag?.value) {
97
+ insertedTags += `#${momentId}`;
98
+ }
99
+ if (!parsedLine.arrayTag2?.value) {
100
+ insertedTags += `#${phraseId} `;
101
+ }
102
+ if (insertedTags) {
103
+ result.edits.push({
104
+ newText: insertedTags,
105
+ start: parsedLine.indicator.end,
106
+ end: parsedLine.indicator.end,
107
+ });
108
+ }
109
+ // Handle mote autocompltes
110
+ if (!insertedTags &&
111
+ parsedLine.sep &&
112
+ (!parsedLine.moteName || !parsedLine.moteTag)) {
113
+ const where = {
114
+ start: parsedLine.sep.end,
115
+ end: parsedLine.emojiGroup?.start || lineRange.end,
116
+ };
117
+ result.completions.push({
118
+ type: 'motes',
119
+ options: characters,
120
+ ...where,
121
+ });
122
+ if (!parsedLine.moteTag) {
123
+ result.diagnostics.push({
124
+ message: `Mote required!`,
125
+ ...where,
126
+ });
127
+ }
128
+ else if (!packed.working.getMote(parsedLine.moteTag.value)) {
129
+ result.diagnostics.push({
130
+ message: `Mote not found!`,
131
+ ...where,
132
+ });
133
+ }
134
+ }
135
+ }
136
+ }
137
+ else if (indicator === '>') {
138
+ // Then we've got a line of dialogue! Unlike quests/idles, there is no array tag to deal with.
139
+ if (!isInMoments) {
140
+ result.diagnostics.push({
141
+ message: `Not inside the Moments section!`,
142
+ ...lineRange,
143
+ });
144
+ }
145
+ else if (!currentPhrase) {
146
+ result.diagnostics.push({
147
+ message: `Dialogue requires a speaker header!`,
148
+ ...lineRange,
149
+ });
150
+ }
151
+ else if ('text' in currentPhrase) {
152
+ result.diagnostics.push({
153
+ message: `Phrase already has text!`,
154
+ ...lineRange,
155
+ });
156
+ }
157
+ else {
158
+ const emoji = helpers.emojiIdFromName(parsedLine.emojiName?.value);
159
+ currentPhrase.text = parsedLine.text?.value;
160
+ currentPhrase.emoji = emoji;
161
+ if (parsedLine.emojiGroup) {
162
+ // Emojis are optional. If we see a "group" (parentheses) then
163
+ // that changes to a requirement.
164
+ requiresEmoji = {
165
+ at: changedPosition(parsedLine.emojiGroup.start, {
166
+ characters: 1,
167
+ }),
168
+ options: helpers.emojis,
169
+ };
170
+ }
171
+ helpers.checkSpelling(parsedLine.text);
172
+ }
173
+ }
174
+ // fallthrough (error) case
175
+ else {
176
+ // Then we're in an error state on this line!
177
+ result.diagnostics.push({
178
+ message: `Unfamiliar syntax: ${line}`,
179
+ ...lineRange,
180
+ });
181
+ }
182
+ if (requiresEmoji) {
183
+ const where = {
184
+ start: requiresEmoji.at,
185
+ end: parsedLine.emojiGroup.end,
186
+ };
187
+ if (!parsedLine.emojiName?.value) {
188
+ result.completions.push({
189
+ type: 'motes',
190
+ options: requiresEmoji.options,
191
+ ...where,
192
+ });
193
+ }
194
+ else if (!helpers.emojiIdFromName(parsedLine.emojiName?.value)) {
195
+ result.diagnostics.push({
196
+ message: `Emoji "${parsedLine.emojiName?.value}" not found!`,
197
+ ...where,
198
+ });
199
+ }
200
+ }
201
+ }
202
+ catch (err) {
203
+ if (err instanceof Error) {
204
+ err.cause = trace;
205
+ }
206
+ throw err;
207
+ }
208
+ helpers.index += line.length;
209
+ }
210
+ return result;
211
+ }
212
+ export async function updateChangesFromParsedChat(parsed, moteId, packed) {
213
+ const _traceLogs = [];
214
+ const trace = (log) => _traceLogs.push(log);
215
+ trace(`Updating mote ${moteId}`);
216
+ try {
217
+ // We're always going to be computing ALL changes, so clear whatever
218
+ // we previously had.
219
+ packed.clearMoteChanges(moteId, [
220
+ 'data/wip/staging',
221
+ 'data/wip/notes/*',
222
+ 'data/name',
223
+ 'data/moments/*',
224
+ ]);
225
+ const moteWorking = packed.working.getMote(moteId);
226
+ const moteBase = packed.base.getMote(moteId);
227
+ assert(moteWorking, `Mote ${moteId} not found in working copy`);
228
+ const schema = packed.working.getSchema(moteWorking.schema_id);
229
+ assert(schema, `${moteWorking.schema_id} schema not found in working copy`);
230
+ assert(schema.name, 'Chat mote must have a name pointer');
231
+ const updateMote = (path, value) => {
232
+ packed.updateMoteData(moteId, path, value);
233
+ };
234
+ updateMote('data/name', parsed.name);
235
+ updateWipChangesFromParsed(parsed, moteId, packed, trace);
236
+ // Add/Update IDLES
237
+ trace(`Updating idles`);
238
+ const parsedMomentIds = new Map();
239
+ for (const moment of parsed.moments) {
240
+ assert(moment.id, `Moment ID required`);
241
+ parsedMomentIds.set(moment.id, parsedMomentIds.get(moment.id) || new Set());
242
+ for (const phrase of moment.phrases) {
243
+ assert(phrase.id, `Phrase ID required`);
244
+ parsedMomentIds.get(moment.id).add(phrase.id);
245
+ // update emoji, speaker, and text
246
+ updateMote(`data/moments/${moment.id}/element/${phrase.id}/element/emoji`, phrase.emoji);
247
+ updateMote(`data/moments/${moment.id}/element/${phrase.id}/element/speaker`, phrase.speaker);
248
+ updateMote(`data/moments/${moment.id}/element/${phrase.id}/element/text/text`, phrase.text);
249
+ }
250
+ }
251
+ // Delete any moments/phrases that are no longer in the parsed data
252
+ for (const existingMoment of bsArrayToArray(moteBase?.data.moments || {})) {
253
+ const isInParsed = parsedMomentIds.has(existingMoment.id);
254
+ if (!isInParsed) {
255
+ packed.updateMoteData(moteId, `data/moments/${existingMoment.id}`, null);
256
+ continue;
257
+ }
258
+ else {
259
+ const parsedPhraseIds = parsedMomentIds.get(existingMoment.id);
260
+ for (const existingPhrase of bsArrayToArray(existingMoment.element)) {
261
+ if (!parsedPhraseIds.has(existingPhrase.id)) {
262
+ packed.updateMoteData(moteId, `data/moments/${existingMoment.id}/element/${existingPhrase.id}`, null);
263
+ }
264
+ }
265
+ }
266
+ }
267
+ // Update moment and phrase order
268
+ trace(`Updating moment order`);
269
+ const orderedMoments = parsed.moments.map((m) => {
270
+ assert(m.id, `Moment ID required`);
271
+ let moment = moteBase?.data.moments?.[m.id];
272
+ if (!moment) {
273
+ moment = moteWorking.data.moments?.[m.id];
274
+ assert(moment, `Moment ${m.id} not found in base or working mote`);
275
+ // @ts-expect-error - order is a required field, but it'll be re-added
276
+ delete moment.order;
277
+ }
278
+ const orderedPhrases = m.phrases.map((p) => {
279
+ assert(p.id, `Phrase ID required`);
280
+ let phrase = moment?.element?.[p.id];
281
+ if (!phrase) {
282
+ phrase = moteWorking.data.moments?.[m.id]?.element?.[p.id];
283
+ assert(phrase, `Phrase ${p.id} not found in moment ${m.id}`);
284
+ // @ts-expect-error - order is a required field, but it'll be re-added
285
+ delete phrase.order;
286
+ }
287
+ return { ...phrase, id: p.id };
288
+ });
289
+ updateBsArrayOrder(orderedPhrases);
290
+ return { ...moment, phrases: orderedPhrases, id: m.id };
291
+ });
292
+ updateBsArrayOrder(orderedMoments);
293
+ // Turn those updates into actual changes
294
+ for (const moment of orderedMoments) {
295
+ trace(`Updating moment ${moment.id} order to ${moment.order}`);
296
+ updateMote(`data/moments/${moment.id}/order`, moment.order);
297
+ for (const phrase of moment.phrases) {
298
+ trace(`Updating phrase ${phrase.id} order to ${phrase.order}`);
299
+ updateMote(`data/moments/${moment.id}/element/${phrase.id}/order`, phrase.order);
300
+ }
301
+ }
302
+ trace(`Writing changes`);
303
+ await packed.writeChanges();
304
+ }
305
+ catch (err) {
306
+ console.error(err);
307
+ console.error(_traceLogs);
308
+ if (err instanceof Error) {
309
+ err.cause = _traceLogs;
310
+ }
311
+ throw err;
312
+ }
313
+ }
314
+ //# sourceMappingURL=cl2.chat.parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chat.parse.js","sourceRoot":"","sources":["../src/cl2.chat.parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GameChanger } from './GameChanger.js';
2
+ import type { ChatMote } from './cl2.shared.types.js';
3
+ export declare function stringifyChat(mote: ChatMote, packed: GameChanger): string;
4
+ //# sourceMappingURL=cl2.chat.stringify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chat.stringify.d.ts","sourceRoot":"","sources":["../src/cl2.chat.stringify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAqDzE"}
@@ -0,0 +1,49 @@
1
+ import { characterString, emojiString } from './cl2.shared.stringify.js';
2
+ import { bsArrayToArray, toArrayTag } from './helpers.js';
3
+ export function stringifyChat(mote, packed) {
4
+ // METADATA
5
+ const blocks = [`Name: ${packed.working.getMoteName(mote)}`];
6
+ if (mote.data.wip?.staging) {
7
+ blocks.push(`Stage: ${mote.data.wip.staging}\n`);
8
+ }
9
+ else {
10
+ blocks.push('');
11
+ }
12
+ // NOTES
13
+ if (mote.data.wip?.notes) {
14
+ const comments = bsArrayToArray(mote.data.wip.notes);
15
+ if (comments.length) {
16
+ blocks.push(...bsArrayToArray(mote.data.wip.notes).map((c) => `//${toArrayTag(c.id)} ${c.element.text}`), '');
17
+ }
18
+ }
19
+ // Moments
20
+ blocks.push('Moments:');
21
+ for (const moment of bsArrayToArray(mote.data.moments)) {
22
+ // Format is \t#momentId#phraseId Speaker@moteId
23
+ // > phrase text
24
+ // With a blank line between moments (but no blank line between phrases
25
+ // in the same moment).
26
+ blocks.push('');
27
+ const phrases = bsArrayToArray(moment.element);
28
+ if (!phrases.length) {
29
+ // Then we still need to write the momentId so it doesn't get lost!
30
+ blocks.push(`\t${toArrayTag(moment)}`);
31
+ }
32
+ for (const phrase of phrases) {
33
+ const character = phrase.element.speaker
34
+ ? characterString(phrase.element.speaker, packed)
35
+ : '';
36
+ const emoji = emojiString(phrase.element.emoji, packed);
37
+ let asText = `\t${toArrayTag(moment)}${toArrayTag(phrase)} ${character}\n> `;
38
+ if (emoji) {
39
+ asText += `${emoji} `;
40
+ }
41
+ if (phrase.element.text?.text) {
42
+ asText += phrase.element.text.text;
43
+ }
44
+ blocks.push(asText);
45
+ }
46
+ }
47
+ return blocks.join('\n') + '\n';
48
+ }
49
+ //# sourceMappingURL=cl2.chat.stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chat.stringify.js","sourceRoot":"","sources":["../src/cl2.chat.stringify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,MAAmB;IAC/D,WAAW;IACX,MAAM,MAAM,GAAa,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CACT,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CACjD,EACD,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,UAAU;IACV,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAExB,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,gDAAgD;QAChD,0BAA0B;QAC1B,uEAAuE;QACvE,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,mEAAmE;YACnE,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;gBACtC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;gBACjD,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,MAAM,GAAG,KAAK,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC;YAC7E,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC;YACxB,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC9B,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAClC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Gcdata } from './GameChanger.js';
2
+ import { ChatMote, type NpcData, type ParserResult } from './cl2.shared.types.js';
3
+ import type { Mote } from './types.js';
4
+ export declare function listChats(gcData: Gcdata): ChatMote[];
5
+ export declare function isChatMote(mote: any): mote is Mote<NpcData>;
6
+ export interface ChatUpdateResult extends ParserResult<{
7
+ moments: ParsedMoment[];
8
+ }> {
9
+ }
10
+ export interface ParsedMoment {
11
+ id: string | undefined;
12
+ phrases: ParsedPhrase[];
13
+ }
14
+ export interface ParsedPhrase {
15
+ id: string | undefined;
16
+ speaker: string | undefined;
17
+ /** MoteId for the Emoji */
18
+ emoji?: string;
19
+ text?: string;
20
+ }
21
+ export declare const linePatterns: string[];
22
+ //# sourceMappingURL=cl2.chat.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chat.types.d.ts","sourceRoot":"","sources":["../src/cl2.chat.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAGL,QAAQ,EAMR,KAAK,OAAO,EACZ,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAE3D;AAED,MAAM,WAAW,gBACf,SAAQ,YAAY,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;CAAG;AAEP,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,eAAO,MAAM,YAAY,UAQxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { arrayTagPattern, chatSchemaId, commentLinePattern, emojiGroupPattern, moteNamePattern, moteTagPattern, } from './cl2.shared.types.js';
2
+ export function listChats(gcData) {
3
+ return gcData.listMotesBySchema(chatSchemaId);
4
+ }
5
+ export function isChatMote(mote) {
6
+ return mote.schema_id === chatSchemaId;
7
+ }
8
+ // #rt10#kqbq RONXX@brubus_northwatch3
9
+ // > Should we open a gym?
10
+ export const linePatterns = [
11
+ // Label: Text
12
+ `^(?<labelGroup>(?<label>Name|Stage|Moments)\\s*:)\\s*(?<text>.*?)\\s*$`,
13
+ // Moment heading
14
+ `^(?<indicator>\\t)(?:${arrayTagPattern}?(?:#(?<arrayTag2>[a-z0-9]+))?(?<sep>\\s+)(${moteNamePattern}${moteTagPattern}?)?\\s*)?$`,
15
+ // Dialog line
16
+ `^(?<indicator>>)(?:\\s+${emojiGroupPattern}?(\\s*(?<text>.*)))?\\s*$`,
17
+ commentLinePattern,
18
+ ];
19
+ //# sourceMappingURL=cl2.chat.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chat.types.js","sourceRoot":"","sources":["../src/cl2.chat.types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAGf,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAG/B,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,iBAAiB,CAAW,YAAY,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAS;IAClC,OAAO,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC;AACzC,CAAC;AAoBD,uCAAuC;AACvC,0BAA0B;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc;IACd,wEAAwE;IACxE,iBAAiB;IACjB,wBAAwB,eAAe,8CAA8C,eAAe,GAAG,cAAc,YAAY;IACjI,cAAc;IACd,0BAA0B,iBAAiB,2BAA2B;IACtE,kBAAkB;CACnB,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=cl2.chats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chats.d.ts","sourceRoot":"","sources":["../src/cl2.chats.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=cl2.chats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl2.chats.js","sourceRoot":"","sources":["../src/cl2.chats.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"cl2.comfort.parse.d.ts","sourceRoot":"","sources":["../src/cl2.comfort.parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAShC,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,mBAAmB,CA6ErB;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
1
+ {"version":3,"file":"cl2.comfort.parse.d.ts","sourceRoot":"","sources":["../src/cl2.comfort.parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAShC,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,mBAAmB,CA6ErB;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -84,7 +84,13 @@ export async function updateChangesFromParsedComfort(parsed, moteId, packed) {
84
84
  try {
85
85
  // We're always going to be computing ALL changes, so clear whatever
86
86
  // we previously had.
87
- packed.clearMoteChanges(moteId);
87
+ packed.clearMoteChanges(moteId, [
88
+ 'data/wip/staging',
89
+ 'data/wip/notes/*',
90
+ 'data/name/text',
91
+ 'data/description/text',
92
+ 'data/unlocked_description/text',
93
+ ]);
88
94
  const schema = getComfortSchema(packed.working);
89
95
  assert(schema, `${comfortSchemaId} schema not found in working copy`);
90
96
  assert(schema.name, 'Quest mote must have a name pointer');
@@ -1 +1 @@
1
- {"version":3,"file":"cl2.comfort.parse.js","sourceRoot":"","sources":["../src/cl2.comfort.parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cl2.comfort.parse.js","sourceRoot":"","sources":["../src/cl2.comfort.parse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cl2.quest.parse.d.ts","sourceRoot":"","sources":["../src/cl2.quest.parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAOL,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAwB9B,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,iBAAiB,CAuanB;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAkVf"}
1
+ {"version":3,"file":"cl2.quest.parse.d.ts","sourceRoot":"","sources":["../src/cl2.quest.parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAOL,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAwB9B,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,iBAAiB,CAuanB;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CA6Vf"}
@@ -441,7 +441,20 @@ export async function updateChangesFromParsedQuest(parsed, moteId, packed) {
441
441
  try {
442
442
  // We're always going to be computing ALL changes, so clear whatever
443
443
  // we previously had.
444
- packed.clearMoteChanges(moteId);
444
+ packed.clearMoteChanges(moteId, [
445
+ 'data/wip/staging',
446
+ 'data/wip/notes/*',
447
+ 'data/name',
448
+ 'data/quest_giver',
449
+ 'data/quest_receiver',
450
+ 'data/quest_start_log',
451
+ 'data/storyline',
452
+ 'data/clues/*',
453
+ 'data/quest_start_requirements',
454
+ 'data/quest_end_requirements',
455
+ 'data/quest_start_moments',
456
+ 'data/quest_end_moments',
457
+ ]);
445
458
  const questMoteBase = packed.base.getMote(moteId);
446
459
  const questMoteWorking = packed.working.getMote(moteId);
447
460
  const schema = packed.working.getSchema('cl2_quest');
@@ -478,10 +491,8 @@ export async function updateChangesFromParsedQuest(parsed, moteId, packed) {
478
491
  for (const phrase of clue.phrases) {
479
492
  trace(`Setting phrase ${phrase.id} text to "${phrase.text}"`);
480
493
  updateMote(`data/clues/${clue.id}/element/phrases/${phrase.id}/element/phrase/text/text`, phrase.text || '');
481
- if (phrase.emoji) {
482
- trace(`Setting phrase ${phrase.id} emoji to "${phrase.emoji}"`);
483
- updateMote(`data/clues/${clue.id}/element/phrases/${phrase.id}/element/phrase/emoji`, phrase.emoji);
484
- }
494
+ trace(`Setting phrase ${phrase.id} emoji to "${phrase.emoji}"`);
495
+ updateMote(`data/clues/${clue.id}/element/phrases/${phrase.id}/element/phrase/emoji`, phrase.emoji);
485
496
  }
486
497
  }
487
498
  // Delete clues that were removed