@sharpee/story-loader 3.1.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chain-map.d.ts +40 -0
- package/chain-map.d.ts.map +1 -0
- package/chain-map.js +39 -0
- package/chain-map.js.map +1 -0
- package/evaluator.d.ts +16 -0
- package/evaluator.d.ts.map +1 -1
- package/evaluator.js +56 -21
- package/evaluator.js.map +1 -1
- package/event-contract.d.ts +18 -0
- package/event-contract.d.ts.map +1 -1
- package/event-contract.js +28 -1
- package/event-contract.js.map +1 -1
- package/event-id-map.d.ts +42 -0
- package/event-id-map.d.ts.map +1 -0
- package/event-id-map.js +62 -0
- package/event-id-map.js.map +1 -0
- package/extension-registry.d.ts +57 -0
- package/extension-registry.d.ts.map +1 -0
- package/extension-registry.js +90 -0
- package/extension-registry.js.map +1 -0
- package/index.d.ts +9 -7
- package/index.d.ts.map +1 -1
- package/index.js +28 -25
- package/index.js.map +1 -1
- package/loader.d.ts +122 -6
- package/loader.d.ts.map +1 -1
- package/loader.js +967 -119
- package/loader.js.map +1 -1
- package/message-alias-map.d.ts +25 -0
- package/message-alias-map.d.ts.map +1 -0
- package/message-alias-map.js +830 -0
- package/message-alias-map.js.map +1 -0
- package/package.json +13 -9
- package/phrasebook-data.d.ts +27 -0
- package/phrasebook-data.d.ts.map +1 -0
- package/phrasebook-data.js +6 -0
- package/phrasebook-data.js.map +1 -0
- package/runtime.d.ts +139 -19
- package/runtime.d.ts.map +1 -1
- package/runtime.js +692 -166
- package/runtime.js.map +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { WorldModel } from '@sharpee/world-model';
|
|
2
|
+
/**
|
|
3
|
+
* Where one Chord `with`-field lands on the platform: the target trait and
|
|
4
|
+
* its field name, plus how the config value converts. `boolean` accepts the
|
|
5
|
+
* words `true`/`false` (anything else is a LoadError); `fraction` divides a
|
|
6
|
+
* Chord percentage by 100 (reserved for the NPC routes, Phase 2).
|
|
7
|
+
*/
|
|
8
|
+
export interface FieldRoute {
|
|
9
|
+
trait: 'combatant' | 'health' | 'weapon';
|
|
10
|
+
field: string;
|
|
11
|
+
convert: 'number' | 'boolean';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* `combatant`/`weapon` field routing (ADR-215 combat spelling). Exported so
|
|
15
|
+
* the manifest-conformance test can assert every chord-manifest key has a
|
|
16
|
+
* route AND every route's field exists on the real trait — the drift gate.
|
|
17
|
+
* Note the ADR-226 split: `health`/`max-health` route to the REQUIRED
|
|
18
|
+
* HealthTrait (auto-attached), never to CombatantTrait.
|
|
19
|
+
*/
|
|
20
|
+
export declare const COMBAT_FIELD_ROUTES: ReadonlyMap<string, FieldRoute>;
|
|
21
|
+
/**
|
|
22
|
+
* NpcTrait routing for the CORE NPC behavior adjectives (ADR-215 Q4 —
|
|
23
|
+
* always on, no `use`). Behavior-factory params (`move-chance`,
|
|
24
|
+
* `immediate`, `route`, `loop`, `wait-turns`) are NOT trait fields — they
|
|
25
|
+
* configure the per-entity behavior instance at engine-ready and are
|
|
26
|
+
* proven by the REAL-PATH tests, not this table.
|
|
27
|
+
*/
|
|
28
|
+
export interface NpcFieldRoute {
|
|
29
|
+
field: string;
|
|
30
|
+
convert: 'boolean' | 'rooms';
|
|
31
|
+
}
|
|
32
|
+
export declare const NPC_FIELD_ROUTES: ReadonlyMap<string, NpcFieldRoute>;
|
|
33
|
+
/** The five core behavior adjectives (stdlib's standard NPC library). */
|
|
34
|
+
export declare const NPC_BEHAVIOR_ADJECTIVES: ReadonlySet<string>;
|
|
35
|
+
/** One trusted extension's runtime registration surface (ADR-215's three-part contract). */
|
|
36
|
+
export interface ExtensionRegistration {
|
|
37
|
+
/** World-side registration (interceptors, resolvers) run at load. */
|
|
38
|
+
registerWorld?: (world: WorldModel) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Engine plugin registration (TurnPlugin instances). Invoked generically
|
|
41
|
+
* over `ir.uses` from the loader's `onEngineReady` — the only moment a
|
|
42
|
+
* plugin registry exists (ADR-260 D6). An extension whose plugin needs
|
|
43
|
+
* story data lowered into it after construction (`state-machines`) wires
|
|
44
|
+
* itself in that hook directly instead.
|
|
45
|
+
*/
|
|
46
|
+
registerPlugin?: (registry: {
|
|
47
|
+
register(plugin: unknown): void;
|
|
48
|
+
}) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Channel + renderer registration (ADR-215's third contribution part) —
|
|
51
|
+
* reserved slot, filled in by Phase 6.
|
|
52
|
+
*/
|
|
53
|
+
registerChannels?: (registry: unknown) => void;
|
|
54
|
+
}
|
|
55
|
+
/** `use` name → its trusted, runtime-bundled registration. Fixed set — growing it is a grammar change. */
|
|
56
|
+
export declare const EXTENSION_REGISTRY: ReadonlyMap<string, ExtensionRegistration>;
|
|
57
|
+
//# sourceMappingURL=extension-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-registry.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/extension-registry.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAiB9D,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAK9D,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAMtD,CAAC;AAEH,4FAA4F;AAC5F,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IACzE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,0GAA0G;AAC1G,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAyBxE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXTENSION_REGISTRY = exports.NPC_BEHAVIOR_ADJECTIVES = exports.NPC_FIELD_ROUTES = exports.COMBAT_FIELD_ROUTES = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* extension-registry.ts — the trusted runtime extension registry (ADR-215).
|
|
6
|
+
*
|
|
7
|
+
* Purpose: the MAPPINGS half of the names-vs-mappings split — the fixed,
|
|
8
|
+
* runtime-bundled set of extensions a story's `use <name>` may resolve to,
|
|
9
|
+
* each entry carrying its world-side registration and its adjective→trait
|
|
10
|
+
* field routing. Because every entry ships with the runtime and no author
|
|
11
|
+
* code crosses the boundary, a `use`-only story stays pure IR. An unknown
|
|
12
|
+
* `use` name is a LoadError (the compiler's manifest gate catches it first;
|
|
13
|
+
* this is the rogue-IR backstop). The chord-side manifest registry
|
|
14
|
+
* (@sharpee/chord EXTENSION_MANIFESTS) must carry exactly these names — the
|
|
15
|
+
* manifest-conformance test pins the two together.
|
|
16
|
+
*
|
|
17
|
+
* Public interface: EXTENSION_REGISTRY, ExtensionRegistration,
|
|
18
|
+
* COMBAT_FIELD_ROUTES, FieldRoute.
|
|
19
|
+
* Owner context: @sharpee/story-loader (language-neutral IR consumer).
|
|
20
|
+
*/
|
|
21
|
+
const ext_basic_combat_1 = require("@sharpee/ext-basic-combat");
|
|
22
|
+
const ext_scoring_1 = require("@sharpee/ext-scoring");
|
|
23
|
+
const ext_hunger_1 = require("@sharpee/ext-hunger");
|
|
24
|
+
/**
|
|
25
|
+
* `combatant`/`weapon` field routing (ADR-215 combat spelling). Exported so
|
|
26
|
+
* the manifest-conformance test can assert every chord-manifest key has a
|
|
27
|
+
* route AND every route's field exists on the real trait — the drift gate.
|
|
28
|
+
* Note the ADR-226 split: `health`/`max-health` route to the REQUIRED
|
|
29
|
+
* HealthTrait (auto-attached), never to CombatantTrait.
|
|
30
|
+
*/
|
|
31
|
+
exports.COMBAT_FIELD_ROUTES = new Map([
|
|
32
|
+
['health', { trait: 'health', field: 'health', convert: 'number' }],
|
|
33
|
+
['max-health', { trait: 'health', field: 'maxHealth', convert: 'number' }],
|
|
34
|
+
['skill', { trait: 'combatant', field: 'skill', convert: 'number' }],
|
|
35
|
+
['base-damage', { trait: 'combatant', field: 'baseDamage', convert: 'number' }],
|
|
36
|
+
['armor', { trait: 'combatant', field: 'armor', convert: 'number' }],
|
|
37
|
+
['attack-power', { trait: 'combatant', field: 'attackPower', convert: 'number' }],
|
|
38
|
+
['defense', { trait: 'combatant', field: 'defense', convert: 'number' }],
|
|
39
|
+
['experience-value', { trait: 'combatant', field: 'experienceValue', convert: 'number' }],
|
|
40
|
+
['hostile', { trait: 'combatant', field: 'hostile', convert: 'boolean' }],
|
|
41
|
+
['can-retaliate', { trait: 'combatant', field: 'canRetaliate', convert: 'boolean' }],
|
|
42
|
+
['drops-inventory', { trait: 'combatant', field: 'dropsInventory', convert: 'boolean' }],
|
|
43
|
+
['is-undead', { trait: 'combatant', field: 'isUndead', convert: 'boolean' }],
|
|
44
|
+
['damage', { trait: 'weapon', field: 'damage', convert: 'number' }],
|
|
45
|
+
['skill-bonus', { trait: 'weapon', field: 'skillBonus', convert: 'number' }],
|
|
46
|
+
['is-blessed', { trait: 'weapon', field: 'isBlessed', convert: 'boolean' }],
|
|
47
|
+
['glows-near-danger', { trait: 'weapon', field: 'glowsNearDanger', convert: 'boolean' }],
|
|
48
|
+
]);
|
|
49
|
+
exports.NPC_FIELD_ROUTES = new Map([
|
|
50
|
+
['can-move', { field: 'canMove', convert: 'boolean' }],
|
|
51
|
+
['announces-movement', { field: 'announcesMovement', convert: 'boolean' }],
|
|
52
|
+
['allowed-rooms', { field: 'allowedRooms', convert: 'rooms' }],
|
|
53
|
+
['forbidden-rooms', { field: 'forbiddenRooms', convert: 'rooms' }],
|
|
54
|
+
]);
|
|
55
|
+
/** The five core behavior adjectives (stdlib's standard NPC library). */
|
|
56
|
+
exports.NPC_BEHAVIOR_ADJECTIVES = new Set([
|
|
57
|
+
'guard',
|
|
58
|
+
'passive',
|
|
59
|
+
'wanderer',
|
|
60
|
+
'follower',
|
|
61
|
+
'patrol',
|
|
62
|
+
]);
|
|
63
|
+
/** `use` name → its trusted, runtime-bundled registration. Fixed set — growing it is a grammar change. */
|
|
64
|
+
exports.EXTENSION_REGISTRY = new Map([
|
|
65
|
+
['combat', { registerWorld: (world) => (0, ext_basic_combat_1.registerBasicCombat)(world) }],
|
|
66
|
+
// scoring is the first entry to fill TWO of the contract's three parts
|
|
67
|
+
// (ADR-261 D1): `registerWorld` enables scoring at world-build time, and
|
|
68
|
+
// `registerPlugin` installs the promotion watcher at onEngineReady —
|
|
69
|
+
// ExtensionRegistration.registerPlugin's first live use anywhere.
|
|
70
|
+
//
|
|
71
|
+
// Neither hook carries the rank ladder, and neither can: `registerWorld` is
|
|
72
|
+
// `(world) => void` on this module-level const map, so no entry here can
|
|
73
|
+
// reach a story's IR (ADR-260 D5). The ladder travels the loader's generic
|
|
74
|
+
// lowering path instead, which names no extension.
|
|
75
|
+
['scoring', {
|
|
76
|
+
registerWorld: (world) => (0, ext_scoring_1.registerScoring)(world),
|
|
77
|
+
registerPlugin: (registry) => (0, ext_scoring_1.registerScoringPlugin)(registry),
|
|
78
|
+
}],
|
|
79
|
+
// state-machines registers engine-side (onEngineReady): the plugin
|
|
80
|
+
// instance must be kept to lower `define machine` blocks into its
|
|
81
|
+
// registry, so its wiring lives with the loader's engine hook. The
|
|
82
|
+
// entry exists so the `use` gate knows the name.
|
|
83
|
+
['state-machines', {}],
|
|
84
|
+
// hunger (ADR-263): `registerWorld` installs the eating handler (config-free).
|
|
85
|
+
// The decay/death daemon, the ADR-262 crossing watcher, and the narrator are
|
|
86
|
+
// config-dependent (grows/fatal/rungs/phrases), so — like scoring's ladder —
|
|
87
|
+
// they travel the loader's generic `ir.hunger` lowering path, not this map.
|
|
88
|
+
['hunger', { registerWorld: (world) => (0, ext_hunger_1.registerHunger)(world) }],
|
|
89
|
+
]);
|
|
90
|
+
//# sourceMappingURL=extension-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-registry.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/extension-registry.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -14,11 +14,13 @@
|
|
|
14
14
|
* (world-model, helpers, engine, if-domain, core); nothing platform depends
|
|
15
15
|
* on it (ADR-210 Direction rule).
|
|
16
16
|
*/
|
|
17
|
-
export { LoadError } from './errors';
|
|
18
|
-
export { EVENT_TRIGGERS, EVENT_PAYLOAD_FIELDS } from './event-contract';
|
|
19
|
-
export { HATCH_CONTEXT_VERSION, stagingRenderContext, findChordLiteral } from './hatch-context';
|
|
20
|
-
export { ChordDataTrait, ChordDetailTrait, ChordStory, createStory, StoryLoaderOptions } from './loader';
|
|
21
|
-
export { Evaluator, EvalContext, EntityIdResolver } from './evaluator';
|
|
22
|
-
export { ChordRuntime, ChordBehaviorTrait } from './runtime';
|
|
23
|
-
export {
|
|
17
|
+
export { LoadError } from './errors.js';
|
|
18
|
+
export { EVENT_TRIGGERS, EVENT_PAYLOAD_FIELDS, REGION_EVENT_TRIGGERS } from './event-contract.js';
|
|
19
|
+
export { HATCH_CONTEXT_VERSION, stagingRenderContext, findChordLiteral } from './hatch-context.js';
|
|
20
|
+
export { ChordDataTrait, ChordDetailTrait, ChordStory, createStory, StoryLoaderOptions } from './loader.js';
|
|
21
|
+
export { Evaluator, EvalContext, EntityIdResolver } from './evaluator.js';
|
|
22
|
+
export { ChordRuntime, ChordBehaviorTrait } from './runtime.js';
|
|
23
|
+
export { PHRASEBOOK_DATA } from './phrasebook-data.js';
|
|
24
|
+
export type { PhrasebookData } from './phrasebook-data.js';
|
|
25
|
+
export { CHORD_OCCURRENCE_PREFIX, CHORD_RNG_KEY, CHORD_STATE_PREFIX, CHORD_TRAIT_PREFIX, } from './state-keys.js';
|
|
24
26
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
package/index.js
CHANGED
|
@@ -16,29 +16,32 @@
|
|
|
16
16
|
* on it (ADR-210 Direction rule).
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.CHORD_TRAIT_PREFIX = exports.CHORD_STATE_PREFIX = exports.CHORD_RNG_KEY = exports.CHORD_OCCURRENCE_PREFIX = exports.ChordBehaviorTrait = exports.ChordRuntime = exports.Evaluator = exports.createStory = exports.ChordStory = exports.ChordDetailTrait = exports.ChordDataTrait = exports.findChordLiteral = exports.stagingRenderContext = exports.HATCH_CONTEXT_VERSION = exports.EVENT_PAYLOAD_FIELDS = exports.EVENT_TRIGGERS = exports.LoadError = void 0;
|
|
20
|
-
var
|
|
21
|
-
Object.defineProperty(exports, "LoadError", { enumerable: true, get: function () { return
|
|
22
|
-
var
|
|
23
|
-
Object.defineProperty(exports, "EVENT_TRIGGERS", { enumerable: true, get: function () { return
|
|
24
|
-
Object.defineProperty(exports, "EVENT_PAYLOAD_FIELDS", { enumerable: true, get: function () { return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Object.defineProperty(exports, "
|
|
28
|
-
Object.defineProperty(exports, "
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Object.defineProperty(exports, "
|
|
32
|
-
Object.defineProperty(exports, "
|
|
33
|
-
Object.defineProperty(exports, "
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Object.defineProperty(exports, "
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Object.defineProperty(exports, "
|
|
42
|
-
|
|
43
|
-
Object.defineProperty(exports, "
|
|
19
|
+
exports.CHORD_TRAIT_PREFIX = exports.CHORD_STATE_PREFIX = exports.CHORD_RNG_KEY = exports.CHORD_OCCURRENCE_PREFIX = exports.PHRASEBOOK_DATA = exports.ChordBehaviorTrait = exports.ChordRuntime = exports.Evaluator = exports.createStory = exports.ChordStory = exports.ChordDetailTrait = exports.ChordDataTrait = exports.findChordLiteral = exports.stagingRenderContext = exports.HATCH_CONTEXT_VERSION = exports.REGION_EVENT_TRIGGERS = exports.EVENT_PAYLOAD_FIELDS = exports.EVENT_TRIGGERS = exports.LoadError = void 0;
|
|
20
|
+
var errors_js_1 = require("./errors.js");
|
|
21
|
+
Object.defineProperty(exports, "LoadError", { enumerable: true, get: function () { return errors_js_1.LoadError; } });
|
|
22
|
+
var event_contract_js_1 = require("./event-contract.js");
|
|
23
|
+
Object.defineProperty(exports, "EVENT_TRIGGERS", { enumerable: true, get: function () { return event_contract_js_1.EVENT_TRIGGERS; } });
|
|
24
|
+
Object.defineProperty(exports, "EVENT_PAYLOAD_FIELDS", { enumerable: true, get: function () { return event_contract_js_1.EVENT_PAYLOAD_FIELDS; } });
|
|
25
|
+
Object.defineProperty(exports, "REGION_EVENT_TRIGGERS", { enumerable: true, get: function () { return event_contract_js_1.REGION_EVENT_TRIGGERS; } });
|
|
26
|
+
var hatch_context_js_1 = require("./hatch-context.js");
|
|
27
|
+
Object.defineProperty(exports, "HATCH_CONTEXT_VERSION", { enumerable: true, get: function () { return hatch_context_js_1.HATCH_CONTEXT_VERSION; } });
|
|
28
|
+
Object.defineProperty(exports, "stagingRenderContext", { enumerable: true, get: function () { return hatch_context_js_1.stagingRenderContext; } });
|
|
29
|
+
Object.defineProperty(exports, "findChordLiteral", { enumerable: true, get: function () { return hatch_context_js_1.findChordLiteral; } });
|
|
30
|
+
var loader_js_1 = require("./loader.js");
|
|
31
|
+
Object.defineProperty(exports, "ChordDataTrait", { enumerable: true, get: function () { return loader_js_1.ChordDataTrait; } });
|
|
32
|
+
Object.defineProperty(exports, "ChordDetailTrait", { enumerable: true, get: function () { return loader_js_1.ChordDetailTrait; } });
|
|
33
|
+
Object.defineProperty(exports, "ChordStory", { enumerable: true, get: function () { return loader_js_1.ChordStory; } });
|
|
34
|
+
Object.defineProperty(exports, "createStory", { enumerable: true, get: function () { return loader_js_1.createStory; } });
|
|
35
|
+
var evaluator_js_1 = require("./evaluator.js");
|
|
36
|
+
Object.defineProperty(exports, "Evaluator", { enumerable: true, get: function () { return evaluator_js_1.Evaluator; } });
|
|
37
|
+
var runtime_js_1 = require("./runtime.js");
|
|
38
|
+
Object.defineProperty(exports, "ChordRuntime", { enumerable: true, get: function () { return runtime_js_1.ChordRuntime; } });
|
|
39
|
+
Object.defineProperty(exports, "ChordBehaviorTrait", { enumerable: true, get: function () { return runtime_js_1.ChordBehaviorTrait; } });
|
|
40
|
+
var phrasebook_data_js_1 = require("./phrasebook-data.js");
|
|
41
|
+
Object.defineProperty(exports, "PHRASEBOOK_DATA", { enumerable: true, get: function () { return phrasebook_data_js_1.PHRASEBOOK_DATA; } });
|
|
42
|
+
var state_keys_js_1 = require("./state-keys.js");
|
|
43
|
+
Object.defineProperty(exports, "CHORD_OCCURRENCE_PREFIX", { enumerable: true, get: function () { return state_keys_js_1.CHORD_OCCURRENCE_PREFIX; } });
|
|
44
|
+
Object.defineProperty(exports, "CHORD_RNG_KEY", { enumerable: true, get: function () { return state_keys_js_1.CHORD_RNG_KEY; } });
|
|
45
|
+
Object.defineProperty(exports, "CHORD_STATE_PREFIX", { enumerable: true, get: function () { return state_keys_js_1.CHORD_STATE_PREFIX; } });
|
|
46
|
+
Object.defineProperty(exports, "CHORD_TRAIT_PREFIX", { enumerable: true, get: function () { return state_keys_js_1.CHORD_TRAIT_PREFIX; } });
|
|
44
47
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yDAAkG;AAAzF,mHAAA,cAAc,OAAA;AAAE,yHAAA,oBAAoB,OAAA;AAAE,0HAAA,qBAAqB,OAAA;AACpE,uDAAmG;AAA1F,yHAAA,qBAAqB,OAAA;AAAE,wHAAA,oBAAoB,OAAA;AAAE,oHAAA,gBAAgB,OAAA;AACtE,yCAA4G;AAAnG,2GAAA,cAAc,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,wGAAA,WAAW,OAAA;AAClE,+CAA0E;AAAjE,yGAAA,SAAS,OAAA;AAClB,2CAAgE;AAAvD,0GAAA,YAAY,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACzC,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AAExB,iDAKyB;AAJvB,wHAAA,uBAAuB,OAAA;AACvB,8GAAA,aAAa,OAAA;AACb,mHAAA,kBAAkB,OAAA;AAClB,mHAAA,kBAAkB,OAAA"}
|
package/loader.d.ts
CHANGED
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
* platform reads it today (dual-mode, ADR-107).
|
|
22
22
|
*/
|
|
23
23
|
import { StoryIR } from '@sharpee/chord';
|
|
24
|
-
import type { Phrase } from '@sharpee/if-domain';
|
|
25
|
-
import type
|
|
24
|
+
import type { IChannelRegistry, Phrase } from '@sharpee/if-domain';
|
|
25
|
+
import { type ISemanticEvent } from '@sharpee/core';
|
|
26
26
|
import type { LanguageProvider, PhraseProducer, StoryEndingKind } from '@sharpee/if-domain';
|
|
27
27
|
import type { CustomVocabulary, Story, StoryConfig } from '@sharpee/engine';
|
|
28
|
-
import {
|
|
29
|
-
import { ChordRuntime } from './runtime';
|
|
28
|
+
import { IFEntity, IParsedCommand, ITrait, WorldModel, type EventChainHandler } from '@sharpee/world-model';
|
|
29
|
+
import { ChordRuntime } from './runtime.js';
|
|
30
30
|
/**
|
|
31
31
|
* Marker trait for entities carrying loader-compiled `detail` providers
|
|
32
32
|
* (Z3b): the one state-clause contributor registered per load looks up the
|
|
@@ -84,8 +84,8 @@ export declare class ChordStory implements Story {
|
|
|
84
84
|
readonly producers: Map<string, PhraseProducer>;
|
|
85
85
|
/** Bound `define action X from` hatches: four-phase Action objects by name. */
|
|
86
86
|
readonly boundActions: Map<string, unknown>;
|
|
87
|
-
/** Bound `define
|
|
88
|
-
readonly
|
|
87
|
+
/** Bound `define chain X from` hatches (ADR-094): EventChainHandlers by chain alias. */
|
|
88
|
+
readonly boundChains: Map<string, EventChainHandler>;
|
|
89
89
|
/** The turn-by-turn runtime (rules, on-clauses, derived properties). */
|
|
90
90
|
readonly runtime: ChordRuntime;
|
|
91
91
|
/** The condition evaluator — shared with the runtime; Z2 gate thunks close over it. */
|
|
@@ -155,7 +155,57 @@ export declare class ChordStory implements Story {
|
|
|
155
155
|
};
|
|
156
156
|
registerSlotEntry?(entry: ChordSlotEntry): void;
|
|
157
157
|
registerParsedCommandTransformer?(t: (parsed: IParsedCommand, world: WorldModel) => IParsedCommand): void;
|
|
158
|
+
getClientCapabilities?(): object;
|
|
158
159
|
}): void;
|
|
160
|
+
/**
|
|
161
|
+
* The promotion narrator — the Chord render layer over the ADR-262 crossing
|
|
162
|
+
* engine (ADR-261 D7, amended by ADR-262 D3).
|
|
163
|
+
*
|
|
164
|
+
* A promotion *says* the rung's authored `says` phrase; a rung with **no**
|
|
165
|
+
* `says` now speaks the overridable platform fallback
|
|
166
|
+
* (`if.action.scoring.promotion`), because ADR-262 D3 made silence explicit —
|
|
167
|
+
* only `announce silent` suppresses. This is a thin {@link createBandNarrator}
|
|
168
|
+
* over the score scalar: it renders each crossed rung (`all` mode) so a
|
|
169
|
+
* multi-band jump reports each elevation (ADR-262 D6), mapping rank ids to
|
|
170
|
+
* their `says` keys.
|
|
171
|
+
*
|
|
172
|
+
* **Why the engine derives the crossing rather than observing an event.** It
|
|
173
|
+
* hands each plugin only the *action's* events (`TurnPluginContext.actionEvents`
|
|
174
|
+
* is a fixed snapshot taken before the plugin loop), so no plugin can see
|
|
175
|
+
* another's output — `ext-scoring`'s data watcher runs in the same loop and is
|
|
176
|
+
* invisible here. Both read the same derived ledger, so they cannot disagree
|
|
177
|
+
* about whether a rung was crossed; what differs is only what each produces —
|
|
178
|
+
* the platform its `band_crossed` event, the story its sentence.
|
|
179
|
+
*
|
|
180
|
+
* Registered by the Chord loader because only it holds the IR. `phraseKey`
|
|
181
|
+
* never crosses into a platform type: `RankDefinition` carries none (ADR-260
|
|
182
|
+
* D2), and the map below stays in this closure.
|
|
183
|
+
*/
|
|
184
|
+
private buildPromotionNarrator;
|
|
185
|
+
/**
|
|
186
|
+
* The hunger decay + death daemon (ADR-263 D1). Each turn it raises the
|
|
187
|
+
* severity counter by `grows` (the `on every turn` mechanic) and, once
|
|
188
|
+
* severity reaches `fatal`, kills the player (`kill the player` — a raw-value
|
|
189
|
+
* trigger, not a band). Runs at a higher priority than the crossing watcher
|
|
190
|
+
* and narrator so they observe the updated severity the same turn.
|
|
191
|
+
*/
|
|
192
|
+
private buildHungerDaemon;
|
|
193
|
+
/**
|
|
194
|
+
* ADR-216 custom channels + ADR-215's third contribution part: every
|
|
195
|
+
* `define channel` lowers to a real IOChannel (JSON data projection —
|
|
196
|
+
* the turn's last event of the declared type, `take` fields projected
|
|
197
|
+
* from its data), and every `use`d extension gets its reserved
|
|
198
|
+
* `registerChannels` slot invoked (no bundled extension registers one
|
|
199
|
+
* today — the leg is live but unexercised; a novel renderer would ship
|
|
200
|
+
* there, keeping stories pure IR). The engine invokes this hook once at
|
|
201
|
+
* start (`Story.registerChannels`, engine/src/game-engine.ts).
|
|
202
|
+
*
|
|
203
|
+
* ADR-241 D4: family channels (`define ambient`/`define layer`, plus
|
|
204
|
+
* the implied `main` bed) register through stdlib's family builders —
|
|
205
|
+
* `ambient:<word>` / `image:<word>` ids, capability gates inherited
|
|
206
|
+
* from the builders (`sound` / `images`). Data channels are untouched.
|
|
207
|
+
*/
|
|
208
|
+
registerChannels(registry: IChannelRegistry): void;
|
|
159
209
|
/**
|
|
160
210
|
* The deadly-exit command transformer (ADR-227). Redirects `going
|
|
161
211
|
* <deadly-direction>` from a room with declared deadly exits to
|
|
@@ -189,7 +239,27 @@ export declare class ChordStory implements Story {
|
|
|
189
239
|
* ending event (Prerequisite 3). The caller (rule evaluator) emits it.
|
|
190
240
|
*/
|
|
191
241
|
triggerEnding(world: WorldModel, ending: StoryEndingKind, messageId?: string): ISemanticEvent;
|
|
242
|
+
/** Region IR id → parent region IR id (the parent's `containing` lists the child — ADR-236 D3). */
|
|
243
|
+
private readonly regionParents;
|
|
244
|
+
/**
|
|
245
|
+
* Region entities in parent-first order, filling `regionParents` on the
|
|
246
|
+
* way (ADR-236 D3). The compiler's cycle gate guarantees the walk ends; a
|
|
247
|
+
* cycle here means rogue IR and is a LoadError, never a hang.
|
|
248
|
+
*/
|
|
249
|
+
private regionsInParentFirstOrder;
|
|
192
250
|
private buildEntity;
|
|
251
|
+
/**
|
|
252
|
+
* ADR-231 D5a: map each accepted `starts <state>` initializer to the
|
|
253
|
+
* paired trait's initial-value field (locked→isLocked:true, closed→
|
|
254
|
+
* isOpen:false, on→isOn:true, …). Runs AFTER trait composition (the
|
|
255
|
+
* adjective-composed traits, ADR-231 D5b: there are no builder pre-adds
|
|
256
|
+
* left) — so a declared initializer always wins over any
|
|
257
|
+
* trait default. Only the trait boolean is set; the state adjective
|
|
258
|
+
* itself is never stored story state (the shadow-state ratchet).
|
|
259
|
+
* The analyzer's pairing gate guarantees the trait is present; a missing
|
|
260
|
+
* trait here is a defect, reported as a LoadError, never a silent skip.
|
|
261
|
+
*/
|
|
262
|
+
private applyStartsStates;
|
|
193
263
|
/**
|
|
194
264
|
* Resolve trait-config entity references (`with tool X`, `with key X`)
|
|
195
265
|
* to world entity ids (ADR-230 D3c / Phase 9a) — runs once, after every
|
|
@@ -208,6 +278,43 @@ export declare class ChordStory implements Story {
|
|
|
208
278
|
*/
|
|
209
279
|
private checkCuttableImplementations;
|
|
210
280
|
private applyTraitAdjectives;
|
|
281
|
+
/**
|
|
282
|
+
* Per-entity NPC behavior configs stashed at composition time and
|
|
283
|
+
* registered with the NPC service at engine-ready (world ids exist by
|
|
284
|
+
* then, so patrol routes resolve). guard/passive use the plugin's
|
|
285
|
+
* pre-registered behaviors; the factory-built three get per-entity ids.
|
|
286
|
+
*/
|
|
287
|
+
private readonly npcBehaviors;
|
|
288
|
+
/**
|
|
289
|
+
* ADR-215 Q4 core NPC routing: compose NpcTrait from a behavior
|
|
290
|
+
* adjective — behaviorId (`guard`/`passive` built-in; factory behaviors
|
|
291
|
+
* get `chord.npc.<id>`), movement defaults (movement behaviors default
|
|
292
|
+
* `canMove: true`), boolean fields via NPC_FIELD_ROUTES, and room-list
|
|
293
|
+
* fields (`allowed-rooms`/`forbidden-rooms`) filled through the shared
|
|
294
|
+
* pending-entity-ref mechanism once every entity exists.
|
|
295
|
+
*/
|
|
296
|
+
private applyNpcAdjective;
|
|
297
|
+
/**
|
|
298
|
+
* Build one per-entity NPC behavior instance from its stashed config
|
|
299
|
+
* (engine-ready time — world ids exist). Chord percentages convert to
|
|
300
|
+
* the platform's fractions here (`move-chance 50` → 0.5).
|
|
301
|
+
*/
|
|
302
|
+
private buildNpcBehavior;
|
|
303
|
+
/**
|
|
304
|
+
* Lower one `define machine` onto the ADR-119 shapes: platform id
|
|
305
|
+
* `chord.machine.<slug>`, role bindings as `$<role>` entries (world
|
|
306
|
+
* ids), action triggers on `if.action.<gerund>`, Chord conditions as
|
|
307
|
+
* custom guards over the shared evaluator, Chord bodies as one custom
|
|
308
|
+
* effect each through the runtime's statement executor.
|
|
309
|
+
*/
|
|
310
|
+
private buildMachineDefinition;
|
|
311
|
+
/**
|
|
312
|
+
* ADR-215 combat routing: compose `combatant` (CombatantTrait + the
|
|
313
|
+
* REQUIRED HealthTrait per ADR-226 — health/max-health route THERE) or
|
|
314
|
+
* `weapon` (WeaponTrait) from a composition's `with`-fields, via the
|
|
315
|
+
* exported COMBAT_FIELD_ROUTES table the manifest-conformance test pins.
|
|
316
|
+
*/
|
|
317
|
+
private applyCombatAdjective;
|
|
211
318
|
/**
|
|
212
319
|
* Initial values for a `define trait` instance: declared `starts`
|
|
213
320
|
* defaults overlaid by the composition's `with` config. Entity-name
|
|
@@ -264,6 +371,15 @@ export declare class ChordStory implements Story {
|
|
|
264
371
|
*/
|
|
265
372
|
private compileDetailChannels;
|
|
266
373
|
private phraseText;
|
|
374
|
+
/**
|
|
375
|
+
* Evaluate a channel's `return` construct (ADR-253 D1) against an event's
|
|
376
|
+
* payload to produce the channel's value:
|
|
377
|
+
* - `field` → the raw field value (may be a non-string);
|
|
378
|
+
* - `text` → the template with each `(slot)` replaced by its event field;
|
|
379
|
+
* - `phrase` → the named phrase's first-variant text, its `(slot)`s likewise
|
|
380
|
+
* filled from the event payload (locale-aware via `phraseText`).
|
|
381
|
+
*/
|
|
382
|
+
private evaluateChannelReturn;
|
|
267
383
|
}
|
|
268
384
|
/**
|
|
269
385
|
* Structural slice of `GameEngine.registerSlotEntry`'s entry (ADR-212 §1) —
|
package/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EASL,OAAO,EACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAU,gBAAgB,EAAsB,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAe7G,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAgB5E,OAAO,EAkBL,QAAQ,EAER,cAAc,EACd,MAAM,EAiBN,UAAU,EACV,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAI/D;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB;IACtC,QAAQ,CAAC,IAAI,kBAAyB;CACvC;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,MAAM;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;gBAEb,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI1D;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,GAAG,UAAU,CAErF;AAED,4DAA4D;AAC5D,qBAAa,UAAW,YAAW,KAAK;IAiEpC,QAAQ,CAAC,EAAE,EAAE,OAAO;IAhEtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,8BAAqC;IACvD,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,uBAA8B;IACnD,wFAAwF;IACxF,QAAQ,CAAC,WAAW,iCAAwC;IAC5D,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAK1B;IAER;wEACoE;IACpE,OAAO,CAAC,YAAY;IAiBpB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwE;IACpG,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,KAAK,CAA2B;IACxC,6DAA6D;IAC7D,OAAO,CAAC,UAAU,CAAS;IAC3B,0EAA0E;IAC1E,OAAO,CAAC,eAAe,CAAS;gBAGrB,EAAE,EAAE,OAAO,EACpB,OAAO,EAAE,kBAAkB;IAiB7B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C,8CAA8C;IAC9C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C,wDAAwD;IACxD,aAAa,IAAI,MAAM,GAAG,SAAS;IAGnC,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,WAAW;IA4EnB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoOxC,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ;IA8BzC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAiDtB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IA4BhD,mBAAmB,IAAI,gBAAgB;IAIvC;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,EAAE;IAI7B;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE;QACpB,iBAAiB,IAAI;YAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;SAAE,CAAC;QACzD,iBAAiB,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;QAChD,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,KAAK,cAAc,GAAG,IAAI,CAAC;QAC1G,qBAAqB,CAAC,IAAI,MAAM,CAAC;KAClC,GAAG,IAAI;IA4GR;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAuClD;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IAqClC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,sBAAsB;IAiD9B;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAqC7E,UAAU,IAAI,OAAO;IAMrB;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc;IAa7F,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAE3D;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAiCjC,OAAO,CAAC,WAAW;IAwHnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAchC;;;;;;;;;OASG;IACH,OAAO,CAAC,4BAA4B;IA8CpC,OAAO,CAAC,oBAAoB;IAkN5B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4F;IAEzH;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAuCzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA2CxB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAkF9B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA8C5B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,cAAc;IAQtB,2EAA2E;IAC3E;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,mBAAmB;IA8E3B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IA0C7B,OAAO,CAAC,UAAU;IAQlB;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;CAkB9B;AAED;;;;GAIG;AACH,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;KAAE,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|