@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.
- package/README.md +87 -0
- package/dist/assets/constructors.d.mts +6 -0
- package/dist/assets/constructors.d.ts +6 -0
- package/dist/assets/constructors.js +40 -0
- package/dist/assets/constructors.js.map +1 -0
- package/dist/assets/constructors.mjs +12 -0
- package/dist/assets/constructors.mjs.map +1 -0
- package/dist/assets/index.d.mts +11 -0
- package/dist/assets/index.d.ts +11 -0
- package/dist/assets/index.js +276 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/index.mjs +247 -0
- package/dist/assets/index.mjs.map +1 -0
- package/dist/assets/loader.d.mts +83 -0
- package/dist/assets/loader.d.ts +83 -0
- package/dist/assets/loader.js +260 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/loader.mjs +237 -0
- package/dist/assets/loader.mjs.map +1 -0
- package/dist/browser/index.js +16599 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/index.min.js +171 -0
- package/dist/constants.d.mts +16 -0
- package/dist/constants.d.ts +16 -0
- package/dist/constants.js +49 -0
- package/dist/constants.js.map +1 -0
- package/dist/constants.mjs +18 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/core/api-factory.d.mts +63 -0
- package/dist/core/api-factory.d.ts +63 -0
- package/dist/core/api-factory.js +239 -0
- package/dist/core/api-factory.js.map +1 -0
- package/dist/core/api-factory.mjs +214 -0
- package/dist/core/api-factory.mjs.map +1 -0
- package/dist/core/assets-registry.d.mts +14 -0
- package/dist/core/assets-registry.d.ts +14 -0
- package/dist/core/assets-registry.js +64 -0
- package/dist/core/assets-registry.js.map +1 -0
- package/dist/core/assets-registry.mjs +41 -0
- package/dist/core/assets-registry.mjs.map +1 -0
- package/dist/core/controller.d.mts +109 -0
- package/dist/core/controller.d.ts +109 -0
- package/dist/core/controller.js +1782 -0
- package/dist/core/controller.js.map +1 -0
- package/dist/core/controller.mjs +1758 -0
- package/dist/core/controller.mjs.map +1 -0
- package/dist/core/debug-logger.d.mts +35 -0
- package/dist/core/debug-logger.d.ts +35 -0
- package/dist/core/debug-logger.js +177 -0
- package/dist/core/debug-logger.js.map +1 -0
- package/dist/core/debug-logger.mjs +154 -0
- package/dist/core/debug-logger.mjs.map +1 -0
- package/dist/core/error-handler.d.mts +25 -0
- package/dist/core/error-handler.d.ts +25 -0
- package/dist/core/error-handler.js +106 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/error-handler.mjs +81 -0
- package/dist/core/error-handler.mjs.map +1 -0
- package/dist/core/index.d.mts +14 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.js +1782 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +1757 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/hot-reload/index.d.mts +7 -0
- package/dist/hot-reload/index.d.ts +7 -0
- package/dist/hot-reload/index.js +103 -0
- package/dist/hot-reload/index.js.map +1 -0
- package/dist/hot-reload/index.mjs +78 -0
- package/dist/hot-reload/index.mjs.map +1 -0
- package/dist/hot-reload/updater.d.mts +33 -0
- package/dist/hot-reload/updater.d.ts +33 -0
- package/dist/hot-reload/updater.js +101 -0
- package/dist/hot-reload/updater.js.map +1 -0
- package/dist/hot-reload/updater.mjs +78 -0
- package/dist/hot-reload/updater.mjs.map +1 -0
- package/dist/index.d.mts +24 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +1859 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1817 -0
- package/dist/index.mjs.map +1 -0
- package/dist/input/index.d.mts +2 -0
- package/dist/input/index.d.ts +2 -0
- package/dist/input/index.js +79 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/index.mjs +54 -0
- package/dist/input/index.mjs.map +1 -0
- package/dist/input/manager.d.mts +37 -0
- package/dist/input/manager.d.ts +37 -0
- package/dist/input/manager.js +77 -0
- package/dist/input/manager.js.map +1 -0
- package/dist/input/manager.mjs +54 -0
- package/dist/input/manager.mjs.map +1 -0
- package/dist/loop/game-loop.d.mts +63 -0
- package/dist/loop/game-loop.d.ts +63 -0
- package/dist/loop/game-loop.js +156 -0
- package/dist/loop/game-loop.js.map +1 -0
- package/dist/loop/game-loop.mjs +131 -0
- package/dist/loop/game-loop.mjs.map +1 -0
- package/dist/loop/index.d.mts +1 -0
- package/dist/loop/index.d.ts +1 -0
- package/dist/loop/index.js +156 -0
- package/dist/loop/index.js.map +1 -0
- package/dist/loop/index.mjs +131 -0
- package/dist/loop/index.mjs.map +1 -0
- package/dist/storage/index.d.mts +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.js +31 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/index.mjs +6 -0
- package/dist/storage/index.mjs.map +1 -0
- package/dist/system/api.d.mts +28 -0
- package/dist/system/api.d.ts +28 -0
- package/dist/system/api.js +126 -0
- package/dist/system/api.js.map +1 -0
- package/dist/system/api.mjs +101 -0
- package/dist/system/api.mjs.map +1 -0
- package/dist/system/index.d.mts +2 -0
- package/dist/system/index.d.ts +2 -0
- package/dist/system/index.js +126 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/index.mjs +101 -0
- package/dist/system/index.mjs.map +1 -0
- package/dist/types/assets.d.mts +43 -0
- package/dist/types/assets.d.ts +43 -0
- package/dist/types/assets.js +19 -0
- package/dist/types/assets.js.map +1 -0
- package/dist/types/assets.mjs +1 -0
- package/dist/types/assets.mjs.map +1 -0
- package/dist/types/bridge.d.mts +66 -0
- package/dist/types/bridge.d.ts +66 -0
- package/dist/types/bridge.js +19 -0
- package/dist/types/bridge.js.map +1 -0
- package/dist/types/bridge.mjs +1 -0
- package/dist/types/bridge.mjs.map +1 -0
- package/dist/types/index.d.mts +6 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +1 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types/runtime.d.mts +71 -0
- package/dist/types/runtime.d.ts +71 -0
- package/dist/types/runtime.js +19 -0
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/runtime.mjs +1 -0
- package/dist/types/runtime.mjs.map +1 -0
- package/dist/types/vm.d.mts +1 -0
- package/dist/types/vm.d.ts +1 -0
- package/dist/types/vm.js +19 -0
- package/dist/types/vm.js.map +1 -0
- package/dist/types/vm.mjs +1 -0
- package/dist/types/vm.mjs.map +1 -0
- package/dist/utils/deep-clone.d.mts +14 -0
- package/dist/utils/deep-clone.d.ts +14 -0
- package/dist/utils/deep-clone.js +42 -0
- package/dist/utils/deep-clone.js.map +1 -0
- package/dist/utils/deep-clone.mjs +19 -0
- package/dist/utils/deep-clone.mjs.map +1 -0
- package/dist/utils/index.d.mts +3 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +156 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +129 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/object-pool.d.mts +66 -0
- package/dist/utils/object-pool.d.ts +66 -0
- package/dist/utils/object-pool.js +113 -0
- package/dist/utils/object-pool.js.map +1 -0
- package/dist/utils/object-pool.mjs +90 -0
- package/dist/utils/object-pool.mjs.map +1 -0
- package/dist/utils/shallow-equal.d.mts +15 -0
- package/dist/utils/shallow-equal.d.ts +15 -0
- package/dist/utils/shallow-equal.js +53 -0
- package/dist/utils/shallow-equal.js.map +1 -0
- package/dist/utils/shallow-equal.mjs +30 -0
- package/dist/utils/shallow-equal.mjs.map +1 -0
- package/dist/vm/index.d.mts +1 -0
- package/dist/vm/index.d.ts +1 -0
- package/dist/vm/index.js +37 -0
- package/dist/vm/index.js.map +1 -0
- package/dist/vm/index.mjs +9 -0
- package/dist/vm/index.mjs.map +1 -0
- 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';
|
package/dist/vm/index.js
ADDED
|
@@ -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 @@
|
|
|
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
|
+
}
|