narrat 3.5.0 → 3.6.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 (61) hide show
  1. package/dist/app.vue.d.ts +13 -10
  2. package/dist/components/MainMenu.vue.d.ts +15 -12
  3. package/dist/components/SkillsWindow.vue.d.ts +13 -10
  4. package/dist/components/achievements/achievement-tile.vue.d.ts +9 -10
  5. package/dist/components/achievements/achievements-section.vue.d.ts +9 -26
  6. package/dist/components/dialog-picture.vue.d.ts +20 -56
  7. package/dist/components/game-dialog.vue.d.ts +17 -26
  8. package/dist/components/hud.vue.d.ts +1 -1
  9. package/dist/components/inventory/InventoryTab.vue.d.ts +13 -10
  10. package/dist/components/inventory/inventory-section.vue.d.ts +15 -36
  11. package/dist/components/inventory/item-details.vue.d.ts +15 -12
  12. package/dist/components/inventory-ui.vue.d.ts +17 -20
  13. package/dist/components/quests/QuestDetails.vue.d.ts +13 -10
  14. package/dist/components/quests/QuestDisplay.vue.d.ts +13 -10
  15. package/dist/components/quests/quests-list-section.vue.d.ts +11 -36
  16. package/dist/components/save-slots.vue.d.ts +15 -12
  17. package/dist/components/saves/save-slot-ui.vue.d.ts +23 -45
  18. package/dist/components/screen-layer.vue.d.ts +19 -32
  19. package/dist/components/screen-objects/screen-object.vue.d.ts +19 -32
  20. package/dist/components/screens/viewport-button.vue.d.ts +19 -32
  21. package/dist/components/screens.vue.d.ts +13 -10
  22. package/dist/components/settings/setting-widget.vue.d.ts +9 -10
  23. package/dist/components/skills/SkillDetails.vue.d.ts +17 -20
  24. package/dist/components/skills/SkillGridElement.vue.d.ts +17 -20
  25. package/dist/components/skills/SkillsGrid.vue.d.ts +17 -20
  26. package/dist/components/start-menu/start-menu-button.vue.d.ts +15 -12
  27. package/dist/components/tabs/SubTabController.vue.d.ts +11 -28
  28. package/dist/components/tabs/TabsController.vue.d.ts +11 -20
  29. package/dist/components/tabs/tab-selector.vue.d.ts +17 -20
  30. package/dist/components/utils/floating-tooltip.vue.d.ts +9 -76
  31. package/dist/config/common-config.d.ts +148 -0
  32. package/dist/config/config-input.d.ts +1494 -108
  33. package/dist/config/config-output.d.ts +5 -321
  34. package/dist/config.d.ts +14 -9
  35. package/dist/dialog-box.vue.d.ts +18 -27
  36. package/dist/examples/default/config/index.d.ts +3 -0
  37. package/dist/examples/demo/config/index.d.ts +3 -0
  38. package/dist/examples/empty/config/index.d.ts +3 -0
  39. package/dist/examples/godot/config/index.d.ts +3 -0
  40. package/dist/examples/rpg/config/index.d.ts +3 -0
  41. package/dist/exports/config.d.ts +1 -1
  42. package/dist/exports/utils.d.ts +1 -0
  43. package/dist/hmr/hmr.d.ts +3 -1
  44. package/dist/narrat.es.js +20611 -20497
  45. package/dist/narrat.es.js.map +1 -1
  46. package/dist/narrat.umd.js +134 -135
  47. package/dist/narrat.umd.js.map +1 -1
  48. package/dist/plugins/narrat-themes/NarratThemesPlugin.d.ts +2 -1
  49. package/dist/stores/config-store.d.ts +12 -3
  50. package/dist/stores/main-store.d.ts +3279 -1875
  51. package/dist/stores/settings-store.d.ts +11 -11
  52. package/dist/style.css +1 -1
  53. package/dist/types/app-types.d.ts +39 -6
  54. package/dist/utils/data-helpers.d.ts +249 -141
  55. package/dist/utils/type-utils.d.ts +3 -0
  56. package/package.json +4 -3
  57. /package/dist/examples/default/{scripts.d.ts → scripts/scripts.d.ts} +0 -0
  58. /package/dist/examples/demo/{scripts.d.ts → scripts/index.d.ts} +0 -0
  59. /package/dist/examples/empty/{scripts.d.ts → scripts/index.d.ts} +0 -0
  60. /package/dist/examples/godot/{scripts.d.ts → scripts/index.d.ts} +0 -0
  61. /package/dist/examples/rpg/{scripts.d.ts → scripts/index.d.ts} +0 -0
@@ -23,20 +23,21 @@ export declare function getModifiableDataPinia(): {
23
23
  scope: {
24
24
  [key: string]: any;
25
25
  };
26
- config: import("../lib").Config;
26
+ config: import("../config/common-config").CommonConfig;
27
27
  gameOptions: {
28
28
  baseAssetsPath?: string | undefined;
29
29
  baseDataPath?: string | undefined;
30
- configPath: string;
30
+ configPath?: string | undefined;
31
31
  scripts: {
32
32
  code: string;
33
33
  fileName: string;
34
34
  id: string;
35
+ type: "script";
35
36
  }[];
36
37
  logging?: boolean | undefined;
37
38
  debug?: boolean | undefined;
38
39
  container?: string | HTMLElement | undefined;
39
- configs?: {
40
+ config?: {
40
41
  skillChecks?: string | {
41
42
  options: {
42
43
  extraDicePerLevel?: number | undefined;
@@ -59,8 +60,18 @@ export declare function getModifiableDataPinia(): {
59
60
  skill: string;
60
61
  difficulty: number;
61
62
  }>;
63
+ } | {
64
+ code: string;
65
+ fileName: string;
66
+ id: string;
67
+ type: "yaml";
62
68
  } | undefined;
63
69
  skills?: string | {
70
+ code: string;
71
+ fileName: string;
72
+ id: string;
73
+ type: "yaml";
74
+ } | {
64
75
  skills?: Record<string, {
65
76
  hidden?: boolean | undefined;
66
77
  name: string;
@@ -73,20 +84,43 @@ export declare function getModifiableDataPinia(): {
73
84
  notifyLevelUp: boolean;
74
85
  } | undefined;
75
86
  } | undefined;
87
+ items?: string | {
88
+ code: string;
89
+ fileName: string;
90
+ id: string;
91
+ type: "yaml";
92
+ } | {
93
+ categories?: {
94
+ title: string;
95
+ id: string;
96
+ }[] | undefined;
97
+ items?: Record<string, {
98
+ onUse?: {
99
+ label: string;
100
+ action: string;
101
+ } | undefined;
102
+ tag?: string | undefined;
103
+ category?: string | undefined;
104
+ showIfEmpty?: boolean | undefined;
105
+ name: string;
106
+ description: string;
107
+ icon: string;
108
+ }> | undefined;
109
+ } | undefined;
76
110
  buttons?: string | {
77
111
  clickableDuringScriptsByDefault?: boolean | undefined;
78
112
  buttons: Record<string, {
79
113
  text?: string | undefined;
114
+ action?: string | undefined;
115
+ tag?: string | undefined;
80
116
  background?: string | undefined;
81
117
  cssClass?: string | undefined;
82
118
  anchor?: {
83
119
  x: number;
84
120
  y: number;
85
121
  } | undefined;
86
- action?: string | undefined;
87
122
  actionType?: string | undefined;
88
123
  scriptClickable?: boolean | undefined;
89
- tag?: string | undefined;
90
124
  enabled: boolean;
91
125
  position: {
92
126
  width?: number | undefined;
@@ -95,24 +129,11 @@ export declare function getModifiableDataPinia(): {
95
129
  top: number;
96
130
  };
97
131
  }>;
98
- } | undefined;
99
- items?: string | {
100
- categories?: {
101
- title: string;
102
- id: string;
103
- }[] | undefined;
104
- items?: Record<string, {
105
- tag?: string | undefined;
106
- onUse?: {
107
- label: string;
108
- action: string;
109
- } | undefined;
110
- category?: string | undefined;
111
- showIfEmpty?: boolean | undefined;
112
- name: string;
113
- description: string;
114
- icon: string;
115
- }> | undefined;
132
+ } | {
133
+ code: string;
134
+ fileName: string;
135
+ id: string;
136
+ type: "yaml";
116
137
  } | undefined;
117
138
  quests?: string | {
118
139
  categories: {
@@ -136,6 +157,11 @@ export declare function getModifiableDataPinia(): {
136
157
  description: string;
137
158
  }>;
138
159
  }>;
160
+ } | {
161
+ code: string;
162
+ fileName: string;
163
+ id: string;
164
+ type: "yaml";
139
165
  } | undefined;
140
166
  tooltips?: string | {
141
167
  options: {
@@ -159,98 +185,77 @@ export declare function getModifiableDataPinia(): {
159
185
  description: string;
160
186
  keywords: string[];
161
187
  }[];
188
+ } | {
189
+ code: string;
190
+ fileName: string;
191
+ id: string;
192
+ type: "yaml";
162
193
  } | undefined;
163
- baseAssetsPath?: string | undefined;
164
- baseDataPath?: string | undefined;
165
- images?: Record<string, string> | undefined;
166
- settings?: {
167
- customSettings?: Record<string, ({
168
- description?: string | undefined;
169
- name: string;
170
- } & {
171
- type: "number";
172
- maxValue: number;
173
- minValue: number;
174
- defaultValue: number;
175
- step: number;
176
- }) | ({
177
- description?: string | undefined;
178
- name: string;
179
- } & {
180
- type: "integer";
181
- maxValue: number;
182
- minValue: number;
183
- defaultValue: number;
184
- step: number;
185
- }) | ({
186
- description?: string | undefined;
187
- name: string;
188
- } & {
189
- type: "boolean";
190
- defaultValue: boolean;
191
- }) | ({
192
- description?: string | undefined;
193
- name: string;
194
- } & {
195
- type: "string";
196
- defaultValue: string;
197
- })> | undefined;
198
- } | undefined;
199
- gameFlow?: {
200
- labelToJumpOnScriptEnd?: string | undefined;
201
- } | undefined;
202
- dialogPanel?: {
203
- width?: number | undefined;
204
- height?: number | undefined;
205
- animateText?: boolean | undefined;
206
- textSpeed?: number | undefined;
207
- timeBetweenLines?: number | undefined;
208
- overlayMode?: boolean | undefined;
209
- rightOffset?: number | undefined;
210
- bottomOffset?: number | undefined;
211
- hideDuringTransition?: boolean | undefined;
212
- showAfterScriptEnd?: boolean | undefined;
213
- } | undefined;
214
- splashScreens?: {
215
- engineSplashScreen?: {
216
- skip?: boolean | undefined;
217
- fadeDuration?: number | undefined;
218
- timeBeforeFadeout?: number | undefined;
219
- overrideText?: string | undefined;
220
- overrideLogo?: string | undefined;
221
- } | undefined;
222
- gameSplashScreen?: {
223
- startButtonText?: string | undefined;
224
- } | undefined;
194
+ animations?: string | {
195
+ keyframes: Record<string, any[]>;
196
+ animations: Record<string, {
197
+ options?: {
198
+ fill?: string | undefined;
199
+ delay?: number | undefined;
200
+ duration?: number | undefined;
201
+ direction?: string | undefined;
202
+ easing?: string | undefined;
203
+ endDelay?: number | undefined;
204
+ iterationStart?: number | undefined;
205
+ iterations?: number | undefined;
206
+ keyframes?: any;
207
+ } | undefined;
208
+ keyframes: string | any[];
209
+ }>;
210
+ } | {
211
+ code: string;
212
+ fileName: string;
213
+ id: string;
214
+ type: "yaml";
225
215
  } | undefined;
226
- scripts?: string | string[] | undefined;
227
- notifications?: {
228
- alsoPrintInDialogue?: boolean | undefined;
229
- timeOnScreen: number;
216
+ achievements?: string | {
217
+ code: string;
218
+ fileName: string;
219
+ id: string;
220
+ type: "yaml";
221
+ } | {
222
+ categories?: {
223
+ title: string;
224
+ id: string;
225
+ }[] | undefined;
226
+ achievements?: Record<string, {
227
+ icon?: string | undefined;
228
+ category?: string | undefined;
229
+ lockedIcon?: string | undefined;
230
+ secret?: boolean | undefined;
231
+ name: string;
232
+ description: string;
233
+ }> | undefined;
230
234
  } | undefined;
231
- achievements?: string | undefined;
232
- interactionTags?: Record<string, {
233
- onlyInteractOutsideOfScripts?: boolean | undefined;
234
- }> | undefined;
235
- transitions?: Record<string, {
236
- delay?: number | undefined;
237
- duration?: number | undefined;
238
- }> | undefined;
239
- menuButtons?: Record<string, {
240
- cssClass?: string | undefined;
241
- text: string;
242
- }> | undefined;
243
- debugging?: {
244
- showScriptFinishedMessage?: boolean | undefined;
235
+ scripts?: string | string[] | {
236
+ code: string;
237
+ fileName: string;
238
+ id: string;
239
+ type: "yaml";
245
240
  } | undefined;
246
- saves?: {
247
- runOnReload?: string | undefined;
248
- slots: number;
249
- mode: string;
241
+ choices?: string | {
242
+ code: string;
243
+ fileName: string;
244
+ id: string;
245
+ type: "yaml";
246
+ } | {
247
+ choiceTextTemplate?: string | undefined;
248
+ choicePrompts?: Record<string, {
249
+ cssClass?: string | undefined;
250
+ textTemplate?: string | undefined;
251
+ }> | undefined;
250
252
  } | undefined;
251
- choices?: string | undefined;
252
- animations?: string | undefined;
253
253
  audio: string | {
254
+ code: string;
255
+ fileName: string;
256
+ id: string;
257
+ type: "yaml";
258
+ } | {
254
259
  options: {
255
260
  volume?: number | undefined;
256
261
  defaultMusic?: string | undefined;
@@ -299,8 +304,18 @@ export declare function getModifiableDataPinia(): {
299
304
  }> | undefined;
300
305
  name: string;
301
306
  }>;
307
+ } | {
308
+ code: string;
309
+ fileName: string;
310
+ id: string;
311
+ type: "yaml";
302
312
  };
303
313
  screens: string | {
314
+ code: string;
315
+ fileName: string;
316
+ id: string;
317
+ type: "yaml";
318
+ } | {
304
319
  screens?: Record<string, {
305
320
  video?: {
306
321
  loop?: boolean | undefined;
@@ -308,16 +323,16 @@ export declare function getModifiableDataPinia(): {
308
323
  } | undefined;
309
324
  buttons?: (string | ({
310
325
  text?: string | undefined;
326
+ action?: string | undefined;
327
+ tag?: string | undefined;
311
328
  background?: string | undefined;
312
329
  cssClass?: string | undefined;
313
330
  anchor?: {
314
331
  x: number;
315
332
  y: number;
316
333
  } | undefined;
317
- action?: string | undefined;
318
334
  actionType?: string | undefined;
319
335
  scriptClickable?: boolean | undefined;
320
- tag?: string | undefined;
321
336
  enabled: boolean;
322
337
  position: {
323
338
  width?: number | undefined;
@@ -331,39 +346,132 @@ export declare function getModifiableDataPinia(): {
331
346
  background: string;
332
347
  }> | undefined;
333
348
  };
334
- gameTitle: string;
335
- saveFileName: string;
336
- layout: {
337
- minTextWidth?: number | undefined;
338
- defaultFontSize?: number | undefined;
339
- backgrounds: {
340
- width: number;
341
- height: number;
342
- };
343
- dialogBottomPadding: string | number;
344
- verticalLayoutThreshold: number;
345
- portraits: {
346
- offset?: {
347
- landscape?: {
348
- right: number;
349
- bottom: number;
350
- } | undefined;
351
- portrait?: {
352
- right: number;
353
- bottom: number;
354
- } | undefined;
349
+ common: {
350
+ code: string;
351
+ fileName: string;
352
+ id: string;
353
+ type: "yaml";
354
+ } | {
355
+ baseAssetsPath?: string | undefined;
356
+ baseDataPath?: string | undefined;
357
+ images?: Record<string, string> | undefined;
358
+ settings?: {
359
+ customSettings?: Record<string, ({
360
+ description?: string | undefined;
361
+ name: string;
362
+ } & {
363
+ type: "number";
364
+ defaultValue: number;
365
+ step: number;
366
+ minValue: number;
367
+ maxValue: number;
368
+ }) | ({
369
+ description?: string | undefined;
370
+ name: string;
371
+ } & {
372
+ type: "integer";
373
+ defaultValue: number;
374
+ step: number;
375
+ minValue: number;
376
+ maxValue: number;
377
+ }) | ({
378
+ description?: string | undefined;
379
+ name: string;
380
+ } & {
381
+ type: "boolean";
382
+ defaultValue: boolean;
383
+ }) | ({
384
+ description?: string | undefined;
385
+ name: string;
386
+ } & {
387
+ type: "string";
388
+ defaultValue: string;
389
+ })> | undefined;
390
+ } | undefined;
391
+ gameFlow?: {
392
+ labelToJumpOnScriptEnd?: string | undefined;
393
+ } | undefined;
394
+ dialogPanel?: {
395
+ width?: number | undefined;
396
+ height?: number | undefined;
397
+ animateText?: boolean | undefined;
398
+ textSpeed?: number | undefined;
399
+ timeBetweenLines?: number | undefined;
400
+ overlayMode?: boolean | undefined;
401
+ rightOffset?: number | undefined;
402
+ bottomOffset?: number | undefined;
403
+ hideDuringTransition?: boolean | undefined;
404
+ showAfterScriptEnd?: boolean | undefined;
405
+ } | undefined;
406
+ splashScreens?: {
407
+ engineSplashScreen?: {
408
+ skip?: boolean | undefined;
409
+ fadeDuration?: number | undefined;
410
+ timeBeforeFadeout?: number | undefined;
411
+ overrideText?: string | undefined;
412
+ overrideLogo?: string | undefined;
355
413
  } | undefined;
356
- width: number;
357
- height: number;
414
+ gameSplashScreen?: {
415
+ startButtonText?: string | undefined;
416
+ } | undefined;
417
+ } | undefined;
418
+ notifications?: {
419
+ alsoPrintInDialogue?: boolean | undefined;
420
+ timeOnScreen: number;
421
+ } | undefined;
422
+ interactionTags?: Record<string, {
423
+ onlyInteractOutsideOfScripts?: boolean | undefined;
424
+ }> | undefined;
425
+ transitions?: Record<string, {
426
+ delay?: number | undefined;
427
+ duration?: number | undefined;
428
+ }> | undefined;
429
+ menuButtons?: Record<string, {
430
+ cssClass?: string | undefined;
431
+ text: string;
432
+ }> | undefined;
433
+ debugging?: {
434
+ showScriptFinishedMessage?: boolean | undefined;
435
+ } | undefined;
436
+ saves?: {
437
+ runOnReload?: string | undefined;
438
+ slots: number;
439
+ mode: string;
440
+ } | undefined;
441
+ gameTitle: string;
442
+ saveFileName: string;
443
+ layout: {
444
+ minTextWidth?: number | undefined;
445
+ defaultFontSize?: number | undefined;
446
+ backgrounds: {
447
+ width: number;
448
+ height: number;
449
+ };
450
+ dialogBottomPadding: string | number;
451
+ verticalLayoutThreshold: number;
452
+ portraits: {
453
+ offset?: {
454
+ landscape?: {
455
+ right: number;
456
+ bottom: number;
457
+ } | undefined;
458
+ portrait?: {
459
+ right: number;
460
+ bottom: number;
461
+ } | undefined;
462
+ } | undefined;
463
+ width: number;
464
+ height: number;
465
+ };
358
466
  };
467
+ hudStats: Record<string, {
468
+ minValue?: number | undefined;
469
+ maxValue?: number | undefined;
470
+ name: string;
471
+ icon: string;
472
+ startingValue: number;
473
+ }>;
359
474
  };
360
- hudStats: Record<string, {
361
- maxValue?: number | undefined;
362
- minValue?: number | undefined;
363
- name: string;
364
- icon: string;
365
- startingValue: number;
366
- }>;
367
475
  } | undefined;
368
476
  };
369
477
  baseSettings: {
@@ -1,2 +1,5 @@
1
1
  export declare const generateObjectFromList: <T extends readonly string[]>(list: T) => { [K in T[number]]: K; };
2
2
  export declare const isPromise: <T>(value: any) => value is Promise<T>;
3
+ export type DeepPartial<T> = T extends object ? {
4
+ [P in keyof T]?: DeepPartial<T[P]>;
5
+ } : T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "narrat",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "narrat narrative engine",
5
5
  "main": "dist/narrat.umd.js",
6
6
  "module": "dist/narrat.es.js",
@@ -61,7 +61,7 @@
61
61
  "vue": "^3.3.4"
62
62
  },
63
63
  "dependencies": {
64
- "@sinclair/typebox": "^0.29.1",
64
+ "@sinclair/typebox": "^0.31.18",
65
65
  "ajv": "^8.11.0",
66
66
  "ajv-formats": "^2.1.1",
67
67
  "clone-deep": "^4.0.1",
@@ -100,6 +100,7 @@
100
100
  "kolorist": "^1.5.1",
101
101
  "pinia": "^2.1.4",
102
102
  "prettier": "^3.0.0",
103
+ "rollup-plugin-visualizer": "^5.9.2",
103
104
  "shelljs": "^0.8.5",
104
105
  "shx": "^0.3.4",
105
106
  "ts-prune": "^0.10.3",
@@ -113,7 +114,7 @@
113
114
  "vite-plugin-windicss": "^1.9.0",
114
115
  "vitest": "^0.33.0",
115
116
  "vue": "^3.3.4",
116
- "vue-tsc": "^1.8.15",
117
+ "vue-tsc": "^1.8.22",
117
118
  "windicss": "^3.5.6"
118
119
  }
119
120
  }