@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.
Files changed (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/dist/constants/attributes.d.ts +32 -0
  4. package/dist/constants/attributes.d.ts.map +1 -0
  5. package/dist/constants/attributes.js +53 -0
  6. package/dist/constants/attributes.js.map +1 -0
  7. package/dist/constants/core-events.d.ts +37 -0
  8. package/dist/constants/core-events.d.ts.map +1 -0
  9. package/dist/constants/core-events.js +50 -0
  10. package/dist/constants/core-events.js.map +1 -0
  11. package/dist/constants/entity-types.d.ts +15 -0
  12. package/dist/constants/entity-types.d.ts.map +1 -0
  13. package/dist/constants/entity-types.js +27 -0
  14. package/dist/constants/entity-types.js.map +1 -0
  15. package/dist/constants/index.d.ts +22 -0
  16. package/dist/constants/index.d.ts.map +1 -0
  17. package/dist/constants/index.js +41 -0
  18. package/dist/constants/index.js.map +1 -0
  19. package/dist/constants/relationships.d.ts +25 -0
  20. package/dist/constants/relationships.d.ts.map +1 -0
  21. package/dist/constants/relationships.js +55 -0
  22. package/dist/constants/relationships.js.map +1 -0
  23. package/dist/debug/index.d.ts +5 -0
  24. package/dist/debug/index.d.ts.map +1 -0
  25. package/dist/debug/index.js +21 -0
  26. package/dist/debug/index.js.map +1 -0
  27. package/dist/debug/types.d.ts +65 -0
  28. package/dist/debug/types.d.ts.map +1 -0
  29. package/dist/debug/types.js +39 -0
  30. package/dist/debug/types.js.map +1 -0
  31. package/dist/events/event-factory.d.ts +81 -0
  32. package/dist/events/event-factory.d.ts.map +1 -0
  33. package/dist/events/event-factory.js +74 -0
  34. package/dist/events/event-factory.js.map +1 -0
  35. package/dist/events/event-helpers.d.ts +118 -0
  36. package/dist/events/event-helpers.d.ts.map +1 -0
  37. package/dist/events/event-helpers.js +151 -0
  38. package/dist/events/event-helpers.js.map +1 -0
  39. package/dist/events/event-registry.d.ts +154 -0
  40. package/dist/events/event-registry.d.ts.map +1 -0
  41. package/dist/events/event-registry.js +24 -0
  42. package/dist/events/event-registry.js.map +1 -0
  43. package/dist/events/event-source.d.ts +39 -0
  44. package/dist/events/event-source.d.ts.map +1 -0
  45. package/dist/events/event-source.js +57 -0
  46. package/dist/events/event-source.js.map +1 -0
  47. package/dist/events/event-system.d.ts +27 -0
  48. package/dist/events/event-system.d.ts.map +1 -0
  49. package/dist/events/event-system.js +64 -0
  50. package/dist/events/event-system.js.map +1 -0
  51. package/dist/events/game-events.d.ts +245 -0
  52. package/dist/events/game-events.d.ts.map +1 -0
  53. package/dist/events/game-events.js +250 -0
  54. package/dist/events/game-events.js.map +1 -0
  55. package/dist/events/index.d.ts +19 -0
  56. package/dist/events/index.d.ts.map +1 -0
  57. package/dist/events/index.js +51 -0
  58. package/dist/events/index.js.map +1 -0
  59. package/dist/events/platform-events.d.ts +161 -0
  60. package/dist/events/platform-events.d.ts.map +1 -0
  61. package/dist/events/platform-events.js +135 -0
  62. package/dist/events/platform-events.js.map +1 -0
  63. package/dist/events/semantic-event-source.d.ts +85 -0
  64. package/dist/events/semantic-event-source.d.ts.map +1 -0
  65. package/dist/events/semantic-event-source.js +147 -0
  66. package/dist/events/semantic-event-source.js.map +1 -0
  67. package/dist/events/standard-events.d.ts +26 -0
  68. package/dist/events/standard-events.d.ts.map +1 -0
  69. package/dist/events/standard-events.js +27 -0
  70. package/dist/events/standard-events.js.map +1 -0
  71. package/dist/events/system-event.d.ts +62 -0
  72. package/dist/events/system-event.d.ts.map +1 -0
  73. package/dist/events/system-event.js +55 -0
  74. package/dist/events/system-event.js.map +1 -0
  75. package/dist/events/typed-event.d.ts +69 -0
  76. package/dist/events/typed-event.d.ts.map +1 -0
  77. package/dist/events/typed-event.js +20 -0
  78. package/dist/events/typed-event.js.map +1 -0
  79. package/dist/events/types.d.ts +105 -0
  80. package/dist/events/types.d.ts.map +1 -0
  81. package/dist/events/types.js +4 -0
  82. package/dist/events/types.js.map +1 -0
  83. package/dist/execution/index.d.ts +2 -0
  84. package/dist/execution/index.d.ts.map +1 -0
  85. package/dist/execution/index.js +23 -0
  86. package/dist/execution/index.js.map +1 -0
  87. package/dist/execution/types.d.ts +117 -0
  88. package/dist/execution/types.d.ts.map +1 -0
  89. package/dist/execution/types.js +4 -0
  90. package/dist/execution/types.js.map +1 -0
  91. package/dist/extensions/index.d.ts +3 -0
  92. package/dist/extensions/index.d.ts.map +1 -0
  93. package/dist/extensions/index.js +20 -0
  94. package/dist/extensions/index.js.map +1 -0
  95. package/dist/extensions/registry.d.ts +61 -0
  96. package/dist/extensions/registry.d.ts.map +1 -0
  97. package/dist/extensions/registry.js +153 -0
  98. package/dist/extensions/registry.js.map +1 -0
  99. package/dist/extensions/types.d.ts +84 -0
  100. package/dist/extensions/types.d.ts.map +1 -0
  101. package/dist/extensions/types.js +15 -0
  102. package/dist/extensions/types.js.map +1 -0
  103. package/dist/ifid/ifid.d.ts +30 -0
  104. package/dist/ifid/ifid.d.ts.map +1 -0
  105. package/dist/ifid/ifid.js +52 -0
  106. package/dist/ifid/ifid.js.map +1 -0
  107. package/dist/ifid/index.d.ts +2 -0
  108. package/dist/ifid/index.d.ts.map +1 -0
  109. package/dist/ifid/index.js +9 -0
  110. package/dist/ifid/index.js.map +1 -0
  111. package/dist/index.d.ts +11 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +36 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/metadata/index.d.ts +2 -0
  116. package/dist/metadata/index.d.ts.map +1 -0
  117. package/dist/metadata/index.js +3 -0
  118. package/dist/metadata/index.js.map +1 -0
  119. package/dist/metadata/story-metadata.d.ts +64 -0
  120. package/dist/metadata/story-metadata.d.ts.map +1 -0
  121. package/dist/metadata/story-metadata.js +5 -0
  122. package/dist/metadata/story-metadata.js.map +1 -0
  123. package/dist/query/index.d.ts +9 -0
  124. package/dist/query/index.d.ts.map +1 -0
  125. package/dist/query/index.js +25 -0
  126. package/dist/query/index.js.map +1 -0
  127. package/dist/query/query-manager.d.ts +86 -0
  128. package/dist/query/query-manager.d.ts.map +1 -0
  129. package/dist/query/query-manager.js +391 -0
  130. package/dist/query/query-manager.js.map +1 -0
  131. package/dist/query/types.d.ts +188 -0
  132. package/dist/query/types.d.ts.map +1 -0
  133. package/dist/query/types.js +106 -0
  134. package/dist/query/types.js.map +1 -0
  135. package/dist/random/index.d.ts +5 -0
  136. package/dist/random/index.d.ts.map +1 -0
  137. package/dist/random/index.js +9 -0
  138. package/dist/random/index.js.map +1 -0
  139. package/dist/random/seeded-random.d.ts +32 -0
  140. package/dist/random/seeded-random.d.ts.map +1 -0
  141. package/dist/random/seeded-random.js +62 -0
  142. package/dist/random/seeded-random.js.map +1 -0
  143. package/dist/rules/compatibility.d.ts +46 -0
  144. package/dist/rules/compatibility.d.ts.map +1 -0
  145. package/dist/rules/compatibility.js +62 -0
  146. package/dist/rules/compatibility.js.map +1 -0
  147. package/dist/rules/condition-builder.d.ts +23 -0
  148. package/dist/rules/condition-builder.d.ts.map +1 -0
  149. package/dist/rules/condition-builder.js +16 -0
  150. package/dist/rules/condition-builder.js.map +1 -0
  151. package/dist/rules/helpers.d.ts +51 -0
  152. package/dist/rules/helpers.d.ts.map +1 -0
  153. package/dist/rules/helpers.js +111 -0
  154. package/dist/rules/helpers.js.map +1 -0
  155. package/dist/rules/index.d.ts +12 -0
  156. package/dist/rules/index.d.ts.map +1 -0
  157. package/dist/rules/index.js +34 -0
  158. package/dist/rules/index.js.map +1 -0
  159. package/dist/rules/rule-system.d.ts +6 -0
  160. package/dist/rules/rule-system.d.ts.map +1 -0
  161. package/dist/rules/rule-system.js +10 -0
  162. package/dist/rules/rule-system.js.map +1 -0
  163. package/dist/rules/rule-world-adapter.d.ts +43 -0
  164. package/dist/rules/rule-world-adapter.d.ts.map +1 -0
  165. package/dist/rules/rule-world-adapter.js +74 -0
  166. package/dist/rules/rule-world-adapter.js.map +1 -0
  167. package/dist/rules/simple-rule-system.d.ts +36 -0
  168. package/dist/rules/simple-rule-system.d.ts.map +1 -0
  169. package/dist/rules/simple-rule-system.js +135 -0
  170. package/dist/rules/simple-rule-system.js.map +1 -0
  171. package/dist/rules/types.d.ts +64 -0
  172. package/dist/rules/types.d.ts.map +1 -0
  173. package/dist/rules/types.js +6 -0
  174. package/dist/rules/types.js.map +1 -0
  175. package/dist/types/attribute.d.ts +40 -0
  176. package/dist/types/attribute.d.ts.map +1 -0
  177. package/dist/types/attribute.js +4 -0
  178. package/dist/types/attribute.js.map +1 -0
  179. package/dist/types/entity.d.ts +47 -0
  180. package/dist/types/entity.d.ts.map +1 -0
  181. package/dist/types/entity.js +4 -0
  182. package/dist/types/entity.js.map +1 -0
  183. package/dist/types/index.d.ts +10 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +27 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/relationship.d.ts +44 -0
  188. package/dist/types/relationship.d.ts.map +1 -0
  189. package/dist/types/relationship.js +4 -0
  190. package/dist/types/relationship.js.map +1 -0
  191. package/dist/types/result.d.ts +81 -0
  192. package/dist/types/result.d.ts.map +1 -0
  193. package/dist/types/result.js +79 -0
  194. package/dist/types/result.js.map +1 -0
  195. package/dist/types/save-data.d.ts +264 -0
  196. package/dist/types/save-data.d.ts.map +1 -0
  197. package/dist/types/save-data.js +6 -0
  198. package/dist/types/save-data.js.map +1 -0
  199. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Core types for the PC communication query system
4
+ *
5
+ * These types define the structure of queries, responses, and validation
6
+ * for the client query system (ADR-018).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.StandardValidators = exports.QueryType = exports.QuerySource = void 0;
10
+ /**
11
+ * Sources that can initiate queries
12
+ */
13
+ var QuerySource;
14
+ (function (QuerySource) {
15
+ /** System-level queries (save, quit, restart) */
16
+ QuerySource["SYSTEM"] = "system";
17
+ /** Parser disambiguation queries */
18
+ QuerySource["DISAMBIGUATION"] = "disambiguation";
19
+ /** NPC dialogue queries */
20
+ QuerySource["NPC"] = "npc";
21
+ /** Game mechanic queries (passwords, combinations) */
22
+ QuerySource["GAME_MECHANIC"] = "mechanic";
23
+ /** Narrative-driven queries */
24
+ QuerySource["NARRATIVE"] = "narrative";
25
+ })(QuerySource || (exports.QuerySource = QuerySource = {}));
26
+ /**
27
+ * Types of queries that can be presented
28
+ */
29
+ var QueryType;
30
+ (function (QueryType) {
31
+ /** Simple yes/no question */
32
+ QueryType["YES_NO"] = "yes_no";
33
+ /** Multiple choice with predefined options */
34
+ QueryType["MULTIPLE_CHOICE"] = "multiple_choice";
35
+ /** Open-ended text input */
36
+ QueryType["FREE_TEXT"] = "free_text";
37
+ /** Numeric input only */
38
+ QueryType["NUMERIC"] = "numeric";
39
+ /** Special type for disambiguation */
40
+ QueryType["DISAMBIGUATION"] = "disambiguation";
41
+ })(QueryType || (exports.QueryType = QueryType = {}));
42
+ /**
43
+ * Standard validators
44
+ */
45
+ exports.StandardValidators = {
46
+ /** Validate yes/no responses */
47
+ yesNo: (response) => {
48
+ const normalized = response.toLowerCase().trim();
49
+ const yesVariants = ['yes', 'y', 'yeah', 'yep', 'sure', 'ok', 'okay'];
50
+ const noVariants = ['no', 'n', 'nope', 'nah', 'cancel'];
51
+ if (yesVariants.includes(normalized)) {
52
+ return { valid: true, normalized: true };
53
+ }
54
+ if (noVariants.includes(normalized)) {
55
+ return { valid: true, normalized: false };
56
+ }
57
+ return {
58
+ valid: false,
59
+ message: 'Please answer yes or no.',
60
+ hint: 'You can also use y/n'
61
+ };
62
+ },
63
+ /** Validate numeric responses */
64
+ numeric: (response, min, max) => {
65
+ const num = parseInt(response.trim(), 10);
66
+ if (isNaN(num)) {
67
+ return {
68
+ valid: false,
69
+ message: 'Please enter a number.'
70
+ };
71
+ }
72
+ if (min !== undefined && num < min) {
73
+ return {
74
+ valid: false,
75
+ message: `Please enter a number at least ${min}.`
76
+ };
77
+ }
78
+ if (max !== undefined && num > max) {
79
+ return {
80
+ valid: false,
81
+ message: `Please enter a number no more than ${max}.`
82
+ };
83
+ }
84
+ return { valid: true, normalized: num };
85
+ },
86
+ /** Validate multiple choice responses */
87
+ multipleChoice: (response, options) => {
88
+ const trimmed = response.trim();
89
+ // Check if it's a number
90
+ const num = parseInt(trimmed, 10);
91
+ if (!isNaN(num) && num >= 1 && num <= options.length) {
92
+ return { valid: true, normalized: num - 1 };
93
+ }
94
+ // Check if it matches an option (case insensitive)
95
+ const index = options.findIndex(opt => opt.toLowerCase().includes(trimmed.toLowerCase()) ||
96
+ trimmed.toLowerCase().includes(opt.toLowerCase()));
97
+ if (index >= 0) {
98
+ return { valid: true, normalized: index };
99
+ }
100
+ return {
101
+ valid: false,
102
+ message: `Please choose a number 1-${options.length} or type part of an option.`
103
+ };
104
+ }
105
+ };
106
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Random utilities exports
3
+ */
4
+ export { SeededRandom, createSeededRandom } from './seeded-random';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/random/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Random utilities exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSeededRandom = void 0;
7
+ var seeded_random_1 = require("./seeded-random");
8
+ Object.defineProperty(exports, "createSeededRandom", { enumerable: true, get: function () { return seeded_random_1.createSeededRandom; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/random/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAAmE;AAA5C,mHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Seeded Random Number Generator Interface
3
+ *
4
+ * Provides deterministic randomness for reproducible game behavior.
5
+ */
6
+ /**
7
+ * Seeded random number generator interface
8
+ */
9
+ export interface SeededRandom {
10
+ /** Get a random number between 0 and 1 */
11
+ next(): number;
12
+ /** Get a random integer between min and max (inclusive) */
13
+ int(min: number, max: number): number;
14
+ /** Return true with given probability (0-1) */
15
+ chance(probability: number): boolean;
16
+ /** Pick a random element from an array */
17
+ pick<T>(array: T[]): T;
18
+ /** Shuffle an array */
19
+ shuffle<T>(array: T[]): T[];
20
+ /** Get the current seed */
21
+ getSeed(): number;
22
+ /** Set a new seed */
23
+ setSeed(seed: number): void;
24
+ }
25
+ /**
26
+ * Create a seeded random number generator
27
+ *
28
+ * Uses a Linear Congruential Generator (LCG) for deterministic randomness.
29
+ * This ensures reproducible behavior for testing and save/load.
30
+ */
31
+ export declare function createSeededRandom(seed?: number): SeededRandom;
32
+ //# sourceMappingURL=seeded-random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeded-random.d.ts","sourceRoot":"","sources":["../../src/random/seeded-random.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,IAAI,IAAI,MAAM,CAAC;IAEf,2DAA2D;IAC3D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC,+CAA+C;IAC/C,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,0CAA0C;IAC1C,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEvB,uBAAuB;IACvB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAE5B,2BAA2B;IAC3B,OAAO,IAAI,MAAM,CAAC;IAElB,qBAAqB;IACrB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAuD9D"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Seeded Random Number Generator Interface
4
+ *
5
+ * Provides deterministic randomness for reproducible game behavior.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createSeededRandom = createSeededRandom;
9
+ /**
10
+ * Create a seeded random number generator
11
+ *
12
+ * Uses a Linear Congruential Generator (LCG) for deterministic randomness.
13
+ * This ensures reproducible behavior for testing and save/load.
14
+ */
15
+ function createSeededRandom(seed) {
16
+ // Use current time as default seed
17
+ let currentSeed = seed ?? Date.now();
18
+ // LCG constants (same as glibc)
19
+ const a = 1103515245;
20
+ const c = 12345;
21
+ const m = 2 ** 31;
22
+ function next() {
23
+ currentSeed = (a * currentSeed + c) % m;
24
+ return currentSeed / m;
25
+ }
26
+ function int(min, max) {
27
+ return Math.floor(next() * (max - min + 1)) + min;
28
+ }
29
+ function chance(probability) {
30
+ return next() < probability;
31
+ }
32
+ function pick(array) {
33
+ if (array.length === 0) {
34
+ throw new Error('Cannot pick from empty array');
35
+ }
36
+ return array[int(0, array.length - 1)];
37
+ }
38
+ function shuffle(array) {
39
+ const result = [...array];
40
+ for (let i = result.length - 1; i > 0; i--) {
41
+ const j = int(0, i);
42
+ [result[i], result[j]] = [result[j], result[i]];
43
+ }
44
+ return result;
45
+ }
46
+ function getSeed() {
47
+ return currentSeed;
48
+ }
49
+ function setSeed(newSeed) {
50
+ currentSeed = newSeed;
51
+ }
52
+ return {
53
+ next,
54
+ int,
55
+ chance,
56
+ pick,
57
+ shuffle,
58
+ getSeed,
59
+ setSeed,
60
+ };
61
+ }
62
+ //# sourceMappingURL=seeded-random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeded-random.js","sourceRoot":"","sources":["../../src/random/seeded-random.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAkCH,gDAuDC;AA7DD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,IAAa;IAC9C,mCAAmC;IACnC,IAAI,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAErC,gCAAgC;IAChC,MAAM,CAAC,GAAG,UAAU,CAAC;IACrB,MAAM,CAAC,GAAG,KAAK,CAAC;IAChB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAElB,SAAS,IAAI;QACX,WAAW,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,GAAG,CAAC,GAAW,EAAE,GAAW;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACpD,CAAC;IAED,SAAS,MAAM,CAAC,WAAmB;QACjC,OAAO,IAAI,EAAE,GAAG,WAAW,CAAC;IAC9B,CAAC;IAED,SAAS,IAAI,CAAI,KAAU;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,OAAO,CAAI,KAAU;QAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,OAAO;QACd,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,SAAS,OAAO,CAAC,OAAe;QAC9B,WAAW,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,OAAO;QACL,IAAI;QACJ,GAAG;QACH,MAAM;QACN,IAAI;QACJ,OAAO;QACP,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Compatibility adapter for the old RuleSystem interface
3
+ * This allows existing code to work with the new simple rule system
4
+ */
5
+ import { ISemanticEvent } from '../events/types';
6
+ import { SimpleRuleSystemImpl } from './simple-rule-system';
7
+ /**
8
+ * Game context interface that the old system expects
9
+ */
10
+ interface GameContext {
11
+ worldState: any;
12
+ player: any;
13
+ currentLocation: any;
14
+ getEntity: (id: string) => any;
15
+ updateWorldState?: (updater: (state: any) => any) => GameContext;
16
+ [key: string]: any;
17
+ }
18
+ /**
19
+ * Result interface that the old system expects
20
+ */
21
+ interface OldRuleResult {
22
+ prevented: boolean;
23
+ preventMessage?: string;
24
+ events: ISemanticEvent[];
25
+ context: GameContext;
26
+ }
27
+ /**
28
+ * Old RuleSystem interface for compatibility
29
+ */
30
+ export interface IRuleSystem {
31
+ processEvent(event: ISemanticEvent, context: GameContext): OldRuleResult;
32
+ }
33
+ /**
34
+ * Adapter that makes the new SimpleRuleSystem compatible with old interfaces
35
+ */
36
+ export declare class RuleSystemAdapter implements IRuleSystem {
37
+ private simpleRuleSystem;
38
+ constructor(simpleRuleSystem: SimpleRuleSystemImpl);
39
+ processEvent(event: ISemanticEvent, context: GameContext): OldRuleResult;
40
+ }
41
+ /**
42
+ * Create a compatible rule system
43
+ */
44
+ export declare function createRuleSystem(): IRuleSystem;
45
+ export {};
46
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/rules/compatibility.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,EAAE,GAAG,CAAC;IACrB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,KAAK,WAAW,CAAC;IACjE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC;CAC1E;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACvC,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,oBAAoB;IAE1D,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,aAAa;CAezE;AAwBD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAG9C"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Compatibility adapter for the old RuleSystem interface
4
+ * This allows existing code to work with the new simple rule system
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RuleSystemAdapter = void 0;
8
+ exports.createRuleSystem = createRuleSystem;
9
+ const simple_rule_system_1 = require("./simple-rule-system");
10
+ /**
11
+ * Adapter that makes the new SimpleRuleSystem compatible with old interfaces
12
+ */
13
+ class RuleSystemAdapter {
14
+ simpleRuleSystem;
15
+ constructor(simpleRuleSystem) {
16
+ this.simpleRuleSystem = simpleRuleSystem;
17
+ }
18
+ processEvent(event, context) {
19
+ // Create a RuleWorld adapter from the GameContext
20
+ const world = createRuleWorldFromGameContext(context);
21
+ // Process through the simple rule system
22
+ const result = this.simpleRuleSystem.processEvent(event, world);
23
+ // Convert back to old format
24
+ return {
25
+ prevented: result.prevent || false,
26
+ preventMessage: result.message,
27
+ events: result.events || [],
28
+ context: context // Return original context for now
29
+ };
30
+ }
31
+ }
32
+ exports.RuleSystemAdapter = RuleSystemAdapter;
33
+ /**
34
+ * Create a RuleWorld from a GameContext
35
+ */
36
+ function createRuleWorldFromGameContext(context) {
37
+ return {
38
+ getEntity: (id) => context.getEntity(id),
39
+ updateEntity: (id, changes) => {
40
+ // For now, just update the entity directly
41
+ const entity = context.getEntity(id);
42
+ if (entity) {
43
+ if (entity.attributes) {
44
+ Object.assign(entity.attributes, changes);
45
+ }
46
+ else {
47
+ Object.assign(entity, changes);
48
+ }
49
+ }
50
+ },
51
+ getPlayer: () => context.player,
52
+ getCurrentLocation: () => context.currentLocation
53
+ };
54
+ }
55
+ /**
56
+ * Create a compatible rule system
57
+ */
58
+ function createRuleSystem() {
59
+ const simpleRuleSystem = new simple_rule_system_1.SimpleRuleSystemImpl();
60
+ return new RuleSystemAdapter(simpleRuleSystem);
61
+ }
62
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/rules/compatibility.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmFH,4CAGC;AAnFD,6DAA4D;AAgC5D;;GAEG;AACH,MAAa,iBAAiB;IACR;IAApB,YAAoB,gBAAsC;QAAtC,qBAAgB,GAAhB,gBAAgB,CAAsB;IAAG,CAAC;IAE9D,YAAY,CAAC,KAAqB,EAAE,OAAoB;QACtD,kDAAkD;QAClD,MAAM,KAAK,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAEtD,yCAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEhE,6BAA6B;QAC7B,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAClC,cAAc,EAAE,MAAM,CAAC,OAAO;YAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,OAAO,EAAE,OAAO,CAAC,kCAAkC;SACpD,CAAC;IACJ,CAAC;CACF;AAlBD,8CAkBC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,OAAoB;IAC1D,OAAO;QACL,SAAS,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,YAAY,EAAE,CAAC,EAAU,EAAE,OAA4B,EAAE,EAAE;YACzD,2CAA2C;YAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM;QAC/B,kBAAkB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,gBAAgB,GAAG,IAAI,yCAAoB,EAAE,CAAC;IACpD,OAAO,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Condition builder utilities
3
+ * TODO: Implement proper condition builders
4
+ */
5
+ export declare const player: (property: string) => {
6
+ type: string;
7
+ property: string;
8
+ };
9
+ export declare const item: (property: string) => {
10
+ type: string;
11
+ property: string;
12
+ };
13
+ export declare const location: (property: string) => {
14
+ type: string;
15
+ property: string;
16
+ };
17
+ export declare const direction: (property: string) => {
18
+ type: string;
19
+ property: string;
20
+ };
21
+ export type EntityReference = ReturnType<typeof player | typeof item | typeof location>;
22
+ export type ValueReference = string | number | boolean;
23
+ //# sourceMappingURL=condition-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-builder.d.ts","sourceRoot":"","sources":["../../src/rules/condition-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,MAAM,GAAI,UAAU,MAAM;;;CAAmC,CAAC;AAC3E,eAAO,MAAM,IAAI,GAAI,UAAU,MAAM;;;CAAiC,CAAC;AACvE,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM;;;CAAqC,CAAC;AAC/E,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM;;;CAAsC,CAAC;AAEjF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,MAAM,GAAG,OAAO,IAAI,GAAG,OAAO,QAAQ,CAAC,CAAC;AACxF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * Condition builder utilities
4
+ * TODO: Implement proper condition builders
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.direction = exports.location = exports.item = exports.player = void 0;
8
+ const player = (property) => ({ type: 'player', property });
9
+ exports.player = player;
10
+ const item = (property) => ({ type: 'item', property });
11
+ exports.item = item;
12
+ const location = (property) => ({ type: 'location', property });
13
+ exports.location = location;
14
+ const direction = (property) => ({ type: 'direction', property });
15
+ exports.direction = direction;
16
+ //# sourceMappingURL=condition-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-builder.js","sourceRoot":"","sources":["../../src/rules/condition-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEI,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAA9D,QAAA,MAAM,UAAwD;AACpE,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAA1D,QAAA,IAAI,QAAsD;AAChE,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAAlE,QAAA,QAAQ,YAA0D;AACxE,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AAApE,QAAA,SAAS,aAA2D"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Helper functions for common rule patterns
3
+ */
4
+ import { EntityId } from '../types/entity';
5
+ import { ISemanticEvent } from '../events/types';
6
+ import { IRuleWorld, IEntityChange } from './types';
7
+ /**
8
+ * Helper to get the target item from an event
9
+ */
10
+ export declare function getTargetItem(event: ISemanticEvent, world: IRuleWorld): any;
11
+ /**
12
+ * Helper to get the actor from an event
13
+ */
14
+ export declare function getActor(event: ISemanticEvent, world: IRuleWorld): any;
15
+ /**
16
+ * Helper to check if entity has a specific name/id
17
+ */
18
+ export declare function entityIs(entity: any, nameOrId: string): boolean;
19
+ /**
20
+ * Helper to get entity attribute value
21
+ */
22
+ export declare function getAttribute(entity: any, attribute: string): any;
23
+ /**
24
+ * Helper to check if entity has an ability
25
+ */
26
+ export declare function hasAbility(entity: any, ability: string): boolean;
27
+ /**
28
+ * Helper to create an entity change that gives an ability
29
+ */
30
+ export declare function giveAbility(entityId: EntityId, ability: string): IEntityChange;
31
+ /**
32
+ * Helper to create an entity change that removes an ability
33
+ */
34
+ export declare function removeAbility(entityId: EntityId, ability: string): IEntityChange;
35
+ /**
36
+ * Helper to create an entity change that sets an attribute
37
+ */
38
+ export declare function setAttribute(entityId: EntityId, attribute: string, value: any): IEntityChange;
39
+ /**
40
+ * Common condition: item weight vs player strength
41
+ */
42
+ export declare function itemTooHeavy(event: ISemanticEvent, world: IRuleWorld): boolean;
43
+ /**
44
+ * Common condition: check if taking a specific item
45
+ */
46
+ export declare function isTaking(itemNameOrId: string): (event: ISemanticEvent, world: IRuleWorld) => boolean;
47
+ /**
48
+ * Common condition: player has specific ability
49
+ */
50
+ export declare function playerHasAbility(ability: string): (event: ISemanticEvent, world: IRuleWorld) => boolean;
51
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/rules/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,OAOrE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,OAGhE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAEhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAM9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAMhF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAM7F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAQ9E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,EAAE,MAAM,IACnC,OAAO,cAAc,EAAE,OAAO,UAAU,KAAG,OAAO,CAI3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,IACtC,OAAO,cAAc,EAAE,OAAO,UAAU,KAAG,OAAO,CAI3D"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * Helper functions for common rule patterns
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getTargetItem = getTargetItem;
7
+ exports.getActor = getActor;
8
+ exports.entityIs = entityIs;
9
+ exports.getAttribute = getAttribute;
10
+ exports.hasAbility = hasAbility;
11
+ exports.giveAbility = giveAbility;
12
+ exports.removeAbility = removeAbility;
13
+ exports.setAttribute = setAttribute;
14
+ exports.itemTooHeavy = itemTooHeavy;
15
+ exports.isTaking = isTaking;
16
+ exports.playerHasAbility = playerHasAbility;
17
+ /**
18
+ * Helper to get the target item from an event
19
+ */
20
+ function getTargetItem(event, world) {
21
+ const targetId = event.entities.target || event.data?.itemId;
22
+ // Ensure targetId is a string before passing to getEntity
23
+ if (typeof targetId === 'string') {
24
+ return world.getEntity(targetId);
25
+ }
26
+ return undefined;
27
+ }
28
+ /**
29
+ * Helper to get the actor from an event
30
+ */
31
+ function getActor(event, world) {
32
+ const actorId = event.entities.actor;
33
+ return actorId ? world.getEntity(actorId) : undefined;
34
+ }
35
+ /**
36
+ * Helper to check if entity has a specific name/id
37
+ */
38
+ function entityIs(entity, nameOrId) {
39
+ return entity?.id === nameOrId || entity?.attributes?.name === nameOrId;
40
+ }
41
+ /**
42
+ * Helper to get entity attribute value
43
+ */
44
+ function getAttribute(entity, attribute) {
45
+ return entity?.attributes?.[attribute];
46
+ }
47
+ /**
48
+ * Helper to check if entity has an ability
49
+ */
50
+ function hasAbility(entity, ability) {
51
+ return entity?.attributes?.[`ability_${ability}`] === true;
52
+ }
53
+ /**
54
+ * Helper to create an entity change that gives an ability
55
+ */
56
+ function giveAbility(entityId, ability) {
57
+ return {
58
+ entityId,
59
+ attribute: `ability_${ability}`,
60
+ value: true
61
+ };
62
+ }
63
+ /**
64
+ * Helper to create an entity change that removes an ability
65
+ */
66
+ function removeAbility(entityId, ability) {
67
+ return {
68
+ entityId,
69
+ attribute: `ability_${ability}`,
70
+ value: undefined
71
+ };
72
+ }
73
+ /**
74
+ * Helper to create an entity change that sets an attribute
75
+ */
76
+ function setAttribute(entityId, attribute, value) {
77
+ return {
78
+ entityId,
79
+ attribute,
80
+ value
81
+ };
82
+ }
83
+ /**
84
+ * Common condition: item weight vs player strength
85
+ */
86
+ function itemTooHeavy(event, world) {
87
+ const item = getTargetItem(event, world);
88
+ const player = world.getPlayer();
89
+ const itemWeight = getAttribute(item, 'weight') || 0;
90
+ const playerStrength = getAttribute(player, 'strength') || 10;
91
+ return itemWeight > playerStrength;
92
+ }
93
+ /**
94
+ * Common condition: check if taking a specific item
95
+ */
96
+ function isTaking(itemNameOrId) {
97
+ return (event, world) => {
98
+ const item = getTargetItem(event, world);
99
+ return entityIs(item, itemNameOrId);
100
+ };
101
+ }
102
+ /**
103
+ * Common condition: player has specific ability
104
+ */
105
+ function playerHasAbility(ability) {
106
+ return (event, world) => {
107
+ const player = world.getPlayer();
108
+ return hasAbility(player, ability);
109
+ };
110
+ }
111
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/rules/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Simple Rule System v2 - Main exports
3
+ */
4
+ export * from './types';
5
+ export * from './simple-rule-system';
6
+ export * from './helpers';
7
+ export * from './rule-world-adapter';
8
+ export * from './compatibility';
9
+ export { createSimpleRuleSystem } from './simple-rule-system';
10
+ export { createSimpleRuleWorld } from './rule-world-adapter';
11
+ export { IRuleSystem, createRuleSystem } from './compatibility';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Simple Rule System v2 - Main exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.createRuleSystem = exports.createSimpleRuleWorld = exports.createSimpleRuleSystem = void 0;
21
+ __exportStar(require("./types"), exports);
22
+ __exportStar(require("./simple-rule-system"), exports);
23
+ __exportStar(require("./helpers"), exports);
24
+ __exportStar(require("./rule-world-adapter"), exports);
25
+ __exportStar(require("./compatibility"), exports);
26
+ // Re-export for convenience
27
+ var simple_rule_system_1 = require("./simple-rule-system");
28
+ Object.defineProperty(exports, "createSimpleRuleSystem", { enumerable: true, get: function () { return simple_rule_system_1.createSimpleRuleSystem; } });
29
+ var rule_world_adapter_1 = require("./rule-world-adapter");
30
+ Object.defineProperty(exports, "createSimpleRuleWorld", { enumerable: true, get: function () { return rule_world_adapter_1.createSimpleRuleWorld; } });
31
+ // Compatibility exports for old code
32
+ var compatibility_1 = require("./compatibility");
33
+ Object.defineProperty(exports, "createRuleSystem", { enumerable: true, get: function () { return compatibility_1.createRuleSystem; } });
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,uDAAqC;AACrC,4CAA0B;AAC1B,uDAAqC;AACrC,kDAAgC;AAEhC,4BAA4B;AAC5B,2DAA8D;AAArD,4HAAA,sBAAsB,OAAA;AAC/B,2DAA6D;AAApD,2HAAA,qBAAqB,OAAA;AAE9B,qCAAqC;AACrC,iDAAgE;AAA1C,iHAAA,gBAAgB,OAAA"}