@al8b/runtime 0.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.
Files changed (185) hide show
  1. package/README.md +87 -0
  2. package/dist/assets/constructors.d.mts +6 -0
  3. package/dist/assets/constructors.d.ts +6 -0
  4. package/dist/assets/constructors.js +40 -0
  5. package/dist/assets/constructors.js.map +1 -0
  6. package/dist/assets/constructors.mjs +12 -0
  7. package/dist/assets/constructors.mjs.map +1 -0
  8. package/dist/assets/index.d.mts +11 -0
  9. package/dist/assets/index.d.ts +11 -0
  10. package/dist/assets/index.js +276 -0
  11. package/dist/assets/index.js.map +1 -0
  12. package/dist/assets/index.mjs +247 -0
  13. package/dist/assets/index.mjs.map +1 -0
  14. package/dist/assets/loader.d.mts +83 -0
  15. package/dist/assets/loader.d.ts +83 -0
  16. package/dist/assets/loader.js +260 -0
  17. package/dist/assets/loader.js.map +1 -0
  18. package/dist/assets/loader.mjs +237 -0
  19. package/dist/assets/loader.mjs.map +1 -0
  20. package/dist/browser/index.js +16599 -0
  21. package/dist/browser/index.js.map +1 -0
  22. package/dist/browser/index.min.js +171 -0
  23. package/dist/constants.d.mts +16 -0
  24. package/dist/constants.d.ts +16 -0
  25. package/dist/constants.js +49 -0
  26. package/dist/constants.js.map +1 -0
  27. package/dist/constants.mjs +18 -0
  28. package/dist/constants.mjs.map +1 -0
  29. package/dist/core/api-factory.d.mts +63 -0
  30. package/dist/core/api-factory.d.ts +63 -0
  31. package/dist/core/api-factory.js +239 -0
  32. package/dist/core/api-factory.js.map +1 -0
  33. package/dist/core/api-factory.mjs +214 -0
  34. package/dist/core/api-factory.mjs.map +1 -0
  35. package/dist/core/assets-registry.d.mts +14 -0
  36. package/dist/core/assets-registry.d.ts +14 -0
  37. package/dist/core/assets-registry.js +64 -0
  38. package/dist/core/assets-registry.js.map +1 -0
  39. package/dist/core/assets-registry.mjs +41 -0
  40. package/dist/core/assets-registry.mjs.map +1 -0
  41. package/dist/core/controller.d.mts +109 -0
  42. package/dist/core/controller.d.ts +109 -0
  43. package/dist/core/controller.js +1782 -0
  44. package/dist/core/controller.js.map +1 -0
  45. package/dist/core/controller.mjs +1758 -0
  46. package/dist/core/controller.mjs.map +1 -0
  47. package/dist/core/debug-logger.d.mts +35 -0
  48. package/dist/core/debug-logger.d.ts +35 -0
  49. package/dist/core/debug-logger.js +177 -0
  50. package/dist/core/debug-logger.js.map +1 -0
  51. package/dist/core/debug-logger.mjs +154 -0
  52. package/dist/core/debug-logger.mjs.map +1 -0
  53. package/dist/core/error-handler.d.mts +25 -0
  54. package/dist/core/error-handler.d.ts +25 -0
  55. package/dist/core/error-handler.js +106 -0
  56. package/dist/core/error-handler.js.map +1 -0
  57. package/dist/core/error-handler.mjs +81 -0
  58. package/dist/core/error-handler.mjs.map +1 -0
  59. package/dist/core/index.d.mts +14 -0
  60. package/dist/core/index.d.ts +14 -0
  61. package/dist/core/index.js +1782 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/index.mjs +1757 -0
  64. package/dist/core/index.mjs.map +1 -0
  65. package/dist/hot-reload/index.d.mts +7 -0
  66. package/dist/hot-reload/index.d.ts +7 -0
  67. package/dist/hot-reload/index.js +103 -0
  68. package/dist/hot-reload/index.js.map +1 -0
  69. package/dist/hot-reload/index.mjs +78 -0
  70. package/dist/hot-reload/index.mjs.map +1 -0
  71. package/dist/hot-reload/updater.d.mts +33 -0
  72. package/dist/hot-reload/updater.d.ts +33 -0
  73. package/dist/hot-reload/updater.js +101 -0
  74. package/dist/hot-reload/updater.js.map +1 -0
  75. package/dist/hot-reload/updater.mjs +78 -0
  76. package/dist/hot-reload/updater.mjs.map +1 -0
  77. package/dist/index.d.mts +24 -0
  78. package/dist/index.d.ts +24 -0
  79. package/dist/index.js +1859 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/index.mjs +1817 -0
  82. package/dist/index.mjs.map +1 -0
  83. package/dist/input/index.d.mts +2 -0
  84. package/dist/input/index.d.ts +2 -0
  85. package/dist/input/index.js +79 -0
  86. package/dist/input/index.js.map +1 -0
  87. package/dist/input/index.mjs +54 -0
  88. package/dist/input/index.mjs.map +1 -0
  89. package/dist/input/manager.d.mts +37 -0
  90. package/dist/input/manager.d.ts +37 -0
  91. package/dist/input/manager.js +77 -0
  92. package/dist/input/manager.js.map +1 -0
  93. package/dist/input/manager.mjs +54 -0
  94. package/dist/input/manager.mjs.map +1 -0
  95. package/dist/loop/game-loop.d.mts +63 -0
  96. package/dist/loop/game-loop.d.ts +63 -0
  97. package/dist/loop/game-loop.js +156 -0
  98. package/dist/loop/game-loop.js.map +1 -0
  99. package/dist/loop/game-loop.mjs +131 -0
  100. package/dist/loop/game-loop.mjs.map +1 -0
  101. package/dist/loop/index.d.mts +1 -0
  102. package/dist/loop/index.d.ts +1 -0
  103. package/dist/loop/index.js +156 -0
  104. package/dist/loop/index.js.map +1 -0
  105. package/dist/loop/index.mjs +131 -0
  106. package/dist/loop/index.mjs.map +1 -0
  107. package/dist/storage/index.d.mts +1 -0
  108. package/dist/storage/index.d.ts +1 -0
  109. package/dist/storage/index.js +31 -0
  110. package/dist/storage/index.js.map +1 -0
  111. package/dist/storage/index.mjs +6 -0
  112. package/dist/storage/index.mjs.map +1 -0
  113. package/dist/system/api.d.mts +28 -0
  114. package/dist/system/api.d.ts +28 -0
  115. package/dist/system/api.js +126 -0
  116. package/dist/system/api.js.map +1 -0
  117. package/dist/system/api.mjs +101 -0
  118. package/dist/system/api.mjs.map +1 -0
  119. package/dist/system/index.d.mts +2 -0
  120. package/dist/system/index.d.ts +2 -0
  121. package/dist/system/index.js +126 -0
  122. package/dist/system/index.js.map +1 -0
  123. package/dist/system/index.mjs +101 -0
  124. package/dist/system/index.mjs.map +1 -0
  125. package/dist/types/assets.d.mts +43 -0
  126. package/dist/types/assets.d.ts +43 -0
  127. package/dist/types/assets.js +19 -0
  128. package/dist/types/assets.js.map +1 -0
  129. package/dist/types/assets.mjs +1 -0
  130. package/dist/types/assets.mjs.map +1 -0
  131. package/dist/types/bridge.d.mts +66 -0
  132. package/dist/types/bridge.d.ts +66 -0
  133. package/dist/types/bridge.js +19 -0
  134. package/dist/types/bridge.js.map +1 -0
  135. package/dist/types/bridge.mjs +1 -0
  136. package/dist/types/bridge.mjs.map +1 -0
  137. package/dist/types/index.d.mts +6 -0
  138. package/dist/types/index.d.ts +6 -0
  139. package/dist/types/index.js +19 -0
  140. package/dist/types/index.js.map +1 -0
  141. package/dist/types/index.mjs +1 -0
  142. package/dist/types/index.mjs.map +1 -0
  143. package/dist/types/runtime.d.mts +71 -0
  144. package/dist/types/runtime.d.ts +71 -0
  145. package/dist/types/runtime.js +19 -0
  146. package/dist/types/runtime.js.map +1 -0
  147. package/dist/types/runtime.mjs +1 -0
  148. package/dist/types/runtime.mjs.map +1 -0
  149. package/dist/types/vm.d.mts +1 -0
  150. package/dist/types/vm.d.ts +1 -0
  151. package/dist/types/vm.js +19 -0
  152. package/dist/types/vm.js.map +1 -0
  153. package/dist/types/vm.mjs +1 -0
  154. package/dist/types/vm.mjs.map +1 -0
  155. package/dist/utils/deep-clone.d.mts +14 -0
  156. package/dist/utils/deep-clone.d.ts +14 -0
  157. package/dist/utils/deep-clone.js +42 -0
  158. package/dist/utils/deep-clone.js.map +1 -0
  159. package/dist/utils/deep-clone.mjs +19 -0
  160. package/dist/utils/deep-clone.mjs.map +1 -0
  161. package/dist/utils/index.d.mts +3 -0
  162. package/dist/utils/index.d.ts +3 -0
  163. package/dist/utils/index.js +156 -0
  164. package/dist/utils/index.js.map +1 -0
  165. package/dist/utils/index.mjs +129 -0
  166. package/dist/utils/index.mjs.map +1 -0
  167. package/dist/utils/object-pool.d.mts +66 -0
  168. package/dist/utils/object-pool.d.ts +66 -0
  169. package/dist/utils/object-pool.js +113 -0
  170. package/dist/utils/object-pool.js.map +1 -0
  171. package/dist/utils/object-pool.mjs +90 -0
  172. package/dist/utils/object-pool.mjs.map +1 -0
  173. package/dist/utils/shallow-equal.d.mts +15 -0
  174. package/dist/utils/shallow-equal.d.ts +15 -0
  175. package/dist/utils/shallow-equal.js +53 -0
  176. package/dist/utils/shallow-equal.js.map +1 -0
  177. package/dist/utils/shallow-equal.mjs +30 -0
  178. package/dist/utils/shallow-equal.mjs.map +1 -0
  179. package/dist/vm/index.d.mts +1 -0
  180. package/dist/vm/index.d.ts +1 -0
  181. package/dist/vm/index.js +37 -0
  182. package/dist/vm/index.js.map +1 -0
  183. package/dist/vm/index.mjs +9 -0
  184. package/dist/vm/index.mjs.map +1 -0
  185. package/package.json +52 -0
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/utils/object-pool.ts
22
+ var object_pool_exports = {};
23
+ __export(object_pool_exports, {
24
+ ObjectPool: () => ObjectPool
25
+ });
26
+ module.exports = __toCommonJS(object_pool_exports);
27
+ var ObjectPool = class {
28
+ static {
29
+ __name(this, "ObjectPool");
30
+ }
31
+ pool = [];
32
+ factory;
33
+ reset;
34
+ maxSize;
35
+ /**
36
+ * Create a new object pool
37
+ *
38
+ * @param factory - Function to create new objects
39
+ * @param reset - Function to reset object state for reuse
40
+ * @param maxSize - Maximum pool size (default: 100)
41
+ */
42
+ constructor(factory, reset, maxSize = 100) {
43
+ this.factory = factory;
44
+ this.reset = reset;
45
+ this.maxSize = maxSize;
46
+ }
47
+ /**
48
+ * Acquire an object from the pool
49
+ *
50
+ * Returns a new object if pool is empty, otherwise reuses a pooled object.
51
+ *
52
+ * @returns Object from pool or newly created
53
+ */
54
+ acquire() {
55
+ if (this.pool.length > 0) {
56
+ return this.pool.pop();
57
+ }
58
+ return this.factory();
59
+ }
60
+ /**
61
+ * Release an object back to the pool
62
+ *
63
+ * Resets the object and adds it back to the pool for reuse.
64
+ * If pool is at max size, the object is discarded.
65
+ *
66
+ * @param obj - Object to release
67
+ */
68
+ release(obj) {
69
+ if (this.pool.length >= this.maxSize) {
70
+ return;
71
+ }
72
+ this.reset(obj);
73
+ this.pool.push(obj);
74
+ }
75
+ /**
76
+ * Clear all objects from the pool
77
+ */
78
+ clear() {
79
+ this.pool = [];
80
+ }
81
+ /**
82
+ * Get current pool size
83
+ *
84
+ * @returns Number of objects in pool
85
+ */
86
+ size() {
87
+ return this.pool.length;
88
+ }
89
+ /**
90
+ * Get maximum pool size
91
+ *
92
+ * @returns Maximum pool size
93
+ */
94
+ getMaxSize() {
95
+ return this.maxSize;
96
+ }
97
+ /**
98
+ * Set maximum pool size
99
+ *
100
+ * @param maxSize - New maximum pool size
101
+ */
102
+ setMaxSize(maxSize) {
103
+ this.maxSize = maxSize;
104
+ if (this.pool.length > maxSize) {
105
+ this.pool = this.pool.slice(0, maxSize);
106
+ }
107
+ }
108
+ };
109
+ // Annotate the CommonJS export names for ESM import in node:
110
+ 0 && (module.exports = {
111
+ ObjectPool
112
+ });
113
+ //# sourceMappingURL=object-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/object-pool.ts"],"sourcesContent":["/**\n * Object Pool utility for game entities\n *\n * Provides object pooling to reduce GC pressure and improve performance\n * for frequently created/destroyed game objects.\n */\n\n/**\n * Object pool for reusing objects\n *\n * @template T - Type of objects in the pool\n */\nexport class ObjectPool<T> {\n\tprivate pool: T[] = [];\n\tprivate factory: () => T;\n\tprivate reset: (obj: T) => void;\n\tprivate maxSize: number;\n\n\t/**\n\t * Create a new object pool\n\t *\n\t * @param factory - Function to create new objects\n\t * @param reset - Function to reset object state for reuse\n\t * @param maxSize - Maximum pool size (default: 100)\n\t */\n\tconstructor(factory: () => T, reset: (obj: T) => void, maxSize: number = 100) {\n\t\tthis.factory = factory;\n\t\tthis.reset = reset;\n\t\tthis.maxSize = maxSize;\n\t}\n\n\t/**\n\t * Acquire an object from the pool\n\t *\n\t * Returns a new object if pool is empty, otherwise reuses a pooled object.\n\t *\n\t * @returns Object from pool or newly created\n\t */\n\tacquire(): T {\n\t\tif (this.pool.length > 0) {\n\t\t\treturn this.pool.pop()!;\n\t\t}\n\t\treturn this.factory();\n\t}\n\n\t/**\n\t * Release an object back to the pool\n\t *\n\t * Resets the object and adds it back to the pool for reuse.\n\t * If pool is at max size, the object is discarded.\n\t *\n\t * @param obj - Object to release\n\t */\n\trelease(obj: T): void {\n\t\tif (this.pool.length >= this.maxSize) {\n\t\t\t// Pool is full, discard object\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reset(obj);\n\t\tthis.pool.push(obj);\n\t}\n\n\t/**\n\t * Clear all objects from the pool\n\t */\n\tclear(): void {\n\t\tthis.pool = [];\n\t}\n\n\t/**\n\t * Get current pool size\n\t *\n\t * @returns Number of objects in pool\n\t */\n\tsize(): number {\n\t\treturn this.pool.length;\n\t}\n\n\t/**\n\t * Get maximum pool size\n\t *\n\t * @returns Maximum pool size\n\t */\n\tgetMaxSize(): number {\n\t\treturn this.maxSize;\n\t}\n\n\t/**\n\t * Set maximum pool size\n\t *\n\t * @param maxSize - New maximum pool size\n\t */\n\tsetMaxSize(maxSize: number): void {\n\t\tthis.maxSize = maxSize;\n\t\t// Trim pool if it exceeds new max size\n\t\tif (this.pool.length > maxSize) {\n\t\t\tthis.pool = this.pool.slice(0, maxSize);\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAYO,IAAMA,aAAN,MAAMA;EAZb,OAYaA;;;EACJC,OAAY,CAAA;EACZC;EACAC;EACAC;;;;;;;;EASR,YAAYF,SAAkBC,OAAyBC,UAAkB,KAAK;AAC7E,SAAKF,UAAUA;AACf,SAAKC,QAAQA;AACb,SAAKC,UAAUA;EAChB;;;;;;;;EASAC,UAAa;AACZ,QAAI,KAAKJ,KAAKK,SAAS,GAAG;AACzB,aAAO,KAAKL,KAAKM,IAAG;IACrB;AACA,WAAO,KAAKL,QAAO;EACpB;;;;;;;;;EAUAM,QAAQC,KAAc;AACrB,QAAI,KAAKR,KAAKK,UAAU,KAAKF,SAAS;AAErC;IACD;AAEA,SAAKD,MAAMM,GAAAA;AACX,SAAKR,KAAKS,KAAKD,GAAAA;EAChB;;;;EAKAE,QAAc;AACb,SAAKV,OAAO,CAAA;EACb;;;;;;EAOAW,OAAe;AACd,WAAO,KAAKX,KAAKK;EAClB;;;;;;EAOAO,aAAqB;AACpB,WAAO,KAAKT;EACb;;;;;;EAOAU,WAAWV,SAAuB;AACjC,SAAKA,UAAUA;AAEf,QAAI,KAAKH,KAAKK,SAASF,SAAS;AAC/B,WAAKH,OAAO,KAAKA,KAAKc,MAAM,GAAGX,OAAAA;IAChC;EACD;AACD;","names":["ObjectPool","pool","factory","reset","maxSize","acquire","length","pop","release","obj","push","clear","size","getMaxSize","setMaxSize","slice"]}
@@ -0,0 +1,90 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/utils/object-pool.ts
5
+ var ObjectPool = class {
6
+ static {
7
+ __name(this, "ObjectPool");
8
+ }
9
+ pool = [];
10
+ factory;
11
+ reset;
12
+ maxSize;
13
+ /**
14
+ * Create a new object pool
15
+ *
16
+ * @param factory - Function to create new objects
17
+ * @param reset - Function to reset object state for reuse
18
+ * @param maxSize - Maximum pool size (default: 100)
19
+ */
20
+ constructor(factory, reset, maxSize = 100) {
21
+ this.factory = factory;
22
+ this.reset = reset;
23
+ this.maxSize = maxSize;
24
+ }
25
+ /**
26
+ * Acquire an object from the pool
27
+ *
28
+ * Returns a new object if pool is empty, otherwise reuses a pooled object.
29
+ *
30
+ * @returns Object from pool or newly created
31
+ */
32
+ acquire() {
33
+ if (this.pool.length > 0) {
34
+ return this.pool.pop();
35
+ }
36
+ return this.factory();
37
+ }
38
+ /**
39
+ * Release an object back to the pool
40
+ *
41
+ * Resets the object and adds it back to the pool for reuse.
42
+ * If pool is at max size, the object is discarded.
43
+ *
44
+ * @param obj - Object to release
45
+ */
46
+ release(obj) {
47
+ if (this.pool.length >= this.maxSize) {
48
+ return;
49
+ }
50
+ this.reset(obj);
51
+ this.pool.push(obj);
52
+ }
53
+ /**
54
+ * Clear all objects from the pool
55
+ */
56
+ clear() {
57
+ this.pool = [];
58
+ }
59
+ /**
60
+ * Get current pool size
61
+ *
62
+ * @returns Number of objects in pool
63
+ */
64
+ size() {
65
+ return this.pool.length;
66
+ }
67
+ /**
68
+ * Get maximum pool size
69
+ *
70
+ * @returns Maximum pool size
71
+ */
72
+ getMaxSize() {
73
+ return this.maxSize;
74
+ }
75
+ /**
76
+ * Set maximum pool size
77
+ *
78
+ * @param maxSize - New maximum pool size
79
+ */
80
+ setMaxSize(maxSize) {
81
+ this.maxSize = maxSize;
82
+ if (this.pool.length > maxSize) {
83
+ this.pool = this.pool.slice(0, maxSize);
84
+ }
85
+ }
86
+ };
87
+ export {
88
+ ObjectPool
89
+ };
90
+ //# sourceMappingURL=object-pool.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/object-pool.ts"],"sourcesContent":["/**\n * Object Pool utility for game entities\n *\n * Provides object pooling to reduce GC pressure and improve performance\n * for frequently created/destroyed game objects.\n */\n\n/**\n * Object pool for reusing objects\n *\n * @template T - Type of objects in the pool\n */\nexport class ObjectPool<T> {\n\tprivate pool: T[] = [];\n\tprivate factory: () => T;\n\tprivate reset: (obj: T) => void;\n\tprivate maxSize: number;\n\n\t/**\n\t * Create a new object pool\n\t *\n\t * @param factory - Function to create new objects\n\t * @param reset - Function to reset object state for reuse\n\t * @param maxSize - Maximum pool size (default: 100)\n\t */\n\tconstructor(factory: () => T, reset: (obj: T) => void, maxSize: number = 100) {\n\t\tthis.factory = factory;\n\t\tthis.reset = reset;\n\t\tthis.maxSize = maxSize;\n\t}\n\n\t/**\n\t * Acquire an object from the pool\n\t *\n\t * Returns a new object if pool is empty, otherwise reuses a pooled object.\n\t *\n\t * @returns Object from pool or newly created\n\t */\n\tacquire(): T {\n\t\tif (this.pool.length > 0) {\n\t\t\treturn this.pool.pop()!;\n\t\t}\n\t\treturn this.factory();\n\t}\n\n\t/**\n\t * Release an object back to the pool\n\t *\n\t * Resets the object and adds it back to the pool for reuse.\n\t * If pool is at max size, the object is discarded.\n\t *\n\t * @param obj - Object to release\n\t */\n\trelease(obj: T): void {\n\t\tif (this.pool.length >= this.maxSize) {\n\t\t\t// Pool is full, discard object\n\t\t\treturn;\n\t\t}\n\n\t\tthis.reset(obj);\n\t\tthis.pool.push(obj);\n\t}\n\n\t/**\n\t * Clear all objects from the pool\n\t */\n\tclear(): void {\n\t\tthis.pool = [];\n\t}\n\n\t/**\n\t * Get current pool size\n\t *\n\t * @returns Number of objects in pool\n\t */\n\tsize(): number {\n\t\treturn this.pool.length;\n\t}\n\n\t/**\n\t * Get maximum pool size\n\t *\n\t * @returns Maximum pool size\n\t */\n\tgetMaxSize(): number {\n\t\treturn this.maxSize;\n\t}\n\n\t/**\n\t * Set maximum pool size\n\t *\n\t * @param maxSize - New maximum pool size\n\t */\n\tsetMaxSize(maxSize: number): void {\n\t\tthis.maxSize = maxSize;\n\t\t// Trim pool if it exceeds new max size\n\t\tif (this.pool.length > maxSize) {\n\t\t\tthis.pool = this.pool.slice(0, maxSize);\n\t\t}\n\t}\n}\n"],"mappings":";;;;AAYO,IAAMA,aAAN,MAAMA;EAZb,OAYaA;;;EACJC,OAAY,CAAA;EACZC;EACAC;EACAC;;;;;;;;EASR,YAAYF,SAAkBC,OAAyBC,UAAkB,KAAK;AAC7E,SAAKF,UAAUA;AACf,SAAKC,QAAQA;AACb,SAAKC,UAAUA;EAChB;;;;;;;;EASAC,UAAa;AACZ,QAAI,KAAKJ,KAAKK,SAAS,GAAG;AACzB,aAAO,KAAKL,KAAKM,IAAG;IACrB;AACA,WAAO,KAAKL,QAAO;EACpB;;;;;;;;;EAUAM,QAAQC,KAAc;AACrB,QAAI,KAAKR,KAAKK,UAAU,KAAKF,SAAS;AAErC;IACD;AAEA,SAAKD,MAAMM,GAAAA;AACX,SAAKR,KAAKS,KAAKD,GAAAA;EAChB;;;;EAKAE,QAAc;AACb,SAAKV,OAAO,CAAA;EACb;;;;;;EAOAW,OAAe;AACd,WAAO,KAAKX,KAAKK;EAClB;;;;;;EAOAO,aAAqB;AACpB,WAAO,KAAKT;EACb;;;;;;EAOAU,WAAWV,SAAuB;AACjC,SAAKA,UAAUA;AAEf,QAAI,KAAKH,KAAKK,SAASF,SAAS;AAC/B,WAAKH,OAAO,KAAKA,KAAKc,MAAM,GAAGX,OAAAA;IAChC;EACD;AACD;","names":["ObjectPool","pool","factory","reset","maxSize","acquire","length","pop","release","obj","push","clear","size","getMaxSize","setMaxSize","slice"]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shallow equality comparison for objects and arrays
3
+ */
4
+ /**
5
+ * Compare two values for shallow equality
6
+ * For objects and arrays, only checks if top-level properties have the same references
7
+ * For primitives, uses === comparison
8
+ *
9
+ * @param a First value
10
+ * @param b Second value
11
+ * @returns true if values are shallowly equal
12
+ */
13
+ declare function shallowEqual(a: unknown, b: unknown): boolean;
14
+
15
+ export { shallowEqual };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shallow equality comparison for objects and arrays
3
+ */
4
+ /**
5
+ * Compare two values for shallow equality
6
+ * For objects and arrays, only checks if top-level properties have the same references
7
+ * For primitives, uses === comparison
8
+ *
9
+ * @param a First value
10
+ * @param b Second value
11
+ * @returns true if values are shallowly equal
12
+ */
13
+ declare function shallowEqual(a: unknown, b: unknown): boolean;
14
+
15
+ export { shallowEqual };
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/utils/shallow-equal.ts
22
+ var shallow_equal_exports = {};
23
+ __export(shallow_equal_exports, {
24
+ shallowEqual: () => shallowEqual
25
+ });
26
+ module.exports = __toCommonJS(shallow_equal_exports);
27
+ function shallowEqual(a, b) {
28
+ if (a === b) {
29
+ return true;
30
+ }
31
+ if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
32
+ return false;
33
+ }
34
+ const aObj = a;
35
+ const bObj = b;
36
+ const aKeys = Object.keys(aObj);
37
+ const bKeys = Object.keys(bObj);
38
+ if (aKeys.length !== bKeys.length) {
39
+ return false;
40
+ }
41
+ for (const key of aKeys) {
42
+ if (!(key in bObj) || aObj[key] !== bObj[key]) {
43
+ return false;
44
+ }
45
+ }
46
+ return true;
47
+ }
48
+ __name(shallowEqual, "shallowEqual");
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ shallowEqual
52
+ });
53
+ //# sourceMappingURL=shallow-equal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/shallow-equal.ts"],"sourcesContent":["/**\n * Shallow equality comparison for objects and arrays\n */\n\n/**\n * Compare two values for shallow equality\n * For objects and arrays, only checks if top-level properties have the same references\n * For primitives, uses === comparison\n *\n * @param a First value\n * @param b Second value\n * @returns true if values are shallowly equal\n */\nexport function shallowEqual(a: unknown, b: unknown): boolean {\n\t// Same reference\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\t// Different types\n\tif (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) {\n\t\treturn false;\n\t}\n\n\tconst aObj = a as Record<string, unknown>;\n\tconst bObj = b as Record<string, unknown>;\n\n\t// Get keys\n\tconst aKeys = Object.keys(aObj);\n\tconst bKeys = Object.keys(bObj);\n\n\t// Different number of keys\n\tif (aKeys.length !== bKeys.length) {\n\t\treturn false;\n\t}\n\n\t// Check all keys have same reference values\n\tfor (const key of aKeys) {\n\t\tif (!(key in bObj) || aObj[key] !== bObj[key]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAaO,SAASA,aAAaC,GAAYC,GAAU;AAElD,MAAID,MAAMC,GAAG;AACZ,WAAO;EACR;AAGA,MAAI,OAAOD,MAAM,YAAY,OAAOC,MAAM,YAAYD,MAAM,QAAQC,MAAM,MAAM;AAC/E,WAAO;EACR;AAEA,QAAMC,OAAOF;AACb,QAAMG,OAAOF;AAGb,QAAMG,QAAQC,OAAOC,KAAKJ,IAAAA;AAC1B,QAAMK,QAAQF,OAAOC,KAAKH,IAAAA;AAG1B,MAAIC,MAAMI,WAAWD,MAAMC,QAAQ;AAClC,WAAO;EACR;AAGA,aAAWC,OAAOL,OAAO;AACxB,QAAI,EAAEK,OAAON,SAASD,KAAKO,GAAAA,MAASN,KAAKM,GAAAA,GAAM;AAC9C,aAAO;IACR;EACD;AAEA,SAAO;AACR;AA/BgBV;","names":["shallowEqual","a","b","aObj","bObj","aKeys","Object","keys","bKeys","length","key"]}
@@ -0,0 +1,30 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/utils/shallow-equal.ts
5
+ function shallowEqual(a, b) {
6
+ if (a === b) {
7
+ return true;
8
+ }
9
+ if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
10
+ return false;
11
+ }
12
+ const aObj = a;
13
+ const bObj = b;
14
+ const aKeys = Object.keys(aObj);
15
+ const bKeys = Object.keys(bObj);
16
+ if (aKeys.length !== bKeys.length) {
17
+ return false;
18
+ }
19
+ for (const key of aKeys) {
20
+ if (!(key in bObj) || aObj[key] !== bObj[key]) {
21
+ return false;
22
+ }
23
+ }
24
+ return true;
25
+ }
26
+ __name(shallowEqual, "shallowEqual");
27
+ export {
28
+ shallowEqual
29
+ };
30
+ //# sourceMappingURL=shallow-equal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/shallow-equal.ts"],"sourcesContent":["/**\n * Shallow equality comparison for objects and arrays\n */\n\n/**\n * Compare two values for shallow equality\n * For objects and arrays, only checks if top-level properties have the same references\n * For primitives, uses === comparison\n *\n * @param a First value\n * @param b Second value\n * @returns true if values are shallowly equal\n */\nexport function shallowEqual(a: unknown, b: unknown): boolean {\n\t// Same reference\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\t// Different types\n\tif (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) {\n\t\treturn false;\n\t}\n\n\tconst aObj = a as Record<string, unknown>;\n\tconst bObj = b as Record<string, unknown>;\n\n\t// Get keys\n\tconst aKeys = Object.keys(aObj);\n\tconst bKeys = Object.keys(bObj);\n\n\t// Different number of keys\n\tif (aKeys.length !== bKeys.length) {\n\t\treturn false;\n\t}\n\n\t// Check all keys have same reference values\n\tfor (const key of aKeys) {\n\t\tif (!(key in bObj) || aObj[key] !== bObj[key]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n"],"mappings":";;;;AAaO,SAASA,aAAaC,GAAYC,GAAU;AAElD,MAAID,MAAMC,GAAG;AACZ,WAAO;EACR;AAGA,MAAI,OAAOD,MAAM,YAAY,OAAOC,MAAM,YAAYD,MAAM,QAAQC,MAAM,MAAM;AAC/E,WAAO;EACR;AAEA,QAAMC,OAAOF;AACb,QAAMG,OAAOF;AAGb,QAAMG,QAAQC,OAAOC,KAAKJ,IAAAA;AAC1B,QAAMK,QAAQF,OAAOC,KAAKH,IAAAA;AAG1B,MAAIC,MAAMI,WAAWD,MAAMC,QAAQ;AAClC,WAAO;EACR;AAGA,aAAWC,OAAOL,OAAO;AACxB,QAAI,EAAEK,OAAON,SAASD,KAAKO,GAAAA,MAASN,KAAKM,GAAAA,GAAM;AAC9C,aAAO;IACR;EACD;AAEA,SAAO;AACR;AA/BgBV;","names":["shallowEqual","a","b","aObj","bObj","aKeys","Object","keys","bKeys","length","key"]}
@@ -0,0 +1 @@
1
+ export { ErrorInfo, GlobalAPI, L8BVM, MetaFunctions, SystemAPI, VMContext, VMWarnings, WarningInfo, createMetaFunctions, createVMContext, setupArrayExtensions } from '@al8b/vm';
@@ -0,0 +1 @@
1
+ export { ErrorInfo, GlobalAPI, L8BVM, MetaFunctions, SystemAPI, VMContext, VMWarnings, WarningInfo, createMetaFunctions, createVMContext, setupArrayExtensions } from '@al8b/vm';
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/vm/index.ts
21
+ var vm_exports = {};
22
+ __export(vm_exports, {
23
+ L8BVM: () => import_vm.L8BVM,
24
+ createMetaFunctions: () => import_vm.createMetaFunctions,
25
+ createVMContext: () => import_vm.createVMContext,
26
+ setupArrayExtensions: () => import_vm.setupArrayExtensions
27
+ });
28
+ module.exports = __toCommonJS(vm_exports);
29
+ var import_vm = require("@al8b/vm");
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ L8BVM,
33
+ createMetaFunctions,
34
+ createVMContext,
35
+ setupArrayExtensions
36
+ });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/vm/index.ts"],"sourcesContent":["// Explicit re-exports from @al8b/vm — wildcard avoided so changes in vm\n// don't silently widen the @al8b/runtime public surface.\nexport { L8BVM, createMetaFunctions, createVMContext, setupArrayExtensions } from \"@al8b/vm\";\nexport type {\n\tErrorInfo,\n\tGlobalAPI,\n\tMetaFunctions,\n\tSystemAPI,\n\tVMContext,\n\tVMWarnings,\n\tWarningInfo,\n} from \"@al8b/vm\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;AAEA,gBAAkF;","names":[]}
@@ -0,0 +1,9 @@
1
+ // src/vm/index.ts
2
+ import { L8BVM, createMetaFunctions, createVMContext, setupArrayExtensions } from "@al8b/vm";
3
+ export {
4
+ L8BVM,
5
+ createMetaFunctions,
6
+ createVMContext,
7
+ setupArrayExtensions
8
+ };
9
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/vm/index.ts"],"sourcesContent":["// Explicit re-exports from @al8b/vm — wildcard avoided so changes in vm\n// don't silently widen the @al8b/runtime public surface.\nexport { L8BVM, createMetaFunctions, createVMContext, setupArrayExtensions } from \"@al8b/vm\";\nexport type {\n\tErrorInfo,\n\tGlobalAPI,\n\tMetaFunctions,\n\tSystemAPI,\n\tVMContext,\n\tVMWarnings,\n\tWarningInfo,\n} from \"@al8b/vm\";\n"],"mappings":";AAEA,SAASA,OAAOC,qBAAqBC,iBAAiBC,4BAA4B;","names":["L8BVM","createMetaFunctions","createVMContext","setupArrayExtensions"]}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@al8b/runtime",
3
+ "version": "0.1.0",
4
+ "sideEffects": false,
5
+ "files": [
6
+ "dist/**/*",
7
+ "README.md",
8
+ "package.json"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsup",
12
+ "clean": "bun --bun ../../../scripts/clean-package.mjs dist",
13
+ "test": "vitest run --passWithNoTests"
14
+ },
15
+ "main": "./dist/index.js",
16
+ "module": "./dist/index.mjs",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.mjs",
22
+ "require": "./dist/index.js"
23
+ },
24
+ "./package.json": "./package.json"
25
+ },
26
+ "dependencies": {
27
+ "@al8b/vm": "workspace:*",
28
+ "@al8b/io": "workspace:*",
29
+ "@al8b/lootiscript": "workspace:*",
30
+ "@al8b/framework-shared": "workspace:*",
31
+ "@al8b/screen": "workspace:*",
32
+ "@al8b/audio": "workspace:*",
33
+ "@al8b/input": "workspace:*",
34
+ "@al8b/time": "workspace:*",
35
+ "@al8b/sprites": "workspace:*",
36
+ "@al8b/image": "workspace:*",
37
+ "@al8b/map": "workspace:*",
38
+ "@al8b/player": "workspace:*",
39
+ "@al8b/scene": "workspace:*",
40
+ "@al8b/diagnostics": "workspace:*",
41
+ "@al8b/palette": "workspace:*"
42
+ },
43
+ "keywords": [
44
+ "runtime",
45
+ "game-engine",
46
+ "game-loop",
47
+ "vm"
48
+ ],
49
+ "publishConfig": {
50
+ "access": "public"
51
+ }
52
+ }