@jolly-pixel/engine 2.3.0 → 2.5.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 (77) hide show
  1. package/README.md +1 -1
  2. package/dist/audio/AudioLibrary.d.ts +3 -3
  3. package/dist/audio/AudioLibrary.d.ts.map +1 -1
  4. package/dist/audio/AudioLibrary.js.map +1 -1
  5. package/dist/components/renderers/index.d.ts +3 -6
  6. package/dist/components/renderers/index.d.ts.map +1 -1
  7. package/dist/components/renderers/index.js +0 -3
  8. package/dist/components/renderers/index.js.map +1 -1
  9. package/dist/components/renderers/model/loader.d.ts +1 -1
  10. package/dist/components/renderers/model/loader.d.ts.map +1 -1
  11. package/dist/components/renderers/text/loader.d.ts +1 -1
  12. package/dist/components/renderers/text/loader.d.ts.map +1 -1
  13. package/dist/components/script/BehaviorDecorators.d.ts +2 -2
  14. package/dist/components/script/BehaviorDecorators.d.ts.map +1 -1
  15. package/dist/components/script/BehaviorDecorators.js.map +1 -1
  16. package/dist/components/types.d.ts +1 -1
  17. package/dist/components/types.d.ts.map +1 -1
  18. package/dist/systems/Logger.d.ts +97 -0
  19. package/dist/systems/Logger.d.ts.map +1 -0
  20. package/dist/systems/Logger.js +223 -0
  21. package/dist/systems/Logger.js.map +1 -0
  22. package/dist/systems/Scene.d.ts +7 -0
  23. package/dist/systems/Scene.d.ts.map +1 -1
  24. package/dist/systems/Scene.js +11 -0
  25. package/dist/systems/Scene.js.map +1 -1
  26. package/dist/systems/SceneManager.d.ts.map +1 -1
  27. package/dist/systems/SceneManager.js +12 -0
  28. package/dist/systems/SceneManager.js.map +1 -1
  29. package/dist/systems/World.d.ts +13 -1
  30. package/dist/systems/World.d.ts.map +1 -1
  31. package/dist/systems/World.js +20 -0
  32. package/dist/systems/World.js.map +1 -1
  33. package/dist/systems/asset/Base.d.ts +7 -5
  34. package/dist/systems/asset/Base.d.ts.map +1 -1
  35. package/dist/systems/asset/Base.js.map +1 -1
  36. package/dist/systems/asset/Manager.d.ts +5 -3
  37. package/dist/systems/asset/Manager.d.ts.map +1 -1
  38. package/dist/systems/asset/Manager.js +43 -11
  39. package/dist/systems/asset/Manager.js.map +1 -1
  40. package/dist/systems/asset/Registry.d.ts +3 -3
  41. package/dist/systems/asset/Registry.d.ts.map +1 -1
  42. package/dist/systems/asset/Registry.js.map +1 -1
  43. package/dist/systems/index.d.ts +1 -0
  44. package/dist/systems/index.d.ts.map +1 -1
  45. package/dist/systems/index.js +1 -0
  46. package/dist/systems/index.js.map +1 -1
  47. package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -1
  48. package/dist/systems/rendering/ThreeRenderer.js.map +1 -1
  49. package/dist/ui/UIRenderer.d.ts +1 -0
  50. package/dist/ui/UIRenderer.d.ts.map +1 -1
  51. package/dist/ui/UIRenderer.js +2 -4
  52. package/dist/ui/UIRenderer.js.map +1 -1
  53. package/package.json +1 -1
  54. package/dist/components/renderers/tiled/TileLayer.d.ts +0 -13
  55. package/dist/components/renderers/tiled/TileLayer.d.ts.map +0 -1
  56. package/dist/components/renderers/tiled/TileLayer.js +0 -34
  57. package/dist/components/renderers/tiled/TileLayer.js.map +0 -1
  58. package/dist/components/renderers/tiled/TileMapRenderer.d.ts +0 -15
  59. package/dist/components/renderers/tiled/TileMapRenderer.d.ts.map +0 -1
  60. package/dist/components/renderers/tiled/TileMapRenderer.js +0 -59
  61. package/dist/components/renderers/tiled/TileMapRenderer.js.map +0 -1
  62. package/dist/components/renderers/tiled/TileObject.d.ts +0 -18
  63. package/dist/components/renderers/tiled/TileObject.d.ts.map +0 -1
  64. package/dist/components/renderers/tiled/TileObject.js +0 -59
  65. package/dist/components/renderers/tiled/TileObject.js.map +0 -1
  66. package/dist/components/renderers/tiled/TileSet.d.ts +0 -27
  67. package/dist/components/renderers/tiled/TileSet.d.ts.map +0 -1
  68. package/dist/components/renderers/tiled/TileSet.js +0 -116
  69. package/dist/components/renderers/tiled/TileSet.js.map +0 -1
  70. package/dist/components/renderers/tiled/loader.d.ts +0 -13
  71. package/dist/components/renderers/tiled/loader.d.ts.map +0 -1
  72. package/dist/components/renderers/tiled/loader.js +0 -39
  73. package/dist/components/renderers/tiled/loader.js.map +0 -1
  74. package/dist/components/renderers/tiled/types.d.ts +0 -325
  75. package/dist/components/renderers/tiled/types.d.ts.map +0 -1
  76. package/dist/components/renderers/tiled/types.js +0 -18
  77. package/dist/components/renderers/tiled/types.js.map +0 -1
package/README.md CHANGED
@@ -200,7 +200,7 @@ Manages sound playback across the engine. It provides a global volume controller
200
200
 
201
201
  - [Audio](./docs/audio/audio.md) — global audio controller owning the
202
202
  AudioContext and master volume.
203
- [AudioLibrary](./docs/audio/audio-library.md)
203
+ - [AudioLibrary](./docs/audio/audio-library.md)
204
204
  - [AudioBackground](./docs/audio/audio-background.md) —
205
205
  playlist-based background music with sequential track playback,
206
206
  pause/resume/stop, and playlist chaining.
@@ -1,7 +1,7 @@
1
1
  import type { LazyAsset } from "../systems/asset/Base.ts";
2
- export declare class AudioLibrary {
2
+ export declare class AudioLibrary<TKeys extends string = string> {
3
3
  #private;
4
- register(name: string, path: string): LazyAsset<AudioBuffer>;
5
- get(name: string): AudioBuffer;
4
+ register(name: TKeys, path: string): LazyAsset<AudioBuffer>;
5
+ get(name: TKeys): AudioBuffer;
6
6
  }
7
7
  //# sourceMappingURL=AudioLibrary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioLibrary.d.ts","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,qBAAa,YAAY;;IAGvB,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,SAAS,CAAC,WAAW,CAAC;IAOzB,GAAG,CACD,IAAI,EAAE,MAAM,GACX,WAAW;CAQf"}
1
+ {"version":3,"file":"AudioLibrary.d.ts","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,qBAAa,YAAY,CACvB,KAAK,SAAS,MAAM,GAAG,MAAM;;IAI7B,QAAQ,CACN,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,MAAM,GACX,SAAS,CAAC,WAAW,CAAC;IAOzB,GAAG,CACD,IAAI,EAAE,KAAK,GACV,WAAW;CAQf"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioLibrary.js","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,OAAO,YAAY;IACvB,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAEpD,QAAQ,CACN,IAAY,EACZ,IAAY;QAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAc,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CACD,IAAY;QAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"AudioLibrary.js","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,OAAO,YAAY;IAGvB,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEnD,QAAQ,CACN,IAAW,EACX,IAAY;QAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAc,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CACD,IAAW;QAEX,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}
@@ -1,14 +1,11 @@
1
1
  export * from "./sprite/SpriteRenderer.class.ts";
2
- export * from "./tiled/TileMapRenderer.ts";
3
2
  export * from "./model/ModelRenderer.ts";
4
3
  export * from "./text/TextRenderer.class.ts";
5
- import { type TiledSetAsset, type TiledMapAsset } from "./tiled/loader.ts";
6
4
  import { type Model } from "./model/loader.ts";
7
5
  import { type Font } from "./text/loader.ts";
8
6
  export declare const Loaders: {
9
- readonly tiledMap: (assetOrPath: import("../../systems/index.ts").Asset | string) => import("../../systems/index.ts").LazyAsset<TiledMapAsset>;
10
- readonly model: (assetOrPath: import("../../systems/index.ts").Asset | string) => import("../../systems/index.ts").LazyAsset<Model>;
11
- readonly font: (assetOrPath: import("../../systems/index.ts").Asset | string) => import("../../systems/index.ts").LazyAsset<Font>;
7
+ readonly model: (assetOrPath: string | import("../../systems/index.ts").Asset<Model, unknown>, options?: unknown) => import("../../systems/index.ts").LazyAsset<Model, unknown>;
8
+ readonly font: (assetOrPath: string | import("../../systems/index.ts").Asset<Font, unknown>, options?: unknown) => import("../../systems/index.ts").LazyAsset<Font, unknown>;
12
9
  };
13
- export type { TiledSetAsset, TiledMapAsset, Model, Font };
10
+ export type { Model, Font };
14
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,KAAK,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,OAAO;;;;CAIV,CAAC;AAEX,YAAY,EACV,aAAa,EACb,aAAa,EACb,KAAK,EACL,IAAI,EACL,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAEL,KAAK,KAAK,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,OAAO;;;CAGV,CAAC;AAEX,YAAY,EACV,KAAK,EACL,IAAI,EACL,CAAC"}
@@ -1,13 +1,10 @@
1
1
  export * from "./sprite/SpriteRenderer.class.js";
2
- export * from "./tiled/TileMapRenderer.js";
3
2
  export * from "./model/ModelRenderer.js";
4
3
  export * from "./text/TextRenderer.class.js";
5
4
  // Import Internal Dependencies
6
- import { tiledMap } from "./tiled/loader.js";
7
5
  import { model } from "./model/loader.js";
8
6
  import { font } from "./text/loader.js";
9
7
  export const Loaders = {
10
- tiledMap,
11
8
  model,
12
9
  font
13
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAE7C,+BAA+B;AAC/B,OAAO,EACL,QAAQ,EAGT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,EAEN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,IAAI,EAEL,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ;IACR,KAAK;IACL,IAAI;CACI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAE7C,+BAA+B;AAC/B,OAAO,EACL,KAAK,EAEN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,IAAI,EAEL,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK;IACL,IAAI;CACI,CAAC"}
@@ -4,5 +4,5 @@ export type Model = {
4
4
  object: THREE.Group<THREE.Object3DEventMap>;
5
5
  animations: THREE.AnimationClip[];
6
6
  };
7
- export declare const model: (assetOrPath: Asset | string) => import("../../../systems/index.ts").LazyAsset<Model>;
7
+ export declare const model: (assetOrPath: string | Asset<Model, unknown>, options?: unknown) => import("../../../systems/index.ts").LazyAsset<Model, unknown>;
8
8
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/model/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EACL,KAAK,EAGN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5C,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;CACnC,CAAC;AAqBF,eAAO,MAAM,KAAK,uFAA2B,CAAC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/model/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EACL,KAAK,EAGN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5C,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;CACnC,CAAC;AAqBF,eAAO,MAAM,KAAK,mIAA2B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { type Font } from "three/examples/jsm/loaders/FontLoader.js";
2
- export declare const font: (assetOrPath: import("../../../systems/index.ts").Asset | string) => import("../../../systems/index.ts").LazyAsset<Font>;
2
+ export declare const font: (assetOrPath: string | import("../../../systems/index.ts").Asset<Font, unknown>, options?: unknown) => import("../../../systems/index.ts").LazyAsset<Font, unknown>;
3
3
  export type { Font };
4
4
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,0CAA0C,CAAC;AAoBlD,eAAO,MAAM,IAAI,0HAA0B,CAAC;AAE5C,YAAY,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,0CAA0C,CAAC;AAoBlD,eAAO,MAAM,IAAI,qKAA0B,CAAC;AAE5C,YAAY,EAAE,IAAI,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import "reflect-metadata";
2
- import type { ModelRenderer, SpriteRenderer, TextRenderer, TiledMapRenderer } from "../renderers/index.ts";
2
+ import type { ModelRenderer, SpriteRenderer, TextRenderer } from "../renderers/index.ts";
3
3
  import type { ActorComponent } from "../../actor/index.ts";
4
4
  export type ScenePropertyType = "string" | "string[]" | "number" | "number[]" | "boolean" | "boolean[]" | "Vector2" | "Vector3" | "Vector4" | "Color";
5
5
  export interface ScenePropertyOptions {
@@ -21,7 +21,7 @@ export declare function SceneProperty(options: ScenePropertyOptions): PropertyDe
21
21
  export declare namespace SceneProperty {
22
22
  var Metadata: symbol;
23
23
  }
24
- export type SceneActorComponentType = typeof ModelRenderer | typeof SpriteRenderer | typeof TextRenderer | typeof TiledMapRenderer | typeof ActorComponent | any;
24
+ export type SceneActorComponentType = typeof ModelRenderer | typeof SpriteRenderer | typeof TextRenderer | typeof ActorComponent | any;
25
25
  export declare function SceneActorComponent(classObject: SceneActorComponentType): (object: Object, propertyName: BehaviorKey) => void;
26
26
  export declare function getBehaviorMetadata(object: Object): BehaviorMetadata | undefined;
27
27
  export declare function createBehaviorMetadata(): BehaviorMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"BehaviorDecorators.d.ts","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACvD,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;CACvD,CAAC;AAEF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,iBAAiB,CA8BnB;yBAhCe,aAAa;;;AAmC7B,MAAM,MAAM,uBAAuB,GAC/B,OAAO,aAAa,GACpB,OAAO,cAAc,GACrB,OAAO,YAAY,GACnB,OAAO,gBAAgB,GACvB,OAAO,cAAc,GACrB,GAAG,CAAC;AAER,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,uBAAuB,IAGlC,QAAQ,MAAM,EACd,cAAc,WAAW,KACxB,IAAI,CAiBR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GACb,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAKzD"}
1
+ {"version":3,"file":"BehaviorDecorators.d.ts","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACvD,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;CACvD,CAAC;AAEF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,iBAAiB,CA8BnB;yBAhCe,aAAa;;;AAmC7B,MAAM,MAAM,uBAAuB,GAC/B,OAAO,aAAa,GACpB,OAAO,cAAc,GACrB,OAAO,YAAY,GACnB,OAAO,cAAc,GACrB,GAAG,CAAC;AAER,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,uBAAuB,IAGlC,QAAQ,MAAM,EACd,cAAc,WAAW,KACxB,IAAI,CAiBR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GACb,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAKzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"BehaviorDecorators.js","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,kBAAkB,CAAC;AA0C1B,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,EAAE,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAEtE,MAAM,aAAa,GAA6B;YAC9C,IAAI;YACJ,KAAK;YACL,WAAW;SACZ,CAAC;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAErD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AACD,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAUxD,MAAM,UAAU,mBAAmB,CACjC,WAAoC;IAEpC,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAEnD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc;IAEd,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,UAAU,EAAE,IAAI,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"BehaviorDecorators.js","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,kBAAkB,CAAC;AAyC1B,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,EAAE,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAEtE,MAAM,aAAa,GAA6B;YAC9C,IAAI;YACJ,KAAK;YACL,WAAW;SACZ,CAAC;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAErD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AACD,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AASxD,MAAM,UAAU,mBAAmB,CACjC,WAAoC;IAEpC,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAEnD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc;IAEd,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,UAAU,EAAE,IAAI,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Actor } from "../actor/Actor.ts";
2
- export type StrictComponentEnum = "ScriptBehavior" | "Camera" | "VoxelRenderer" | "SpriteRenderer" | "ModelRenderer" | "TiledMapRenderer" | "TextRenderer";
2
+ export type StrictComponentEnum = "ScriptBehavior" | "Camera" | "VoxelRenderer" | "SpriteRenderer" | "ModelRenderer" | "TextRenderer";
3
3
  export type FreeComponentEnum = StrictComponentEnum | (string & {});
4
4
  export interface Component {
5
5
  actor: Actor<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,IAAI,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,97 @@
1
+ import type { ConsoleAdapter } from "../adapters/console.ts";
2
+ export type LogLevel = "void" | "trace" | "debug" | "info" | "warn" | "error" | "fatal";
3
+ export declare const kLogLevelValue: Record<LogLevel, number>;
4
+ export interface LoggerOptions {
5
+ /**
6
+ * Minimum severity level to emit. Messages below this level are silently dropped.
7
+ * Default: "info"
8
+ */
9
+ level?: LogLevel;
10
+ /**
11
+ * Namespace glob patterns to enable. Uses dot-notation with wildcard support:
12
+ * "systems.*" → matches systems, systems.sceneManager, systems.asset.queue, ...
13
+ * "systems.asset.*" → matches systems.asset, systems.asset.registry, ...
14
+ * "*" → matches all namespaces (equivalent to debug mode)
15
+ *
16
+ * Default: [] (nothing is logged)
17
+ */
18
+ namespaces?: string[];
19
+ /**
20
+ * Output adapter. Defaults to the global `console`.
21
+ */
22
+ adapter?: ConsoleAdapter;
23
+ }
24
+ export interface LoggerChildOptions {
25
+ namespace: string;
26
+ }
27
+ declare const kPrivateToken: unique symbol;
28
+ interface LoggerPrivateOptions {
29
+ token: typeof kPrivateToken;
30
+ namespace: string;
31
+ root: LoggerState;
32
+ }
33
+ /**
34
+ * Holds the shared mutable state of a logger tree.
35
+ * All child loggers created via `.child()` reference the same LoggerState,
36
+ * so runtime changes to level or namespaces propagate immediately.
37
+ */
38
+ declare class LoggerState {
39
+ #private;
40
+ level: LogLevel;
41
+ namespaces: string[];
42
+ adapter: ConsoleAdapter;
43
+ constructor(options: LoggerOptions);
44
+ invalidateMatchers(): void;
45
+ isNamespaceEnabled(namespace: string): boolean;
46
+ }
47
+ export declare class Logger {
48
+ #private;
49
+ readonly namespace: string;
50
+ constructor(options?: LoggerOptions);
51
+ constructor(options: LoggerPrivateOptions);
52
+ get level(): LogLevel;
53
+ /**
54
+ * Changes the minimum log level for the entire logger tree.
55
+ * Affects all child loggers immediately since they share the same state.
56
+ */
57
+ setLevel(level: LogLevel): void;
58
+ /**
59
+ * Adds one or more namespace patterns to the enabled set.
60
+ * Invalidates the matcher cache so new patterns take effect immediately.
61
+ *
62
+ * @example
63
+ * logger.enableNamespace("systems.*", "actor");
64
+ */
65
+ enableNamespace(...patterns: string[]): void;
66
+ /**
67
+ * Removes one or more namespace patterns from the enabled set.
68
+ */
69
+ disableNamespace(...patterns: string[]): void;
70
+ /**
71
+ * Returns true if the given level would be emitted given the current minimum level.
72
+ */
73
+ isLevelEnabled(level: LogLevel): boolean;
74
+ /**
75
+ * Returns true if this logger's own namespace is currently enabled.
76
+ */
77
+ isNamespaceEnabled(): boolean;
78
+ /**
79
+ * Creates a child logger whose namespace is appended to this logger's namespace.
80
+ * The child shares the same level, namespace list, and adapter as the root.
81
+ *
82
+ * @example
83
+ * const root = new Logger({ level: "debug", namespaces: ["systems.*"] });
84
+ * const child = root.child({ namespace: "systems.sceneManager" });
85
+ * child.debug("setScene", { scene: "Game" });
86
+ * // → [DEBUG] [systems.sceneManager] setScene
87
+ */
88
+ child(options: LoggerChildOptions): Logger;
89
+ trace(msg: string, meta?: Record<string, unknown>): void;
90
+ debug(msg: string, meta?: Record<string, unknown>): void;
91
+ info(msg: string, meta?: Record<string, unknown>): void;
92
+ warn(msg: string, meta?: Record<string, unknown>): void;
93
+ error(msg: string, meta?: Record<string, unknown>): void;
94
+ fatal(msg: string, meta?: Record<string, unknown>): void;
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/systems/Logger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAGxF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQnD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,QAAA,MAAM,aAAa,eAA0B,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,KAAK,EAAE,OAAO,aAAa,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;GAIG;AACH,cAAM,WAAW;;IACf,KAAK,EAAE,QAAQ,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;gBAKtB,OAAO,EAAE,aAAa;IAaxB,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB,CAChB,SAAS,EAAE,MAAM,GAChB,OAAO;CAsBX;AAED,qBAAa,MAAM;;IAEjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,CAAC,EAAE,aAAa;gBACvB,OAAO,EAAE,oBAAoB;IAYzC,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED;;;OAGG;IACH,QAAQ,CACN,KAAK,EAAE,QAAQ,GACd,IAAI;IAIP;;;;;;OAMG;IACH,eAAe,CACb,GAAG,QAAQ,EAAE,MAAM,EAAE,GACpB,IAAI;IAKP;;OAEG;IACH,gBAAgB,CACd,GAAG,QAAQ,EAAE,MAAM,EAAE,GACpB,IAAI;IAWP;;OAEG;IACH,cAAc,CACZ,KAAK,EAAE,QAAQ,GACd,OAAO;IAIV;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;;;;;;;;OASG;IACH,KAAK,CACH,OAAO,EAAE,kBAAkB,GAC1B,MAAM;IAYT,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,IAAI,CACF,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,IAAI,CACF,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;CAkDR"}
@@ -0,0 +1,223 @@
1
+ // Import Third-party Dependencies
2
+ import pm from "picomatch";
3
+ // CONSTANTS
4
+ export const kLogLevelValue = {
5
+ void: 0,
6
+ trace: 10,
7
+ debug: 20,
8
+ info: 30,
9
+ warn: 40,
10
+ error: 50,
11
+ fatal: 60
12
+ };
13
+ // CONSTANTS
14
+ const kPrivateToken = Symbol("LoggerPrivate");
15
+ /**
16
+ * Holds the shared mutable state of a logger tree.
17
+ * All child loggers created via `.child()` reference the same LoggerState,
18
+ * so runtime changes to level or namespaces propagate immediately.
19
+ */
20
+ class LoggerState {
21
+ level;
22
+ namespaces;
23
+ adapter;
24
+ #matchers = new Map();
25
+ constructor(options) {
26
+ const { level = "info", namespaces = [], adapter = console } = options;
27
+ this.level = level;
28
+ this.namespaces = structuredClone(namespaces);
29
+ this.adapter = adapter;
30
+ }
31
+ invalidateMatchers() {
32
+ this.#matchers.clear();
33
+ }
34
+ isNamespaceEnabled(namespace) {
35
+ if (this.namespaces.length === 0) {
36
+ return false;
37
+ }
38
+ const normalized = normalizeNamespace(namespace);
39
+ for (const pattern of this.namespaces) {
40
+ let matcher = this.#matchers.get(pattern);
41
+ if (!matcher) {
42
+ matcher = pm(normalizePattern(pattern));
43
+ this.#matchers.set(pattern, matcher);
44
+ }
45
+ if (normalized === "" || matcher(normalized)) {
46
+ return true;
47
+ }
48
+ }
49
+ return false;
50
+ }
51
+ }
52
+ export class Logger {
53
+ #root;
54
+ namespace;
55
+ constructor(options = {}) {
56
+ if ("token" in options && options.token === kPrivateToken) {
57
+ this.namespace = options.namespace;
58
+ this.#root = options.root;
59
+ }
60
+ else {
61
+ this.namespace = "";
62
+ this.#root = new LoggerState(options);
63
+ }
64
+ }
65
+ get level() {
66
+ return this.#root.level;
67
+ }
68
+ /**
69
+ * Changes the minimum log level for the entire logger tree.
70
+ * Affects all child loggers immediately since they share the same state.
71
+ */
72
+ setLevel(level) {
73
+ this.#root.level = level;
74
+ }
75
+ /**
76
+ * Adds one or more namespace patterns to the enabled set.
77
+ * Invalidates the matcher cache so new patterns take effect immediately.
78
+ *
79
+ * @example
80
+ * logger.enableNamespace("systems.*", "actor");
81
+ */
82
+ enableNamespace(...patterns) {
83
+ this.#root.namespaces.push(...patterns);
84
+ this.#root.invalidateMatchers();
85
+ }
86
+ /**
87
+ * Removes one or more namespace patterns from the enabled set.
88
+ */
89
+ disableNamespace(...patterns) {
90
+ for (const pattern of patterns) {
91
+ const index = this.#root.namespaces.indexOf(pattern);
92
+ if (index !== -1) {
93
+ this.#root.namespaces.splice(index, 1);
94
+ }
95
+ }
96
+ this.#root.invalidateMatchers();
97
+ }
98
+ /**
99
+ * Returns true if the given level would be emitted given the current minimum level.
100
+ */
101
+ isLevelEnabled(level) {
102
+ return kLogLevelValue[level] >= kLogLevelValue[this.#root.level];
103
+ }
104
+ /**
105
+ * Returns true if this logger's own namespace is currently enabled.
106
+ */
107
+ isNamespaceEnabled() {
108
+ return this.#root.isNamespaceEnabled(this.namespace);
109
+ }
110
+ /**
111
+ * Creates a child logger whose namespace is appended to this logger's namespace.
112
+ * The child shares the same level, namespace list, and adapter as the root.
113
+ *
114
+ * @example
115
+ * const root = new Logger({ level: "debug", namespaces: ["systems.*"] });
116
+ * const child = root.child({ namespace: "systems.sceneManager" });
117
+ * child.debug("setScene", { scene: "Game" });
118
+ * // → [DEBUG] [systems.sceneManager] setScene
119
+ */
120
+ child(options) {
121
+ const ns = this.namespace
122
+ ? `${this.namespace}.${options.namespace}`
123
+ : options.namespace;
124
+ return new Logger({
125
+ token: kPrivateToken,
126
+ namespace: ns,
127
+ root: this.#root
128
+ });
129
+ }
130
+ trace(msg, meta) {
131
+ if (this.#root.level === "void") {
132
+ return;
133
+ }
134
+ this.#emit("trace", msg, meta);
135
+ }
136
+ debug(msg, meta) {
137
+ if (this.#root.level === "void") {
138
+ return;
139
+ }
140
+ this.#emit("debug", msg, meta);
141
+ }
142
+ info(msg, meta) {
143
+ if (this.#root.level === "void") {
144
+ return;
145
+ }
146
+ this.#emit("info", msg, meta);
147
+ }
148
+ warn(msg, meta) {
149
+ if (this.#root.level === "void") {
150
+ return;
151
+ }
152
+ this.#emit("warn", msg, meta);
153
+ }
154
+ error(msg, meta) {
155
+ if (this.#root.level === "void") {
156
+ return;
157
+ }
158
+ this.#emit("error", msg, meta);
159
+ }
160
+ fatal(msg, meta) {
161
+ if (this.#root.level === "void") {
162
+ return;
163
+ }
164
+ this.#emit("fatal", msg, meta);
165
+ }
166
+ #emit(level, msg, meta) {
167
+ if (this.#root.level === "void") {
168
+ return;
169
+ }
170
+ if (!this.isLevelEnabled(level) ||
171
+ !this.isNamespaceEnabled()) {
172
+ return;
173
+ }
174
+ const ns = this.namespace || "root";
175
+ const formatted = `[${level.toUpperCase()}] [${ns}] ${msg}`;
176
+ if (level === "warn") {
177
+ if (meta === undefined) {
178
+ this.#root.adapter.warn(formatted);
179
+ }
180
+ else {
181
+ this.#root.adapter.warn(formatted, meta);
182
+ }
183
+ }
184
+ else if (level === "error" || level === "fatal") {
185
+ if (meta === undefined) {
186
+ this.#root.adapter.error(formatted);
187
+ }
188
+ else {
189
+ this.#root.adapter.error(formatted, meta);
190
+ }
191
+ }
192
+ else if (meta === undefined) {
193
+ this.#root.adapter.log(formatted);
194
+ }
195
+ else {
196
+ this.#root.adapter.log(formatted, meta);
197
+ }
198
+ }
199
+ }
200
+ /**
201
+ * Converts a dot-notation namespace pattern into a slash-separated glob
202
+ * compatible with picomatch.
203
+ *
204
+ * @example
205
+ * "systems.*" → "systems/**"
206
+ * "systems.asset.*" → "systems/asset/**"
207
+ * "*" → "**"
208
+ * "systems" → "systems"
209
+ */
210
+ function normalizePattern(pattern) {
211
+ const normalized = pattern.replaceAll(".", "/");
212
+ if (normalized === "*") {
213
+ return "**";
214
+ }
215
+ if (normalized.endsWith("/*")) {
216
+ return `${normalized.slice(0, -1)}**`;
217
+ }
218
+ return normalized;
219
+ }
220
+ function normalizeNamespace(namespace) {
221
+ return namespace.replaceAll(".", "/");
222
+ }
223
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/systems/Logger.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,25 @@
1
1
  import { EventEmitter } from "@posva/event-emitter";
2
2
  import type { World, WorldDefaultContext } from "./World.ts";
3
3
  import { IntegerIncrement } from "./generators/IntegerIncrement.ts";
4
+ import type { Logger } from "./Logger.ts";
4
5
  export type SceneLifecycleEvents = {
5
6
  awake: [];
6
7
  start: [];
7
8
  destroy: [];
8
9
  };
9
10
  export declare abstract class Scene<TContext = WorldDefaultContext> extends EventEmitter<SceneLifecycleEvents> {
11
+ #private;
10
12
  static readonly Id: IntegerIncrement;
11
13
  readonly id: number;
12
14
  readonly name: string;
13
15
  /** Set by SceneManager when the scene is activated. */
14
16
  world: World<any, TContext>;
15
17
  constructor(name: string);
18
+ /**
19
+ * A child logger scoped to this scene's namespace (`scenes.<name>`).
20
+ * Created lazily on first access; safe to use from `awake()` onwards.
21
+ */
22
+ get logger(): Logger;
16
23
  /**
17
24
  * Called once when the scene is first activated (before the first start/update).
18
25
  * Populate actors here.
@@ -1 +1 @@
1
- {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,EAAE,CAAC;IACV,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,8BAAsB,KAAK,CACzB,QAAQ,GAAG,mBAAmB,CAC9B,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IAC1C,MAAM,CAAC,QAAQ,CAAC,EAAE,mBAA0B;IAE5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,KAAK,EAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAEjB,IAAI,EAAE,MAAM;IAMxB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAEb;;;OAGG;IACH,KAAK,IAAI,IAAI;IAEb;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAEhC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAErC;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAChB"}
1
+ {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,EAAE,CAAC;IACV,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,8BAAsB,KAAK,CACzB,QAAQ,GAAG,mBAAmB,CAC9B,SAAQ,YAAY,CAAC,oBAAoB,CAAC;;IAC1C,MAAM,CAAC,QAAQ,CAAC,EAAE,mBAA0B;IAE5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,KAAK,EAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAIjB,IAAI,EAAE,MAAM;IAMxB;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,CAMnB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;IAEb;;;OAGG;IACH,KAAK,IAAI,IAAI;IAEb;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAEhC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAErC;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAChB"}
@@ -8,11 +8,22 @@ export class Scene extends EventEmitter {
8
8
  name;
9
9
  /** Set by SceneManager when the scene is activated. */
10
10
  world;
11
+ #logger;
11
12
  constructor(name) {
12
13
  super();
13
14
  this.id = Scene.Id.incr();
14
15
  this.name = name;
15
16
  }
17
+ /**
18
+ * A child logger scoped to this scene's namespace (`scenes.<name>`).
19
+ * Created lazily on first access; safe to use from `awake()` onwards.
20
+ */
21
+ get logger() {
22
+ this.#logger ??= this.world.logger.child({
23
+ namespace: `Scene.${this.name}`
24
+ });
25
+ return this.#logger;
26
+ }
16
27
  /**
17
28
  * Called once when the scene is first activated (before the first start/update).
18
29
  * Populate actors here.
@@ -1 +1 @@
1
- {"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAQpE,MAAM,OAAgB,KAEpB,SAAQ,YAAkC;IAC1C,MAAM,CAAU,EAAE,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEnC,EAAE,CAAS;IACX,IAAI,CAAS;IAEtB,uDAAuD;IACvD,KAAK,CAAwB;IAE7B,YAAY,IAAY;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,KAAU,CAAC;IAEhB;;;OAGG;IACH,KAAK,KAAU,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,UAAkB,IAAS,CAAC;IAEnC;;OAEG;IACH,WAAW,CAAC,UAAkB,IAAS,CAAC;IAExC;;;;OAIG;IACH,OAAO,KAAU,CAAC"}
1
+ {"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AASpE,MAAM,OAAgB,KAEpB,SAAQ,YAAkC;IAC1C,MAAM,CAAU,EAAE,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEnC,EAAE,CAAS;IACX,IAAI,CAAS;IAEtB,uDAAuD;IACvD,KAAK,CAAwB;IAE7B,OAAO,CAAqB;IAE5B,YAAY,IAAY;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK,KAAU,CAAC;IAEhB;;;OAGG;IACH,KAAK,KAAU,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,UAAkB,IAAS,CAAC;IAEnC;;OAEG;IACH,WAAW,CAAC,UAAkB,IAAS,CAAC;IAExC;;;;OAIG;IACH,OAAO,KAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../src/systems/SceneManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACL,KAAK,EACL,cAAc,EACd,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,kBAAkB,CAAC,QAAQ,IAAI;IACzC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvB;;;QAGI;IACJ,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,QAAQ,GAAG,mBAAmB,IAAI;IACxD,KAAK,EAAE,EAAE,CAAC;IACV,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;CACxC,CAAC;AAEF,qBAAa,YAAY,CACvB,QAAQ,GAAG,mBAAmB,CAC9B,SAAQ,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;IAC3C,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;IAErB,qBAAqB,EAAE,SAAS,EAAE,CAAM;IACxC,uBAAuB,EAAE,SAAS,EAAE,CAAM;IAc1C,QAAQ,CAAC,IAAI,sBAGV;gBAGD,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK;IAMrB,IAAI,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAEzC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,SAAS;IAIT,SAAS,CACP,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,GAC1B,IAAI;IAIP,KAAK;IAUL,QAAQ,CACN,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GACrB,IAAI;IAmCP,SAAS,CACP,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GACrB,IAAI;IAIP;;;;OAIG;IACH,WAAW,CACT,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GACrB,IAAI;IAsBP,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IACzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqC/B,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE;IAsBzC,UAAU;IAoCV,WAAW,CACT,SAAS,EAAE,MAAM;IAYnB,MAAM,CACJ,SAAS,EAAE,MAAM;IAYnB,QAAQ;IAkBR,YAAY,CACV,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAkBxB,aAAa,CACX,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAaxB,eAAe,CACb,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAgBxB,QAAQ,CACN,IAAI,EAAE,MAAM,GACX,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IAezB,gBAAgB,CACd,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC;CActC"}
1
+ {"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../src/systems/SceneManager.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export class SceneManager extends EventEmitter {
14
14
  #pendingScene = null;
15
15
  #sceneStartPending = false;
16
16
  #world = null;
17
+ #logger;
17
18
  #appendedScenes = new Map();
18
19
  #appendedScenesPendingStart = new Set();
19
20
  tree = new ActorTree({
@@ -35,6 +36,7 @@ export class SceneManager extends EventEmitter {
35
36
  }
36
37
  bindWorld(world) {
37
38
  this.#world = world;
39
+ this.#logger = world.logger.child({ namespace: "Systems.SceneManager" });
38
40
  }
39
41
  awake() {
40
42
  for (const { actor } of this.tree.walk()) {
@@ -47,6 +49,9 @@ export class SceneManager extends EventEmitter {
47
49
  }
48
50
  setScene(scene) {
49
51
  if (this.#currentScene !== null) {
52
+ this.#logger.debug("Tearing down current scene", {
53
+ scene: this.#currentScene.name
54
+ });
50
55
  for (const entry of this.#appendedScenes.values()) {
51
56
  this.emit("sceneRemoved", entry.scene);
52
57
  entry.scene.destroy();
@@ -65,6 +70,9 @@ export class SceneManager extends EventEmitter {
65
70
  this.#registeredActors.clear();
66
71
  this.#actorsByName.clear();
67
72
  }
73
+ this.#logger.info("Scene changed", {
74
+ scene: scene.name
75
+ });
68
76
  scene.world = this.#world;
69
77
  this.#currentScene = scene;
70
78
  scene.awake();
@@ -81,6 +89,7 @@ export class SceneManager extends EventEmitter {
81
89
  * All actors created during awake() are tracked and will be destroyed on removeScene().
82
90
  */
83
91
  appendScene(scene) {
92
+ this.#logger.debug("Appending scene", { scene: scene.name });
84
93
  const snapshot = new Set(this.#registeredActors);
85
94
  scene.world = this.#world;
86
95
  scene.awake();
@@ -112,6 +121,9 @@ export class SceneManager extends EventEmitter {
112
121
  }
113
122
  }
114
123
  #teardownAppendedScene(id, entry) {
124
+ this.#logger.debug("Removing appended scene", {
125
+ scene: entry.scene.name
126
+ });
115
127
  this.emit("sceneRemoved", entry.scene);
116
128
  entry.scene.destroy();
117
129
  // Destroy only root-level owned actors; destroyActor cascades to children