@sharpee/stdlib 3.0.0 → 3.1.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/actions/base/snapshot-utils.js +2 -2
- package/actions/base/snapshot-utils.js.map +1 -1
- package/actions/constants.d.ts +2 -0
- package/actions/constants.d.ts.map +1 -1
- package/actions/constants.js +3 -0
- package/actions/constants.js.map +1 -1
- package/actions/index.d.ts +2 -0
- package/actions/index.d.ts.map +1 -1
- package/actions/index.js +6 -0
- package/actions/index.js.map +1 -1
- package/actions/lifecycle/descriptor.d.ts +111 -0
- package/actions/lifecycle/descriptor.d.ts.map +1 -0
- package/actions/lifecycle/descriptor.js +22 -0
- package/actions/lifecycle/descriptor.js.map +1 -0
- package/actions/lifecycle/index.d.ts +14 -0
- package/actions/lifecycle/index.d.ts.map +1 -0
- package/actions/lifecycle/index.js +27 -0
- package/actions/lifecycle/index.js.map +1 -0
- package/actions/lifecycle/lifecycle-engine.d.ts +173 -0
- package/actions/lifecycle/lifecycle-engine.d.ts.map +1 -0
- package/actions/lifecycle/lifecycle-engine.js +247 -0
- package/actions/lifecycle/lifecycle-engine.js.map +1 -0
- package/actions/lifecycle/multi-object-lifecycle.d.ts +105 -0
- package/actions/lifecycle/multi-object-lifecycle.d.ts.map +1 -0
- package/actions/lifecycle/multi-object-lifecycle.js +136 -0
- package/actions/lifecycle/multi-object-lifecycle.js.map +1 -0
- package/actions/lifecycle/registry.d.ts +39 -0
- package/actions/lifecycle/registry.d.ts.map +1 -0
- package/actions/lifecycle/registry.js +128 -0
- package/actions/lifecycle/registry.js.map +1 -0
- package/actions/standard/asking/asking.d.ts +25 -0
- package/actions/standard/asking/asking.d.ts.map +1 -0
- package/actions/standard/asking/asking.js +114 -0
- package/actions/standard/asking/asking.js.map +1 -0
- package/actions/standard/asking/index.d.ts +5 -0
- package/actions/standard/asking/index.d.ts.map +1 -0
- package/actions/standard/asking/index.js +10 -0
- package/actions/standard/asking/index.js.map +1 -0
- package/actions/standard/attacking/attacking.d.ts +14 -0
- package/actions/standard/attacking/attacking.d.ts.map +1 -1
- package/actions/standard/attacking/attacking.js +138 -94
- package/actions/standard/attacking/attacking.js.map +1 -1
- package/actions/standard/attacking/index.d.ts +1 -1
- package/actions/standard/attacking/index.d.ts.map +1 -1
- package/actions/standard/attacking/index.js +2 -1
- package/actions/standard/attacking/index.js.map +1 -1
- package/actions/standard/climbing/climbing.d.ts +10 -0
- package/actions/standard/climbing/climbing.d.ts.map +1 -1
- package/actions/standard/climbing/climbing.js +51 -11
- package/actions/standard/climbing/climbing.js.map +1 -1
- package/actions/standard/closing/closing.d.ts +6 -0
- package/actions/standard/closing/closing.d.ts.map +1 -1
- package/actions/standard/closing/closing.js +37 -52
- package/actions/standard/closing/closing.js.map +1 -1
- package/actions/standard/cutting/cutting-messages.d.ts +17 -0
- package/actions/standard/cutting/cutting-messages.d.ts.map +1 -0
- package/actions/standard/cutting/cutting-messages.js +22 -0
- package/actions/standard/cutting/cutting-messages.js.map +1 -0
- package/actions/standard/cutting/cutting.d.ts +35 -0
- package/actions/standard/cutting/cutting.d.ts.map +1 -0
- package/actions/standard/cutting/cutting.js +228 -0
- package/actions/standard/cutting/cutting.js.map +1 -0
- package/actions/standard/cutting/index.d.ts +7 -0
- package/actions/standard/cutting/index.d.ts.map +1 -0
- package/actions/standard/cutting/index.js +12 -0
- package/actions/standard/cutting/index.js.map +1 -0
- package/actions/standard/deadly-room-death/deadly-room-death.d.ts +16 -0
- package/actions/standard/deadly-room-death/deadly-room-death.d.ts.map +1 -0
- package/actions/standard/deadly-room-death/deadly-room-death.js +44 -0
- package/actions/standard/deadly-room-death/deadly-room-death.js.map +1 -0
- package/actions/standard/deadly-room-death/index.d.ts +2 -0
- package/actions/standard/deadly-room-death/index.d.ts.map +1 -0
- package/actions/standard/deadly-room-death/index.js +6 -0
- package/actions/standard/deadly-room-death/index.js.map +1 -0
- package/actions/standard/digging/digging-messages.d.ts +17 -0
- package/actions/standard/digging/digging-messages.d.ts.map +1 -0
- package/actions/standard/digging/digging-messages.js +22 -0
- package/actions/standard/digging/digging-messages.js.map +1 -0
- package/actions/standard/digging/digging.d.ts +35 -0
- package/actions/standard/digging/digging.d.ts.map +1 -0
- package/actions/standard/digging/digging.js +228 -0
- package/actions/standard/digging/digging.js.map +1 -0
- package/actions/standard/digging/index.d.ts +7 -0
- package/actions/standard/digging/index.d.ts.map +1 -0
- package/actions/standard/digging/index.js +12 -0
- package/actions/standard/digging/index.js.map +1 -0
- package/actions/standard/drinking/drinking.d.ts +9 -0
- package/actions/standard/drinking/drinking.d.ts.map +1 -1
- package/actions/standard/drinking/drinking.js +40 -2
- package/actions/standard/drinking/drinking.js.map +1 -1
- package/actions/standard/dropping/dropping-types.d.ts +10 -18
- package/actions/standard/dropping/dropping-types.d.ts.map +1 -1
- package/actions/standard/dropping/dropping-types.js.map +1 -1
- package/actions/standard/dropping/dropping.d.ts +6 -0
- package/actions/standard/dropping/dropping.d.ts.map +1 -1
- package/actions/standard/dropping/dropping.js +86 -108
- package/actions/standard/dropping/dropping.js.map +1 -1
- package/actions/standard/eating/eating.d.ts +9 -0
- package/actions/standard/eating/eating.d.ts.map +1 -1
- package/actions/standard/eating/eating.js +40 -2
- package/actions/standard/eating/eating.js.map +1 -1
- package/actions/standard/entering/entering.d.ts +14 -5
- package/actions/standard/entering/entering.d.ts.map +1 -1
- package/actions/standard/entering/entering.js +45 -67
- package/actions/standard/entering/entering.js.map +1 -1
- package/actions/standard/examining/examining.d.ts +6 -0
- package/actions/standard/examining/examining.d.ts.map +1 -1
- package/actions/standard/examining/examining.js +35 -48
- package/actions/standard/examining/examining.js.map +1 -1
- package/actions/standard/exiting/exiting.d.ts +6 -0
- package/actions/standard/exiting/exiting.d.ts.map +1 -1
- package/actions/standard/exiting/exiting.js +54 -3
- package/actions/standard/exiting/exiting.js.map +1 -1
- package/actions/standard/giving/giving.d.ts +21 -0
- package/actions/standard/giving/giving.d.ts.map +1 -1
- package/actions/standard/giving/giving.js +78 -2
- package/actions/standard/giving/giving.js.map +1 -1
- package/actions/standard/going/going.d.ts +10 -16
- package/actions/standard/going/going.d.ts.map +1 -1
- package/actions/standard/going/going.js +122 -132
- package/actions/standard/going/going.js.map +1 -1
- package/actions/standard/hiding/hiding.d.ts +10 -1
- package/actions/standard/hiding/hiding.d.ts.map +1 -1
- package/actions/standard/hiding/hiding.js +43 -4
- package/actions/standard/hiding/hiding.js.map +1 -1
- package/actions/standard/index.d.ts +5 -0
- package/actions/standard/index.d.ts.map +1 -1
- package/actions/standard/index.js +19 -4
- package/actions/standard/index.js.map +1 -1
- package/actions/standard/inserting/inserting.d.ts +12 -0
- package/actions/standard/inserting/inserting.d.ts.map +1 -1
- package/actions/standard/inserting/inserting.js +70 -5
- package/actions/standard/inserting/inserting.js.map +1 -1
- package/actions/standard/listening/listening.d.ts +12 -1
- package/actions/standard/listening/listening.d.ts.map +1 -1
- package/actions/standard/listening/listening.js +45 -4
- package/actions/standard/listening/listening.js.map +1 -1
- package/actions/standard/locking/locking.d.ts +9 -0
- package/actions/standard/locking/locking.d.ts.map +1 -1
- package/actions/standard/locking/locking.js +62 -3
- package/actions/standard/locking/locking.js.map +1 -1
- package/actions/standard/opening/opening-messages.d.ts +3 -0
- package/actions/standard/opening/opening-messages.d.ts.map +1 -1
- package/actions/standard/opening/opening-messages.js +4 -0
- package/actions/standard/opening/opening-messages.js.map +1 -1
- package/actions/standard/opening/opening.d.ts +8 -0
- package/actions/standard/opening/opening.d.ts.map +1 -1
- package/actions/standard/opening/opening.js +73 -59
- package/actions/standard/opening/opening.js.map +1 -1
- package/actions/standard/pulling/pulling.d.ts +9 -0
- package/actions/standard/pulling/pulling.d.ts.map +1 -1
- package/actions/standard/pulling/pulling.js +40 -2
- package/actions/standard/pulling/pulling.js.map +1 -1
- package/actions/standard/pushing/pushing-types.d.ts +3 -6
- package/actions/standard/pushing/pushing-types.d.ts.map +1 -1
- package/actions/standard/pushing/pushing-types.js +3 -1
- package/actions/standard/pushing/pushing-types.js.map +1 -1
- package/actions/standard/pushing/pushing.d.ts +14 -5
- package/actions/standard/pushing/pushing.d.ts.map +1 -1
- package/actions/standard/pushing/pushing.js +51 -71
- package/actions/standard/pushing/pushing.js.map +1 -1
- package/actions/standard/putting/putting-types.d.ts +10 -21
- package/actions/standard/putting/putting-types.d.ts.map +1 -1
- package/actions/standard/putting/putting-types.js +0 -1
- package/actions/standard/putting/putting-types.js.map +1 -1
- package/actions/standard/putting/putting.d.ts +10 -0
- package/actions/standard/putting/putting.d.ts.map +1 -1
- package/actions/standard/putting/putting.js +133 -151
- package/actions/standard/putting/putting.js.map +1 -1
- package/actions/standard/reading/reading.d.ts +6 -0
- package/actions/standard/reading/reading.d.ts.map +1 -1
- package/actions/standard/reading/reading.js +36 -52
- package/actions/standard/reading/reading.js.map +1 -1
- package/actions/standard/removing/removing-types.d.ts +10 -16
- package/actions/standard/removing/removing-types.d.ts.map +1 -1
- package/actions/standard/removing/removing-types.js.map +1 -1
- package/actions/standard/removing/removing.d.ts +13 -0
- package/actions/standard/removing/removing.d.ts.map +1 -1
- package/actions/standard/removing/removing.js +147 -88
- package/actions/standard/removing/removing.js.map +1 -1
- package/actions/standard/searching/searching.d.ts +10 -0
- package/actions/standard/searching/searching.d.ts.map +1 -1
- package/actions/standard/searching/searching.js +44 -8
- package/actions/standard/searching/searching.js.map +1 -1
- package/actions/standard/showing/showing.d.ts +14 -0
- package/actions/standard/showing/showing.d.ts.map +1 -1
- package/actions/standard/showing/showing.js +62 -2
- package/actions/standard/showing/showing.js.map +1 -1
- package/actions/standard/smelling/smelling.d.ts +10 -0
- package/actions/standard/smelling/smelling.d.ts.map +1 -1
- package/actions/standard/smelling/smelling.js +41 -2
- package/actions/standard/smelling/smelling.js.map +1 -1
- package/actions/standard/switching_off/switching_off.d.ts +11 -1
- package/actions/standard/switching_off/switching_off.d.ts.map +1 -1
- package/actions/standard/switching_off/switching_off.js +44 -4
- package/actions/standard/switching_off/switching_off.js.map +1 -1
- package/actions/standard/switching_on/switching_on.d.ts +14 -5
- package/actions/standard/switching_on/switching_on.d.ts.map +1 -1
- package/actions/standard/switching_on/switching_on.js +45 -57
- package/actions/standard/switching_on/switching_on.js.map +1 -1
- package/actions/standard/taking/taking-types.d.ts +14 -36
- package/actions/standard/taking/taking-types.d.ts.map +1 -1
- package/actions/standard/taking/taking-types.js.map +1 -1
- package/actions/standard/taking/taking.d.ts +11 -0
- package/actions/standard/taking/taking.d.ts.map +1 -1
- package/actions/standard/taking/taking.js +102 -148
- package/actions/standard/taking/taking.js.map +1 -1
- package/actions/standard/taking_off/taking-off.d.ts +6 -0
- package/actions/standard/taking_off/taking-off.d.ts.map +1 -1
- package/actions/standard/taking_off/taking-off.js +57 -21
- package/actions/standard/taking_off/taking-off.js.map +1 -1
- package/actions/standard/talking/talking.d.ts +15 -0
- package/actions/standard/talking/talking.d.ts.map +1 -1
- package/actions/standard/talking/talking.js +52 -3
- package/actions/standard/talking/talking.js.map +1 -1
- package/actions/standard/telling/index.d.ts +5 -0
- package/actions/standard/telling/index.d.ts.map +1 -0
- package/actions/standard/telling/index.js +10 -0
- package/actions/standard/telling/index.js.map +1 -0
- package/actions/standard/telling/telling.d.ts +25 -0
- package/actions/standard/telling/telling.d.ts.map +1 -0
- package/actions/standard/telling/telling.js +114 -0
- package/actions/standard/telling/telling.js.map +1 -0
- package/actions/standard/throwing/throwing.d.ts +11 -0
- package/actions/standard/throwing/throwing.d.ts.map +1 -1
- package/actions/standard/throwing/throwing.js +69 -70
- package/actions/standard/throwing/throwing.js.map +1 -1
- package/actions/standard/tool-shared.d.ts +38 -0
- package/actions/standard/tool-shared.d.ts.map +1 -0
- package/actions/standard/tool-shared.js +74 -0
- package/actions/standard/tool-shared.js.map +1 -0
- package/actions/standard/touching/touching.d.ts +9 -0
- package/actions/standard/touching/touching.d.ts.map +1 -1
- package/actions/standard/touching/touching.js +40 -4
- package/actions/standard/touching/touching.js.map +1 -1
- package/actions/standard/turning/index.d.ts +5 -0
- package/actions/standard/turning/index.d.ts.map +1 -0
- package/actions/standard/turning/index.js +9 -0
- package/actions/standard/turning/index.js.map +1 -0
- package/actions/standard/turning/turning.d.ts +17 -0
- package/actions/standard/turning/turning.d.ts.map +1 -0
- package/actions/standard/turning/turning.js +25 -0
- package/actions/standard/turning/turning.js.map +1 -0
- package/actions/standard/unlocking/unlocking.d.ts +9 -0
- package/actions/standard/unlocking/unlocking.d.ts.map +1 -1
- package/actions/standard/unlocking/unlocking.js +62 -3
- package/actions/standard/unlocking/unlocking.js.map +1 -1
- package/actions/standard/wearing/wearing.d.ts +11 -1
- package/actions/standard/wearing/wearing.d.ts.map +1 -1
- package/actions/standard/wearing/wearing.js +57 -12
- package/actions/standard/wearing/wearing.js.map +1 -1
- package/channels/standard.d.ts +13 -10
- package/channels/standard.d.ts.map +1 -1
- package/channels/standard.js +14 -10
- package/channels/standard.js.map +1 -1
- package/death/deadly-room-transformer.d.ts +37 -0
- package/death/deadly-room-transformer.d.ts.map +1 -0
- package/death/deadly-room-transformer.js +79 -0
- package/death/deadly-room-transformer.js.map +1 -0
- package/death/index.d.ts +18 -0
- package/death/index.d.ts.map +1 -0
- package/death/index.js +28 -0
- package/death/index.js.map +1 -0
- package/death/kill-player.d.ts +49 -0
- package/death/kill-player.d.ts.map +1 -0
- package/death/kill-player.js +55 -0
- package/death/kill-player.js.map +1 -0
- package/death/player-death-events.d.ts +40 -0
- package/death/player-death-events.d.ts.map +1 -0
- package/death/player-death-events.js +27 -0
- package/death/player-death-events.js.map +1 -0
- package/death/probabilistic-death.d.ts +23 -0
- package/death/probabilistic-death.d.ts.map +1 -0
- package/death/probabilistic-death.js +27 -0
- package/death/probabilistic-death.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/npc/behaviors.d.ts.map +1 -1
- package/npc/behaviors.js +9 -8
- package/npc/behaviors.js.map +1 -1
- package/npc/npc-service.d.ts +8 -0
- package/npc/npc-service.d.ts.map +1 -1
- package/npc/npc-service.js +19 -18
- package/npc/npc-service.js.map +1 -1
- package/package.json +7 -7
|
@@ -5,18 +5,36 @@
|
|
|
5
5
|
* This action handles entering objects that have the ENTRY trait or
|
|
6
6
|
* are containers/supporters marked as enterable.
|
|
7
7
|
*
|
|
8
|
-
* Uses four-phase pattern
|
|
9
|
-
* 1. validate:
|
|
10
|
-
* 2. execute:
|
|
11
|
-
* 3. blocked:
|
|
12
|
-
* 4. report:
|
|
8
|
+
* Uses four-phase pattern:
|
|
9
|
+
* 1. validate: Check target exists and can be entered
|
|
10
|
+
* 2. execute: Move the actor into the target
|
|
11
|
+
* 3. blocked: Generate error events when validation fails
|
|
12
|
+
* 4. report: Generate success events
|
|
13
|
+
*
|
|
14
|
+
* Interceptor consultation (ADR-118) runs through the shared lifecycle
|
|
15
|
+
* engine (ADR-228) via `enteringLifecycle` — no hand-rolled hook plumbing.
|
|
13
16
|
*/
|
|
14
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.enteringAction = void 0;
|
|
18
|
+
exports.enteringAction = exports.enteringLifecycle = void 0;
|
|
16
19
|
const world_model_1 = require("@sharpee/world-model");
|
|
17
20
|
const constants_1 = require("../../constants");
|
|
18
21
|
const entering_messages_1 = require("./entering-messages");
|
|
19
22
|
const utils_1 = require("../../../utils");
|
|
23
|
+
const lifecycle_1 = require("../../lifecycle");
|
|
24
|
+
/**
|
|
25
|
+
* Interceptor surface (ADR-228): the entered target is the only
|
|
26
|
+
* consultable entity of an ENTER command.
|
|
27
|
+
*/
|
|
28
|
+
exports.enteringLifecycle = {
|
|
29
|
+
actionId: constants_1.IFActions.ENTERING,
|
|
30
|
+
slots: [
|
|
31
|
+
{
|
|
32
|
+
id: 'target',
|
|
33
|
+
actionIds: [constants_1.IFActions.ENTERING],
|
|
34
|
+
resolve: (ctx) => ctx.command.directObject?.entity
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
};
|
|
20
38
|
function getEnteringSharedData(context) {
|
|
21
39
|
return context.sharedData;
|
|
22
40
|
}
|
|
@@ -41,7 +59,6 @@ exports.enteringAction = {
|
|
|
41
59
|
validate(context) {
|
|
42
60
|
const actor = context.player;
|
|
43
61
|
const target = context.command.directObject?.entity;
|
|
44
|
-
const sharedData = getEnteringSharedData(context);
|
|
45
62
|
// Validate target
|
|
46
63
|
if (!target) {
|
|
47
64
|
return {
|
|
@@ -49,25 +66,10 @@ exports.enteringAction = {
|
|
|
49
66
|
error: entering_messages_1.EnteringMessages.NO_TARGET
|
|
50
67
|
};
|
|
51
68
|
}
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// Store for later phases
|
|
57
|
-
sharedData.interceptor = interceptor;
|
|
58
|
-
sharedData.interceptorData = interceptorData;
|
|
59
|
-
// === PRE-VALIDATE HOOK ===
|
|
60
|
-
// Called before standard validation - can block early
|
|
61
|
-
if (interceptor?.preValidate) {
|
|
62
|
-
const result = interceptor.preValidate(target, context.world, actor.id, interceptorData);
|
|
63
|
-
if (result !== null) {
|
|
64
|
-
return {
|
|
65
|
-
valid: result.valid,
|
|
66
|
-
error: result.error,
|
|
67
|
-
params: result.params
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
69
|
+
const state = (0, lifecycle_1.resolveLifecycle)(context, exports.enteringLifecycle);
|
|
70
|
+
const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
|
|
71
|
+
if (preVeto)
|
|
72
|
+
return preVeto;
|
|
71
73
|
// Check scope - must be able to reach the target
|
|
72
74
|
const scopeCheck = context.requireScope(target, types_1.ScopeLevel.REACHABLE);
|
|
73
75
|
if (!scopeCheck.ok) {
|
|
@@ -98,18 +100,10 @@ exports.enteringAction = {
|
|
|
98
100
|
params: { container: (0, utils_1.nounPhraseFor)(target) }
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
if (result !== null) {
|
|
106
|
-
return {
|
|
107
|
-
valid: result.valid,
|
|
108
|
-
error: result.error,
|
|
109
|
-
params: result.params
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
}
|
|
103
|
+
// Canonical placement (ADR-228): postValidate runs after ALL standard validation
|
|
104
|
+
const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
|
|
105
|
+
if (postVeto)
|
|
106
|
+
return postVeto;
|
|
113
107
|
return { valid: true };
|
|
114
108
|
},
|
|
115
109
|
/**
|
|
@@ -134,13 +128,9 @@ exports.enteringAction = {
|
|
|
134
128
|
preposition
|
|
135
129
|
};
|
|
136
130
|
sharedData.enteringState = state;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const interceptorData = sharedData.interceptorData || {};
|
|
141
|
-
if (interceptor?.postExecute) {
|
|
142
|
-
interceptor.postExecute(target, context.world, actor.id, interceptorData);
|
|
143
|
-
}
|
|
131
|
+
const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
|
|
132
|
+
if (lifecycleState)
|
|
133
|
+
(0, lifecycle_1.runPostExecute)(context, lifecycleState);
|
|
144
134
|
},
|
|
145
135
|
/**
|
|
146
136
|
* Report events after successful entering
|
|
@@ -172,15 +162,9 @@ exports.enteringAction = {
|
|
|
172
162
|
fromLocation: state.fromLocation,
|
|
173
163
|
preposition: state.preposition
|
|
174
164
|
})];
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const interceptor = sharedData.interceptor;
|
|
179
|
-
const interceptorData = sharedData.interceptorData || {};
|
|
180
|
-
if (interceptor?.postReport && target) {
|
|
181
|
-
const result = interceptor.postReport(target, context.world, context.player.id, interceptorData);
|
|
182
|
-
(0, world_model_1.applyInterceptorReportResult)(events, 'if.event.entered', result, context);
|
|
183
|
-
}
|
|
165
|
+
const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
|
|
166
|
+
if (lifecycleState)
|
|
167
|
+
(0, lifecycle_1.runPostReport)(context, lifecycleState, events, 'if.event.entered');
|
|
184
168
|
return events;
|
|
185
169
|
},
|
|
186
170
|
/**
|
|
@@ -189,20 +173,8 @@ exports.enteringAction = {
|
|
|
189
173
|
*/
|
|
190
174
|
blocked(context, result) {
|
|
191
175
|
const target = context.command.directObject?.entity;
|
|
192
|
-
const sharedData = getEnteringSharedData(context);
|
|
193
|
-
// === ON-BLOCKED HOOK ===
|
|
194
|
-
// Called when action is blocked - can provide custom blocked handling
|
|
195
|
-
const interceptor = sharedData.interceptor;
|
|
196
|
-
const interceptorData = sharedData.interceptorData || {};
|
|
197
|
-
if (interceptor?.onBlocked && target && result.error) {
|
|
198
|
-
const customEffects = interceptor.onBlocked(target, context.world, context.player.id, result.error, interceptorData);
|
|
199
|
-
if (customEffects !== null) {
|
|
200
|
-
// Interceptor provided custom blocked effects
|
|
201
|
-
return customEffects.map(effect => context.event(effect.type, effect.payload));
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
176
|
// Standard blocked handling — params carry EntityInfo (ADR-158)
|
|
205
|
-
|
|
177
|
+
const events = [context.event('if.event.entered', {
|
|
206
178
|
blocked: true,
|
|
207
179
|
messageId: `${context.action.id}.${result.error}`,
|
|
208
180
|
params: { place: target ? (0, utils_1.nounPhraseFor)(target) : undefined, ...result.params },
|
|
@@ -210,6 +182,12 @@ exports.enteringAction = {
|
|
|
210
182
|
targetId: target?.id,
|
|
211
183
|
targetName: target?.name
|
|
212
184
|
})];
|
|
185
|
+
if (result.error) {
|
|
186
|
+
const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
|
|
187
|
+
if (lifecycleState)
|
|
188
|
+
(0, lifecycle_1.runOnBlocked)(context, lifecycleState, events, 'if.event.entered', result.error);
|
|
189
|
+
}
|
|
190
|
+
return events;
|
|
213
191
|
},
|
|
214
192
|
metadata: {
|
|
215
193
|
requiresDirectObject: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entering.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/entering/entering.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"entering.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/entering/entering.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { Action } from '../../enhanced-types';
|
|
14
14
|
import { ActionMetadata } from '../../../validation';
|
|
15
|
+
import { ActionLifecycleDescriptor } from '../../lifecycle';
|
|
16
|
+
/**
|
|
17
|
+
* Interceptor surface (ADR-228): the examined target is the only
|
|
18
|
+
* consultable entity of an EXAMINE command.
|
|
19
|
+
*/
|
|
20
|
+
export declare const examiningLifecycle: ActionLifecycleDescriptor;
|
|
15
21
|
export declare const examiningAction: Action & {
|
|
16
22
|
metadata: ActionMetadata;
|
|
17
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examining.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"examining.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,yBAShC,CAAC;AAOF,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA6IhE,CAAC"}
|
|
@@ -12,15 +12,27 @@
|
|
|
12
12
|
* 4. blocked: Generate error events when validation fails
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.examiningAction = void 0;
|
|
15
|
+
exports.examiningAction = exports.examiningLifecycle = void 0;
|
|
16
16
|
const constants_1 = require("../../constants");
|
|
17
17
|
const types_1 = require("../../../scope/types");
|
|
18
18
|
const emit_illustrations_1 = require("../../helpers/emit-illustrations");
|
|
19
19
|
const data_builder_types_1 = require("../../data-builder-types");
|
|
20
20
|
const world_model_1 = require("@sharpee/world-model");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const lifecycle_1 = require("../../lifecycle");
|
|
22
|
+
/**
|
|
23
|
+
* Interceptor surface (ADR-228): the examined target is the only
|
|
24
|
+
* consultable entity of an EXAMINE command.
|
|
25
|
+
*/
|
|
26
|
+
exports.examiningLifecycle = {
|
|
27
|
+
actionId: constants_1.IFActions.EXAMINING,
|
|
28
|
+
slots: [
|
|
29
|
+
{
|
|
30
|
+
id: 'target',
|
|
31
|
+
actionIds: [constants_1.IFActions.EXAMINING],
|
|
32
|
+
resolve: (ctx) => ctx.command.directObject?.entity
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
};
|
|
24
36
|
// Import our data builder
|
|
25
37
|
const examining_data_1 = require("./examining-data");
|
|
26
38
|
const examining_messages_1 = require("./examining-messages");
|
|
@@ -57,20 +69,10 @@ exports.examiningAction = {
|
|
|
57
69
|
error: examining_messages_1.ExaminingMessages.NO_TARGET
|
|
58
70
|
};
|
|
59
71
|
}
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const sharedData = getExaminingSharedData(context);
|
|
65
|
-
sharedData.interceptor = interceptor;
|
|
66
|
-
sharedData.interceptorData = interceptorData;
|
|
67
|
-
// === PRE-VALIDATE HOOK ===
|
|
68
|
-
if (interceptor?.preValidate) {
|
|
69
|
-
const result = interceptor.preValidate(noun, context.world, context.player.id, interceptorData);
|
|
70
|
-
if (result !== null && !result.valid) {
|
|
71
|
-
return { valid: false, error: result.error, params: result.params };
|
|
72
|
-
}
|
|
73
|
-
}
|
|
72
|
+
const state = (0, lifecycle_1.resolveLifecycle)(context, exports.examiningLifecycle);
|
|
73
|
+
const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
|
|
74
|
+
if (preVeto)
|
|
75
|
+
return preVeto;
|
|
74
76
|
// Check scope - must be able to see the target (unless examining yourself)
|
|
75
77
|
if (noun.id !== actor.id) {
|
|
76
78
|
const scopeCheck = context.requireScope(noun, types_1.ScopeLevel.VISIBLE);
|
|
@@ -78,24 +80,19 @@ exports.examiningAction = {
|
|
|
78
80
|
return scopeCheck.error;
|
|
79
81
|
}
|
|
80
82
|
}
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return { valid: false, error: result.error, params: result.params };
|
|
86
|
-
}
|
|
87
|
-
}
|
|
83
|
+
// Canonical placement (ADR-228): postValidate runs after ALL standard validation
|
|
84
|
+
const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
|
|
85
|
+
if (postVeto)
|
|
86
|
+
return postVeto;
|
|
88
87
|
// Valid - all event data will be built in report()
|
|
89
88
|
return { valid: true };
|
|
90
89
|
},
|
|
91
90
|
execute(context) {
|
|
92
91
|
// No standard mutations - examining is a read-only action.
|
|
93
|
-
//
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
sharedData.interceptor.postExecute(noun, context.world, context.player.id, sharedData.interceptorData);
|
|
98
|
-
}
|
|
92
|
+
// Interceptor postExecute hooks may still mutate (ADR-228).
|
|
93
|
+
const state = (0, lifecycle_1.getLifecycleState)(context);
|
|
94
|
+
if (state)
|
|
95
|
+
(0, lifecycle_1.runPostExecute)(context, state);
|
|
99
96
|
},
|
|
100
97
|
report(context) {
|
|
101
98
|
// report() is only called on success - validation passed
|
|
@@ -131,14 +128,9 @@ exports.examiningAction = {
|
|
|
131
128
|
isContentsMessage: true
|
|
132
129
|
}));
|
|
133
130
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const result = sharedData.interceptor.postReport(noun, context.world, context.player.id, sharedData.interceptorData);
|
|
138
|
-
if (result) {
|
|
139
|
-
(0, world_model_1.applyInterceptorReportResult)(events, 'if.event.examined', result, context);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
131
|
+
const state = (0, lifecycle_1.getLifecycleState)(context);
|
|
132
|
+
if (state)
|
|
133
|
+
(0, lifecycle_1.runPostReport)(context, state, events, 'if.event.examined');
|
|
142
134
|
return events;
|
|
143
135
|
},
|
|
144
136
|
blocked(context, result) {
|
|
@@ -154,15 +146,10 @@ exports.examiningAction = {
|
|
|
154
146
|
targetId: noun?.id,
|
|
155
147
|
targetName: noun?.name
|
|
156
148
|
})];
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (customEffects) {
|
|
162
|
-
for (const effect of customEffects) {
|
|
163
|
-
events.push(context.event(effect.type, effect.payload));
|
|
164
|
-
}
|
|
165
|
-
}
|
|
149
|
+
if (result.error) {
|
|
150
|
+
const state = (0, lifecycle_1.getLifecycleState)(context);
|
|
151
|
+
if (state)
|
|
152
|
+
(0, lifecycle_1.runOnBlocked)(context, state, events, 'if.event.examined', result.error);
|
|
166
153
|
}
|
|
167
154
|
return events;
|
|
168
155
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examining.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAIH,+CAA4C;AAE5C,gDAAkD;AAElD,yEAAqE;AACrE,iEAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"examining.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
* This action handles exiting objects that the actor is currently inside/on.
|
|
5
5
|
*/
|
|
6
6
|
import { Action } from '../../enhanced-types';
|
|
7
|
+
import { ActionLifecycleDescriptor } from '../../lifecycle';
|
|
8
|
+
/**
|
|
9
|
+
* Interceptor surface (ADR-228): the container/supporter being exited —
|
|
10
|
+
* `on exiting it` on a boat, cage, or bed fires here.
|
|
11
|
+
*/
|
|
12
|
+
export declare const exitingLifecycle: ActionLifecycleDescriptor;
|
|
7
13
|
import { ActionMetadata } from '../../../validation';
|
|
8
14
|
export declare const exitingAction: Action & {
|
|
9
15
|
metadata: ActionMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exiting.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAA0D,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"exiting.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAA0D,MAAM,sBAAsB,CAAC;AAWtG,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAgBzB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,yBAS9B,CAAC;AAoBF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA0K9D,CAAC"}
|
|
@@ -5,11 +5,41 @@
|
|
|
5
5
|
* This action handles exiting objects that the actor is currently inside/on.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.exitingAction = void 0;
|
|
8
|
+
exports.exitingAction = exports.exitingLifecycle = void 0;
|
|
9
9
|
const world_model_1 = require("@sharpee/world-model");
|
|
10
10
|
const constants_1 = require("../../constants");
|
|
11
11
|
const exiting_messages_1 = require("./exiting-messages");
|
|
12
12
|
const utils_1 = require("../../../utils");
|
|
13
|
+
const lifecycle_1 = require("../../lifecycle");
|
|
14
|
+
/**
|
|
15
|
+
* The enterable the actor is currently inside/on — exiting's affected
|
|
16
|
+
* entity is never a parsed object (EXIT takes no noun), so it resolves
|
|
17
|
+
* implicitly from the actor's location (ADR-228 D3 implicit-entity slot).
|
|
18
|
+
* Resolves undefined when the actor is directly in a room.
|
|
19
|
+
*/
|
|
20
|
+
function resolveCurrentContainer(context) {
|
|
21
|
+
const currentLocation = context.world.getLocation(context.player.id);
|
|
22
|
+
if (!currentLocation)
|
|
23
|
+
return undefined;
|
|
24
|
+
const container = context.world.getEntity(currentLocation);
|
|
25
|
+
if (!container || container.has(world_model_1.TraitType.ROOM))
|
|
26
|
+
return undefined;
|
|
27
|
+
return container;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Interceptor surface (ADR-228): the container/supporter being exited —
|
|
31
|
+
* `on exiting it` on a boat, cage, or bed fires here.
|
|
32
|
+
*/
|
|
33
|
+
exports.exitingLifecycle = {
|
|
34
|
+
actionId: constants_1.IFActions.EXITING,
|
|
35
|
+
slots: [
|
|
36
|
+
{
|
|
37
|
+
id: 'container',
|
|
38
|
+
actionIds: [constants_1.IFActions.EXITING],
|
|
39
|
+
resolve: resolveCurrentContainer
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
};
|
|
13
43
|
function getExitingSharedData(context) {
|
|
14
44
|
return context.sharedData;
|
|
15
45
|
}
|
|
@@ -28,6 +58,10 @@ exports.exitingAction = {
|
|
|
28
58
|
validate(context) {
|
|
29
59
|
const actor = context.player;
|
|
30
60
|
const currentLocation = context.world.getLocation(actor.id);
|
|
61
|
+
const state = (0, lifecycle_1.resolveLifecycle)(context, exports.exitingLifecycle);
|
|
62
|
+
const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
|
|
63
|
+
if (preVeto)
|
|
64
|
+
return preVeto;
|
|
31
65
|
if (!currentLocation) {
|
|
32
66
|
return {
|
|
33
67
|
valid: false,
|
|
@@ -68,6 +102,10 @@ exports.exitingAction = {
|
|
|
68
102
|
};
|
|
69
103
|
}
|
|
70
104
|
}
|
|
105
|
+
// Canonical placement (ADR-228): postValidate runs after ALL standard validation
|
|
106
|
+
const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
|
|
107
|
+
if (postVeto)
|
|
108
|
+
return postVeto;
|
|
71
109
|
return { valid: true };
|
|
72
110
|
},
|
|
73
111
|
/**
|
|
@@ -98,6 +136,9 @@ exports.exitingAction = {
|
|
|
98
136
|
};
|
|
99
137
|
const sharedData = getExitingSharedData(context);
|
|
100
138
|
sharedData.exitingState = state;
|
|
139
|
+
const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
|
|
140
|
+
if (lifecycleState)
|
|
141
|
+
(0, lifecycle_1.runPostExecute)(context, lifecycleState);
|
|
101
142
|
},
|
|
102
143
|
/**
|
|
103
144
|
* Report phase - generates events after successful execution
|
|
@@ -120,7 +161,7 @@ exports.exitingAction = {
|
|
|
120
161
|
// params carry EntityInfo for the formatter chain (ADR-158);
|
|
121
162
|
// re-derive from the entity since it's available via context.world.
|
|
122
163
|
const fromEntity = context.world.getEntity(state.fromLocation);
|
|
123
|
-
|
|
164
|
+
const events = [context.event('if.event.exited', {
|
|
124
165
|
messageId: `${context.action.id}.exited`,
|
|
125
166
|
params: { place: fromEntity ? (0, utils_1.nounPhraseFor)(fromEntity) : { name: state.fromLocationName } },
|
|
126
167
|
fromLocation: state.fromLocation,
|
|
@@ -128,18 +169,28 @@ exports.exitingAction = {
|
|
|
128
169
|
toLocation: state.toLocation,
|
|
129
170
|
preposition: state.preposition
|
|
130
171
|
})];
|
|
172
|
+
const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
|
|
173
|
+
if (lifecycleState)
|
|
174
|
+
(0, lifecycle_1.runPostReport)(context, lifecycleState, events, 'if.event.exited');
|
|
175
|
+
return events;
|
|
131
176
|
},
|
|
132
177
|
/**
|
|
133
178
|
* Generate events when validation fails
|
|
134
179
|
* Called instead of execute/report when validate returns invalid
|
|
135
180
|
*/
|
|
136
181
|
blocked(context, result) {
|
|
137
|
-
|
|
182
|
+
const events = [context.event('if.event.exited', {
|
|
138
183
|
blocked: true,
|
|
139
184
|
messageId: `${context.action.id}.${result.error}`,
|
|
140
185
|
params: result.params || {},
|
|
141
186
|
reason: result.error
|
|
142
187
|
})];
|
|
188
|
+
if (result.error) {
|
|
189
|
+
const state = (0, lifecycle_1.getLifecycleState)(context);
|
|
190
|
+
if (state)
|
|
191
|
+
(0, lifecycle_1.runOnBlocked)(context, state, events, 'if.event.exited', result.error);
|
|
192
|
+
}
|
|
193
|
+
return events;
|
|
143
194
|
},
|
|
144
195
|
metadata: {
|
|
145
196
|
requiresDirectObject: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exiting.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,
|
|
1
|
+
{"version":3,"file":"exiting.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,30 @@
|
|
|
9
9
|
* 2. execute: Transfer item, store result in sharedData
|
|
10
10
|
* 3. blocked: Generate events when validation fails
|
|
11
11
|
* 4. report: Generate success events from sharedData
|
|
12
|
+
*
|
|
13
|
+
* Interceptor consultation (ADR-118) runs through the shared lifecycle
|
|
14
|
+
* engine (ADR-228) via `givingLifecycle` — no hand-rolled hook plumbing.
|
|
12
15
|
*/
|
|
13
16
|
import { Action } from '../../enhanced-types';
|
|
14
17
|
import { ActionMetadata } from '../../../validation';
|
|
18
|
+
import { ActionLifecycleDescriptor } from '../../lifecycle';
|
|
19
|
+
/**
|
|
20
|
+
* Interceptor surface (ADR-228): BOTH the given item and the recipient
|
|
21
|
+
* are consulted (D3-B published order: direct object first), each side's
|
|
22
|
+
* sharedData seeded with the other entity's identity (D3 sub-ruling —
|
|
23
|
+
* symmetric context, same shape as putting's descriptor).
|
|
24
|
+
*
|
|
25
|
+
* Item-side limitation (ADR-118 hook audit): before this wiring the item
|
|
26
|
+
* side was fully dead — no validate-phase block was possible; giving's
|
|
27
|
+
* only story seam was the recipient's execute-phase-only ADR-090
|
|
28
|
+
* capability behavior (see execute() below). The item slot is declared
|
|
29
|
+
* anyway per the Phase-5 ruling — documenting the limitation beats
|
|
30
|
+
* silently omitting the slot. Note also: when an ADR-090 capability
|
|
31
|
+
* behavior handles the give, report() is delegated to it and no
|
|
32
|
+
* `if.event.given` primary event exists for a postReport override to
|
|
33
|
+
* target (the engine's defensive warn fires instead; `emit` still works).
|
|
34
|
+
*/
|
|
35
|
+
export declare const givingLifecycle: ActionLifecycleDescriptor;
|
|
15
36
|
export declare const givingAction: Action & {
|
|
16
37
|
metadata: ActionMetadata;
|
|
17
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"giving.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/giving/giving.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"giving.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/giving/giving.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAerD,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,yBA0B7B,CAAC;AA0BF,eAAO,MAAM,YAAY,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAuS7D,CAAC"}
|