@sharpee/core 0.9.56-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +48 -0
- package/dist/constants/attributes.d.ts +32 -0
- package/dist/constants/attributes.d.ts.map +1 -0
- package/dist/constants/attributes.js +53 -0
- package/dist/constants/attributes.js.map +1 -0
- package/dist/constants/core-events.d.ts +37 -0
- package/dist/constants/core-events.d.ts.map +1 -0
- package/dist/constants/core-events.js +50 -0
- package/dist/constants/core-events.js.map +1 -0
- package/dist/constants/entity-types.d.ts +15 -0
- package/dist/constants/entity-types.d.ts.map +1 -0
- package/dist/constants/entity-types.js +27 -0
- package/dist/constants/entity-types.js.map +1 -0
- package/dist/constants/index.d.ts +22 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +41 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/relationships.d.ts +25 -0
- package/dist/constants/relationships.d.ts.map +1 -0
- package/dist/constants/relationships.js +55 -0
- package/dist/constants/relationships.js.map +1 -0
- package/dist/debug/index.d.ts +5 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/index.js +21 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/debug/types.d.ts +65 -0
- package/dist/debug/types.d.ts.map +1 -0
- package/dist/debug/types.js +39 -0
- package/dist/debug/types.js.map +1 -0
- package/dist/events/event-factory.d.ts +81 -0
- package/dist/events/event-factory.d.ts.map +1 -0
- package/dist/events/event-factory.js +74 -0
- package/dist/events/event-factory.js.map +1 -0
- package/dist/events/event-helpers.d.ts +118 -0
- package/dist/events/event-helpers.d.ts.map +1 -0
- package/dist/events/event-helpers.js +151 -0
- package/dist/events/event-helpers.js.map +1 -0
- package/dist/events/event-registry.d.ts +154 -0
- package/dist/events/event-registry.d.ts.map +1 -0
- package/dist/events/event-registry.js +24 -0
- package/dist/events/event-registry.js.map +1 -0
- package/dist/events/event-source.d.ts +39 -0
- package/dist/events/event-source.d.ts.map +1 -0
- package/dist/events/event-source.js +57 -0
- package/dist/events/event-source.js.map +1 -0
- package/dist/events/event-system.d.ts +27 -0
- package/dist/events/event-system.d.ts.map +1 -0
- package/dist/events/event-system.js +64 -0
- package/dist/events/event-system.js.map +1 -0
- package/dist/events/game-events.d.ts +245 -0
- package/dist/events/game-events.d.ts.map +1 -0
- package/dist/events/game-events.js +250 -0
- package/dist/events/game-events.js.map +1 -0
- package/dist/events/index.d.ts +19 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +51 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/platform-events.d.ts +161 -0
- package/dist/events/platform-events.d.ts.map +1 -0
- package/dist/events/platform-events.js +135 -0
- package/dist/events/platform-events.js.map +1 -0
- package/dist/events/semantic-event-source.d.ts +85 -0
- package/dist/events/semantic-event-source.d.ts.map +1 -0
- package/dist/events/semantic-event-source.js +147 -0
- package/dist/events/semantic-event-source.js.map +1 -0
- package/dist/events/standard-events.d.ts +26 -0
- package/dist/events/standard-events.d.ts.map +1 -0
- package/dist/events/standard-events.js +27 -0
- package/dist/events/standard-events.js.map +1 -0
- package/dist/events/system-event.d.ts +62 -0
- package/dist/events/system-event.d.ts.map +1 -0
- package/dist/events/system-event.js +55 -0
- package/dist/events/system-event.js.map +1 -0
- package/dist/events/typed-event.d.ts +69 -0
- package/dist/events/typed-event.d.ts.map +1 -0
- package/dist/events/typed-event.js +20 -0
- package/dist/events/typed-event.js.map +1 -0
- package/dist/events/types.d.ts +105 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +4 -0
- package/dist/events/types.js.map +1 -0
- package/dist/execution/index.d.ts +2 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +23 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/types.d.ts +117 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +4 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +20 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/registry.d.ts +61 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +153 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +84 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +15 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/ifid/ifid.d.ts +30 -0
- package/dist/ifid/ifid.d.ts.map +1 -0
- package/dist/ifid/ifid.js +52 -0
- package/dist/ifid/ifid.js.map +1 -0
- package/dist/ifid/index.d.ts +2 -0
- package/dist/ifid/index.d.ts.map +1 -0
- package/dist/ifid/index.js +9 -0
- package/dist/ifid/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata/index.d.ts +2 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +3 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/story-metadata.d.ts +64 -0
- package/dist/metadata/story-metadata.d.ts.map +1 -0
- package/dist/metadata/story-metadata.js +5 -0
- package/dist/metadata/story-metadata.js.map +1 -0
- package/dist/query/index.d.ts +9 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +25 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/query-manager.d.ts +86 -0
- package/dist/query/query-manager.d.ts.map +1 -0
- package/dist/query/query-manager.js +391 -0
- package/dist/query/query-manager.js.map +1 -0
- package/dist/query/types.d.ts +188 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query/types.js +106 -0
- package/dist/query/types.js.map +1 -0
- package/dist/random/index.d.ts +5 -0
- package/dist/random/index.d.ts.map +1 -0
- package/dist/random/index.js +9 -0
- package/dist/random/index.js.map +1 -0
- package/dist/random/seeded-random.d.ts +32 -0
- package/dist/random/seeded-random.d.ts.map +1 -0
- package/dist/random/seeded-random.js +62 -0
- package/dist/random/seeded-random.js.map +1 -0
- package/dist/rules/compatibility.d.ts +46 -0
- package/dist/rules/compatibility.d.ts.map +1 -0
- package/dist/rules/compatibility.js +62 -0
- package/dist/rules/compatibility.js.map +1 -0
- package/dist/rules/condition-builder.d.ts +23 -0
- package/dist/rules/condition-builder.d.ts.map +1 -0
- package/dist/rules/condition-builder.js +16 -0
- package/dist/rules/condition-builder.js.map +1 -0
- package/dist/rules/helpers.d.ts +51 -0
- package/dist/rules/helpers.d.ts.map +1 -0
- package/dist/rules/helpers.js +111 -0
- package/dist/rules/helpers.js.map +1 -0
- package/dist/rules/index.d.ts +12 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +34 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/rule-system.d.ts +6 -0
- package/dist/rules/rule-system.d.ts.map +1 -0
- package/dist/rules/rule-system.js +10 -0
- package/dist/rules/rule-system.js.map +1 -0
- package/dist/rules/rule-world-adapter.d.ts +43 -0
- package/dist/rules/rule-world-adapter.d.ts.map +1 -0
- package/dist/rules/rule-world-adapter.js +74 -0
- package/dist/rules/rule-world-adapter.js.map +1 -0
- package/dist/rules/simple-rule-system.d.ts +36 -0
- package/dist/rules/simple-rule-system.d.ts.map +1 -0
- package/dist/rules/simple-rule-system.js +135 -0
- package/dist/rules/simple-rule-system.js.map +1 -0
- package/dist/rules/types.d.ts +64 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +6 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/types/attribute.d.ts +40 -0
- package/dist/types/attribute.d.ts.map +1 -0
- package/dist/types/attribute.js +4 -0
- package/dist/types/attribute.js.map +1 -0
- package/dist/types/entity.d.ts +47 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entity.js +4 -0
- package/dist/types/entity.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/relationship.d.ts +44 -0
- package/dist/types/relationship.d.ts.map +1 -0
- package/dist/types/relationship.js +4 -0
- package/dist/types/relationship.js.map +1 -0
- package/dist/types/result.d.ts +81 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +79 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/save-data.d.ts +264 -0
- package/dist/types/save-data.d.ts.map +1 -0
- package/dist/types/save-data.js +6 -0
- package/dist/types/save-data.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-system.d.ts","sourceRoot":"","sources":["../../src/rules/rule-system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Create a rule system
|
|
4
|
+
* This is a re-export from compatibility for backward compatibility
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createRuleSystem = void 0;
|
|
8
|
+
var compatibility_1 = require("./compatibility");
|
|
9
|
+
Object.defineProperty(exports, "createRuleSystem", { enumerable: true, get: function () { return compatibility_1.createRuleSystem; } });
|
|
10
|
+
//# sourceMappingURL=rule-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-system.js","sourceRoot":"","sources":["../../src/rules/rule-system.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAAgE;AAA1C,iHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter to make existing world model work with simple rule system
|
|
3
|
+
*/
|
|
4
|
+
import { EntityId } from '../types/entity';
|
|
5
|
+
import { IRuleWorld } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Simple adapter for any object-based world state
|
|
8
|
+
*/
|
|
9
|
+
export declare class SimpleRuleWorldAdapter implements IRuleWorld {
|
|
10
|
+
private worldState;
|
|
11
|
+
private playerId;
|
|
12
|
+
private currentLocationId?;
|
|
13
|
+
constructor(worldState: any, playerId?: EntityId, currentLocationId?: EntityId | undefined);
|
|
14
|
+
/**
|
|
15
|
+
* Get an entity by ID
|
|
16
|
+
*/
|
|
17
|
+
getEntity(id: EntityId): any;
|
|
18
|
+
/**
|
|
19
|
+
* Update an entity with new attributes
|
|
20
|
+
*/
|
|
21
|
+
updateEntity(id: EntityId, changes: Record<string, any>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get the player entity
|
|
24
|
+
*/
|
|
25
|
+
getPlayer(): any;
|
|
26
|
+
/**
|
|
27
|
+
* Get the current location entity
|
|
28
|
+
*/
|
|
29
|
+
getCurrentLocation(): any;
|
|
30
|
+
/**
|
|
31
|
+
* Set the player ID
|
|
32
|
+
*/
|
|
33
|
+
setPlayerId(playerId: EntityId): void;
|
|
34
|
+
/**
|
|
35
|
+
* Set the current location ID
|
|
36
|
+
*/
|
|
37
|
+
setCurrentLocationId(locationId: EntityId): void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a simple rule world from basic state
|
|
41
|
+
*/
|
|
42
|
+
export declare function createSimpleRuleWorld(worldState: any, playerId?: EntityId, currentLocationId?: EntityId): IRuleWorld;
|
|
43
|
+
//# sourceMappingURL=rule-world-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-world-adapter.d.ts","sourceRoot":"","sources":["../../src/rules/rule-world-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,qBAAa,sBAAuB,YAAW,UAAU;IAErD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,iBAAiB,CAAC;gBAFlB,UAAU,EAAE,GAAG,EACf,QAAQ,GAAE,QAAmB,EAC7B,iBAAiB,CAAC,EAAE,QAAQ,YAAA;IAGtC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG;IAI5B;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAa9D;;OAEG;IACH,SAAS,IAAI,GAAG;IAIhB;;OAEG;IACH,kBAAkB,IAAI,GAAG;IAIzB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI;CAGjD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,GAAG,EACf,QAAQ,GAAE,QAAmB,EAC7B,iBAAiB,CAAC,EAAE,QAAQ,GAC3B,UAAU,CAEZ"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adapter to make existing world model work with simple rule system
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SimpleRuleWorldAdapter = void 0;
|
|
7
|
+
exports.createSimpleRuleWorld = createSimpleRuleWorld;
|
|
8
|
+
/**
|
|
9
|
+
* Simple adapter for any object-based world state
|
|
10
|
+
*/
|
|
11
|
+
class SimpleRuleWorldAdapter {
|
|
12
|
+
worldState;
|
|
13
|
+
playerId;
|
|
14
|
+
currentLocationId;
|
|
15
|
+
constructor(worldState, playerId = 'player', currentLocationId) {
|
|
16
|
+
this.worldState = worldState;
|
|
17
|
+
this.playerId = playerId;
|
|
18
|
+
this.currentLocationId = currentLocationId;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get an entity by ID
|
|
22
|
+
*/
|
|
23
|
+
getEntity(id) {
|
|
24
|
+
return this.worldState.entities?.[id] || this.worldState[id];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Update an entity with new attributes
|
|
28
|
+
*/
|
|
29
|
+
updateEntity(id, changes) {
|
|
30
|
+
const entity = this.getEntity(id);
|
|
31
|
+
if (entity) {
|
|
32
|
+
if (entity.attributes) {
|
|
33
|
+
// For entities with attributes object
|
|
34
|
+
Object.assign(entity.attributes, changes);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// For flat entity objects
|
|
38
|
+
Object.assign(entity, changes);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the player entity
|
|
44
|
+
*/
|
|
45
|
+
getPlayer() {
|
|
46
|
+
return this.getEntity(this.playerId);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the current location entity
|
|
50
|
+
*/
|
|
51
|
+
getCurrentLocation() {
|
|
52
|
+
return this.currentLocationId ? this.getEntity(this.currentLocationId) : undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Set the player ID
|
|
56
|
+
*/
|
|
57
|
+
setPlayerId(playerId) {
|
|
58
|
+
this.playerId = playerId;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Set the current location ID
|
|
62
|
+
*/
|
|
63
|
+
setCurrentLocationId(locationId) {
|
|
64
|
+
this.currentLocationId = locationId;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.SimpleRuleWorldAdapter = SimpleRuleWorldAdapter;
|
|
68
|
+
/**
|
|
69
|
+
* Create a simple rule world from basic state
|
|
70
|
+
*/
|
|
71
|
+
function createSimpleRuleWorld(worldState, playerId = 'player', currentLocationId) {
|
|
72
|
+
return new SimpleRuleWorldAdapter(worldState, playerId, currentLocationId);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=rule-world-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-world-adapter.js","sourceRoot":"","sources":["../../src/rules/rule-world-adapter.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAsEH,sDAMC;AAvED;;GAEG;AACH,MAAa,sBAAsB;IAEvB;IACA;IACA;IAHV,YACU,UAAe,EACf,WAAqB,QAAQ,EAC7B,iBAA4B;QAF5B,eAAU,GAAV,UAAU,CAAK;QACf,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,sBAAiB,GAAjB,iBAAiB,CAAW;IACnC,CAAC;IAEJ;;OAEG;IACH,SAAS,CAAC,EAAY;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAY,EAAE,OAA4B;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,sCAAsC;gBACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAkB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,UAAoB;QACvC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACtC,CAAC;CACF;AAzDD,wDAyDC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,UAAe,EACf,WAAqB,QAAQ,EAC7B,iBAA4B;IAE5B,OAAO,IAAI,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Rule System Implementation
|
|
3
|
+
*/
|
|
4
|
+
import { ISemanticEvent } from '../events/types';
|
|
5
|
+
import { IRule, IRuleResult, IRuleWorld, ISimpleRuleSystem } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Simple rule system implementation
|
|
8
|
+
*/
|
|
9
|
+
export declare class SimpleRuleSystemImpl implements ISimpleRuleSystem {
|
|
10
|
+
private rules;
|
|
11
|
+
/**
|
|
12
|
+
* Add a rule to the system
|
|
13
|
+
*/
|
|
14
|
+
addRule(rule: IRule): void;
|
|
15
|
+
/**
|
|
16
|
+
* Remove a rule from the system
|
|
17
|
+
*/
|
|
18
|
+
removeRule(ruleId: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Get all rules
|
|
21
|
+
*/
|
|
22
|
+
getRules(): IRule[];
|
|
23
|
+
/**
|
|
24
|
+
* Process an event through all matching rules
|
|
25
|
+
*/
|
|
26
|
+
processEvent(event: ISemanticEvent, world: IRuleWorld): IRuleResult;
|
|
27
|
+
/**
|
|
28
|
+
* Find rules that match the given event
|
|
29
|
+
*/
|
|
30
|
+
private getMatchingRules;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create a new simple rule system
|
|
34
|
+
*/
|
|
35
|
+
export declare function createSimpleRuleSystem(): ISimpleRuleSystem;
|
|
36
|
+
//# sourceMappingURL=simple-rule-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-rule-system.d.ts","sourceRoot":"","sources":["../../src/rules/simple-rule-system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAiB,MAAM,SAAS,CAAC;AAE3F;;GAEG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,OAAO,CAAC,KAAK,CAAiC;IAE9C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAI1B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,QAAQ,IAAI,KAAK,EAAE;IAInB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW;IA8FnE;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAezB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple Rule System Implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SimpleRuleSystemImpl = void 0;
|
|
7
|
+
exports.createSimpleRuleSystem = createSimpleRuleSystem;
|
|
8
|
+
const event_system_1 = require("../events/event-system");
|
|
9
|
+
const standard_events_1 = require("../events/standard-events");
|
|
10
|
+
/**
|
|
11
|
+
* Simple rule system implementation
|
|
12
|
+
*/
|
|
13
|
+
class SimpleRuleSystemImpl {
|
|
14
|
+
rules = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* Add a rule to the system
|
|
17
|
+
*/
|
|
18
|
+
addRule(rule) {
|
|
19
|
+
this.rules.set(rule.id, rule);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Remove a rule from the system
|
|
23
|
+
*/
|
|
24
|
+
removeRule(ruleId) {
|
|
25
|
+
this.rules.delete(ruleId);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all rules
|
|
29
|
+
*/
|
|
30
|
+
getRules() {
|
|
31
|
+
return Array.from(this.rules.values());
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Process an event through all matching rules
|
|
35
|
+
*/
|
|
36
|
+
processEvent(event, world) {
|
|
37
|
+
// Find matching rules
|
|
38
|
+
const matchingRules = this.getMatchingRules(event);
|
|
39
|
+
// Sort by priority (higher first)
|
|
40
|
+
matchingRules.sort((a, b) => (b.priority || 0) - (a.priority || 0));
|
|
41
|
+
let prevented = false;
|
|
42
|
+
let message;
|
|
43
|
+
const allEvents = [];
|
|
44
|
+
const allChanges = [];
|
|
45
|
+
// Process each matching rule
|
|
46
|
+
for (const rule of matchingRules) {
|
|
47
|
+
// Check condition if present
|
|
48
|
+
if (rule.condition && !rule.condition(event, world)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Execute the rule
|
|
52
|
+
let result;
|
|
53
|
+
try {
|
|
54
|
+
result = rule.action(event, world);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error(`Error executing rule ${rule.id}:`, error);
|
|
58
|
+
continue; // Skip this rule and continue with others
|
|
59
|
+
}
|
|
60
|
+
// Handle prevention (first rule to prevent wins)
|
|
61
|
+
if (result.prevent && !prevented) {
|
|
62
|
+
prevented = true;
|
|
63
|
+
message = result.message;
|
|
64
|
+
// Create a narrative event for the prevent message
|
|
65
|
+
if (result.message) {
|
|
66
|
+
allEvents.push((0, event_system_1.createEvent)(standard_events_1.StandardEventTypes.NARRATIVE, { message: result.message }, {
|
|
67
|
+
actor: event.entities.actor,
|
|
68
|
+
location: event.entities.location
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
// When prevented, stop processing more rules
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
// Collect events
|
|
75
|
+
if (result.events) {
|
|
76
|
+
allEvents.push(...result.events);
|
|
77
|
+
}
|
|
78
|
+
// Handle message (create narrative event)
|
|
79
|
+
if (result.message && !result.prevent) {
|
|
80
|
+
// Keep the message for the result
|
|
81
|
+
if (!message) {
|
|
82
|
+
message = result.message;
|
|
83
|
+
}
|
|
84
|
+
allEvents.push((0, event_system_1.createEvent)(standard_events_1.StandardEventTypes.NARRATIVE, { message: result.message }, {
|
|
85
|
+
actor: event.entities.actor,
|
|
86
|
+
location: event.entities.location
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
// Collect entity changes
|
|
90
|
+
if (result.changes) {
|
|
91
|
+
allChanges.push(...result.changes);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Apply entity changes to the world
|
|
95
|
+
for (const change of allChanges) {
|
|
96
|
+
const entity = world.getEntity(change.entityId);
|
|
97
|
+
if (entity) {
|
|
98
|
+
world.updateEntity(change.entityId, {
|
|
99
|
+
[change.attribute]: change.value
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
prevent: prevented,
|
|
105
|
+
message,
|
|
106
|
+
events: allEvents,
|
|
107
|
+
changes: allChanges
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Find rules that match the given event
|
|
112
|
+
*/
|
|
113
|
+
getMatchingRules(event) {
|
|
114
|
+
return Array.from(this.rules.values()).filter(rule => {
|
|
115
|
+
// Handle wildcards
|
|
116
|
+
if (rule.eventType === '*')
|
|
117
|
+
return true;
|
|
118
|
+
// Handle category wildcards (e.g., 'item:*')
|
|
119
|
+
if (rule.eventType.endsWith(':*')) {
|
|
120
|
+
const category = rule.eventType.split(':')[0];
|
|
121
|
+
return event.type.startsWith(`${category}:`);
|
|
122
|
+
}
|
|
123
|
+
// Exact match
|
|
124
|
+
return rule.eventType === event.type;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.SimpleRuleSystemImpl = SimpleRuleSystemImpl;
|
|
129
|
+
/**
|
|
130
|
+
* Create a new simple rule system
|
|
131
|
+
*/
|
|
132
|
+
function createSimpleRuleSystem() {
|
|
133
|
+
return new SimpleRuleSystemImpl();
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=simple-rule-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-rule-system.js","sourceRoot":"","sources":["../../src/rules/simple-rule-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Rule System v2 - Clean, functional design
|
|
3
|
+
*/
|
|
4
|
+
import { EntityId } from '../types/entity';
|
|
5
|
+
import { ISemanticEvent } from '../events/types';
|
|
6
|
+
/**
|
|
7
|
+
* Simple world interface for rules - no complex abstractions
|
|
8
|
+
*/
|
|
9
|
+
export interface IRuleWorld {
|
|
10
|
+
getEntity(id: EntityId): any;
|
|
11
|
+
updateEntity(id: EntityId, changes: Record<string, any>): void;
|
|
12
|
+
getPlayer(): any;
|
|
13
|
+
getCurrentLocation(): any;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Result of executing a rule
|
|
17
|
+
*/
|
|
18
|
+
export interface IRuleResult {
|
|
19
|
+
/** Prevent the original action from happening */
|
|
20
|
+
prevent?: boolean;
|
|
21
|
+
/** Message to display to the player */
|
|
22
|
+
message?: string;
|
|
23
|
+
/** Additional events to generate */
|
|
24
|
+
events?: ISemanticEvent[];
|
|
25
|
+
/** Entity changes to apply */
|
|
26
|
+
changes?: IEntityChange[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A change to apply to an entity
|
|
30
|
+
*/
|
|
31
|
+
export interface IEntityChange {
|
|
32
|
+
entityId: EntityId;
|
|
33
|
+
attribute: string;
|
|
34
|
+
value: any;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A simple rule definition
|
|
38
|
+
*/
|
|
39
|
+
export interface IRule {
|
|
40
|
+
/** Unique identifier for the rule */
|
|
41
|
+
id: string;
|
|
42
|
+
/** Event type this rule responds to (e.g., 'item:taking') */
|
|
43
|
+
eventType: string;
|
|
44
|
+
/** Optional condition - if false, rule doesn't fire */
|
|
45
|
+
condition?: (event: ISemanticEvent, world: IRuleWorld) => boolean;
|
|
46
|
+
/** Action to take when rule fires */
|
|
47
|
+
action: (event: ISemanticEvent, world: IRuleWorld) => IRuleResult;
|
|
48
|
+
/** Priority (higher = runs first) */
|
|
49
|
+
priority?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Simple rule system interface
|
|
53
|
+
*/
|
|
54
|
+
export interface ISimpleRuleSystem {
|
|
55
|
+
/** Add a rule */
|
|
56
|
+
addRule(rule: IRule): void;
|
|
57
|
+
/** Remove a rule */
|
|
58
|
+
removeRule(ruleId: string): void;
|
|
59
|
+
/** Process an event through all matching rules */
|
|
60
|
+
processEvent(event: ISemanticEvent, world: IRuleWorld): IRuleResult;
|
|
61
|
+
/** Get all rules */
|
|
62
|
+
getRules(): IRule[];
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,CAAC;IAC7B,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC/D,SAAS,IAAI,GAAG,CAAC;IACjB,kBAAkB,IAAI,GAAG,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAClE,qCAAqC;IACrC,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,KAAK,WAAW,CAAC;IAClE,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,oBAAoB;IACpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kDAAkD;IAClD,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IACpE,oBAAoB;IACpB,QAAQ,IAAI,KAAK,EAAE,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Possible types for attribute values
|
|
3
|
+
*/
|
|
4
|
+
export type AttributeValue = string | number | boolean | null | IAttributeObject | AttributeArray;
|
|
5
|
+
/**
|
|
6
|
+
* An object containing attribute values
|
|
7
|
+
*/
|
|
8
|
+
export interface IAttributeObject {
|
|
9
|
+
[key: string]: AttributeValue;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* An array of attribute values
|
|
13
|
+
*/
|
|
14
|
+
export type AttributeArray = AttributeValue[];
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for an attribute
|
|
17
|
+
*/
|
|
18
|
+
export interface IAttributeConfig {
|
|
19
|
+
/**
|
|
20
|
+
* Type validation for this attribute
|
|
21
|
+
*/
|
|
22
|
+
type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
|
|
23
|
+
/**
|
|
24
|
+
* Whether this attribute is required for the entity
|
|
25
|
+
*/
|
|
26
|
+
required?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Default value if none is provided
|
|
29
|
+
*/
|
|
30
|
+
default?: AttributeValue;
|
|
31
|
+
/**
|
|
32
|
+
* Custom validation function
|
|
33
|
+
*/
|
|
34
|
+
validate?: (value: AttributeValue) => boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A map of attribute configurations
|
|
38
|
+
*/
|
|
39
|
+
export type AttributeConfigMap = Record<string, IAttributeConfig>;
|
|
40
|
+
//# sourceMappingURL=attribute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute.d.ts","sourceRoot":"","sources":["../../src/types/attribute.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,gBAAgB,GAChB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAE5D;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../src/types/attribute.ts"],"names":[],"mappings":";AAAA,uCAAuC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unique identifier for entities
|
|
3
|
+
*/
|
|
4
|
+
export type EntityId = string;
|
|
5
|
+
/**
|
|
6
|
+
* The base Entity interface representing any object in a narrative system
|
|
7
|
+
*/
|
|
8
|
+
export interface IEntity {
|
|
9
|
+
/**
|
|
10
|
+
* Unique identifier for this entity
|
|
11
|
+
*/
|
|
12
|
+
id: EntityId;
|
|
13
|
+
/**
|
|
14
|
+
* The entity type, used for categorization and type checking
|
|
15
|
+
*/
|
|
16
|
+
type: string;
|
|
17
|
+
/**
|
|
18
|
+
* Arbitrary attributes/properties of the entity
|
|
19
|
+
*/
|
|
20
|
+
attributes: Record<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Relationships to other entities, organized by relationship type
|
|
23
|
+
*/
|
|
24
|
+
relationships: Record<string, EntityId[]>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Minimal information needed to create a new entity
|
|
28
|
+
*/
|
|
29
|
+
export interface IEntityCreationParams {
|
|
30
|
+
type: string;
|
|
31
|
+
attributes?: Record<string, unknown>;
|
|
32
|
+
relationships?: Record<string, EntityId[]>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Configuration for how entity operations should be performed
|
|
36
|
+
*/
|
|
37
|
+
export interface IEntityOperationOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Whether to merge arrays in relationships instead of replacing them
|
|
40
|
+
*/
|
|
41
|
+
mergeRelationships?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Whether to validate relationship target existence
|
|
44
|
+
*/
|
|
45
|
+
validateRelationships?: boolean;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/types/entity.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CAC3C;AAID;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/types/entity.ts"],"names":[],"mappings":";AAAA,oCAAoC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for Sharpee
|
|
3
|
+
* These are generic types that can be used by any narrative system
|
|
4
|
+
*/
|
|
5
|
+
export * from './entity';
|
|
6
|
+
export * from './relationship';
|
|
7
|
+
export * from './attribute';
|
|
8
|
+
export * from './result';
|
|
9
|
+
export * from './save-data';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/core/src/types/index.ts
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
/**
|
|
19
|
+
* Core type definitions for Sharpee
|
|
20
|
+
* These are generic types that can be used by any narrative system
|
|
21
|
+
*/
|
|
22
|
+
__exportStar(require("./entity"), exports);
|
|
23
|
+
__exportStar(require("./relationship"), exports);
|
|
24
|
+
__exportStar(require("./attribute"), exports);
|
|
25
|
+
__exportStar(require("./result"), exports);
|
|
26
|
+
__exportStar(require("./save-data"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,mCAAmC;;;;;;;;;;;;;;;;AAEnC;;;GAGG;AAEH,2CAAyB;AACzB,iDAA+B;AAC/B,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { EntityId } from './entity';
|
|
2
|
+
/**
|
|
3
|
+
* A generic relationship between two entities
|
|
4
|
+
*/
|
|
5
|
+
export interface IRelationship {
|
|
6
|
+
/**
|
|
7
|
+
* The source entity of the relationship
|
|
8
|
+
*/
|
|
9
|
+
sourceId: EntityId;
|
|
10
|
+
/**
|
|
11
|
+
* The type of relationship (can be any string)
|
|
12
|
+
*/
|
|
13
|
+
type: string;
|
|
14
|
+
/**
|
|
15
|
+
* The target entity of the relationship
|
|
16
|
+
*/
|
|
17
|
+
targetId: EntityId;
|
|
18
|
+
/**
|
|
19
|
+
* Optional metadata for the relationship
|
|
20
|
+
*/
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Configuration for creating a relationship
|
|
25
|
+
*/
|
|
26
|
+
export interface IRelationshipConfig {
|
|
27
|
+
/**
|
|
28
|
+
* Whether this relationship creates an inverse relationship automatically
|
|
29
|
+
*/
|
|
30
|
+
bidirectional?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* If bidirectional, the name of the inverse relationship
|
|
33
|
+
*/
|
|
34
|
+
inverseType?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this relationship is exclusive (replaces previous relationships of same type)
|
|
37
|
+
*/
|
|
38
|
+
exclusive?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Map of relationship type configurations
|
|
42
|
+
*/
|
|
43
|
+
export type RelationshipConfigMap = Record<string, IRelationshipConfig>;
|
|
44
|
+
//# sourceMappingURL=relationship.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../src/types/relationship.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/types/relationship.ts"],"names":[],"mappings":";AAAA,0CAA0C"}
|