@rpgjs/client 5.0.0-alpha.2 → 5.0.0-alpha.21
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/dist/Game/AnimationManager.d.ts +8 -0
- package/dist/Game/Map.d.ts +7 -1
- package/dist/Gui/Gui.d.ts +170 -5
- package/dist/Resource.d.ts +97 -0
- package/dist/RpgClient.d.ts +259 -59
- package/dist/RpgClientEngine.d.ts +379 -6
- package/dist/Sound.d.ts +199 -0
- package/dist/components/animations/index.d.ts +4 -0
- package/dist/components/dynamics/parse-value.d.ts +1 -0
- package/dist/components/gui/index.d.ts +3 -3
- package/dist/components/index.d.ts +3 -1
- package/dist/components/prebuilt/index.d.ts +18 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/index10.js +149 -4
- package/dist/index10.js.map +1 -1
- package/dist/index11.js +22 -7
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +6 -4
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +11 -14
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +8 -40
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +217 -180
- package/dist/index15.js.map +1 -1
- package/dist/index16.js +104 -7
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +82 -372
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +110 -27
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +360 -18
- package/dist/index19.js.map +1 -1
- package/dist/index2.js +726 -32
- package/dist/index2.js.map +1 -1
- package/dist/index20.js +5 -2416
- package/dist/index20.js.map +1 -1
- package/dist/index21.js +47 -109
- package/dist/index21.js.map +1 -1
- package/dist/index22.js +7 -107
- package/dist/index22.js.map +1 -1
- package/dist/index23.js +394 -65
- package/dist/index23.js.map +1 -1
- package/dist/index24.js +40 -15
- package/dist/index24.js.map +1 -1
- package/dist/index25.js +20 -36
- package/dist/index25.js.map +1 -1
- package/dist/index26.js +2629 -1
- package/dist/index26.js.map +1 -1
- package/dist/index27.js +102 -310
- package/dist/index27.js.map +1 -1
- package/dist/index28.js +63 -17
- package/dist/index28.js.map +1 -1
- package/dist/index29.js +18 -8
- package/dist/index29.js.map +1 -1
- package/dist/index3.js +70 -8
- package/dist/index3.js.map +1 -1
- package/dist/index30.js +24 -8
- package/dist/index30.js.map +1 -1
- package/dist/index31.js +88 -167
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +34 -494
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +22 -10
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +3 -4401
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +20 -1
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +18 -82
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +8 -58
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +4 -13
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +10 -18
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +25 -5
- package/dist/index4.js.map +1 -1
- package/dist/index40.js +7 -0
- package/dist/index40.js.map +1 -0
- package/dist/index41.js +3690 -0
- package/dist/index41.js.map +1 -0
- package/dist/index42.js +187 -0
- package/dist/index42.js.map +1 -0
- package/dist/index43.js +504 -0
- package/dist/index43.js.map +1 -0
- package/dist/index44.js +77 -0
- package/dist/index44.js.map +1 -0
- package/dist/index45.js +6 -0
- package/dist/index45.js.map +1 -0
- package/dist/index46.js +20 -0
- package/dist/index46.js.map +1 -0
- package/dist/index47.js +146 -0
- package/dist/index47.js.map +1 -0
- package/dist/index48.js +12 -0
- package/dist/index48.js.map +1 -0
- package/dist/index49.js +113 -0
- package/dist/index49.js.map +1 -0
- package/dist/index5.js +2 -1
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +136 -0
- package/dist/index50.js.map +1 -0
- package/dist/index51.js +137 -0
- package/dist/index51.js.map +1 -0
- package/dist/index52.js +112 -0
- package/dist/index52.js.map +1 -0
- package/dist/index53.js +141 -0
- package/dist/index53.js.map +1 -0
- package/dist/index54.js +9 -0
- package/dist/index54.js.map +1 -0
- package/dist/index55.js +54 -0
- package/dist/index55.js.map +1 -0
- package/dist/index6.js +1 -1
- package/dist/index6.js.map +1 -1
- package/dist/index7.js +11 -3
- package/dist/index7.js.map +1 -1
- package/dist/index8.js +68 -7
- package/dist/index8.js.map +1 -1
- package/dist/index9.js +278 -15
- package/dist/index9.js.map +1 -1
- package/dist/presets/animation.d.ts +31 -0
- package/dist/presets/faceset.d.ts +30 -0
- package/dist/presets/index.d.ts +103 -0
- package/dist/presets/lpc.d.ts +89 -0
- package/dist/services/keyboardControls.d.ts +5 -0
- package/dist/services/loadMap.d.ts +123 -2
- package/dist/services/mmorpg.d.ts +12 -4
- package/dist/services/standalone.d.ts +54 -2
- package/package.json +22 -18
- package/src/Game/{EffectManager.ts → AnimationManager.ts} +3 -2
- package/src/Game/Map.ts +20 -2
- package/src/Game/Object.ts +163 -9
- package/src/Gui/Gui.ts +362 -17
- package/src/Resource.ts +150 -0
- package/src/RpgClient.ts +264 -58
- package/src/RpgClientEngine.ts +848 -36
- package/src/Sound.ts +253 -0
- package/src/components/{effects → animations}/animation.ce +3 -6
- package/src/components/{effects → animations}/index.ts +1 -1
- package/src/components/character.ce +193 -36
- package/src/components/dynamics/parse-value.ts +80 -0
- package/src/components/dynamics/text.ce +183 -0
- package/src/components/gui/box.ce +17 -0
- package/src/components/gui/dialogbox/index.ce +73 -35
- package/src/components/gui/dialogbox/selection.ce +16 -1
- package/src/components/gui/index.ts +3 -4
- package/src/components/index.ts +5 -1
- package/src/components/prebuilt/hp-bar.ce +255 -0
- package/src/components/prebuilt/index.ts +22 -0
- package/src/components/scenes/canvas.ce +12 -10
- package/src/components/scenes/draw-map.ce +6 -23
- package/src/components/scenes/event-layer.ce +9 -3
- package/src/core/setup.ts +2 -0
- package/src/index.ts +7 -2
- package/src/module.ts +72 -6
- package/src/presets/animation.ts +46 -0
- package/src/presets/faceset.ts +60 -0
- package/src/presets/index.ts +7 -1
- package/src/presets/lpc.ts +108 -0
- package/src/services/keyboardControls.ts +8 -0
- package/src/services/loadMap.ts +132 -3
- package/src/services/mmorpg.ts +29 -5
- package/src/services/standalone.ts +70 -6
- package/tsconfig.json +1 -1
- package/vite.config.ts +1 -1
- package/dist/Game/EffectManager.d.ts +0 -5
- package/dist/components/effects/index.d.ts +0 -4
- package/src/components/scenes/element-map.ce +0 -23
- /package/src/components/{effects → animations}/hit.ce +0 -0
package/dist/index18.js
CHANGED
|
@@ -1,31 +1,114 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
class RpgResource {
|
|
2
|
+
static {
|
|
3
|
+
this.engine = null;
|
|
4
|
+
}
|
|
5
|
+
static {
|
|
6
|
+
this._spritesheets = /* @__PURE__ */ new Map();
|
|
7
|
+
}
|
|
8
|
+
static {
|
|
9
|
+
this._sounds = /* @__PURE__ */ new Map();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Initialize RpgResource with the engine instance
|
|
13
|
+
*
|
|
14
|
+
* This is called automatically by the engine during initialization.
|
|
15
|
+
* It synchronizes the resource Maps with the engine's internal storage.
|
|
16
|
+
*
|
|
17
|
+
* @param engine - The RpgClientEngine instance
|
|
18
|
+
*/
|
|
19
|
+
static init(engine) {
|
|
20
|
+
RpgResource.engine = engine;
|
|
21
|
+
RpgResource.syncResources();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Synchronize resource Maps with the engine's internal storage
|
|
25
|
+
*
|
|
26
|
+
* Extracts file links from spritesheets and sounds stored in the engine
|
|
27
|
+
* and updates the Maps accordingly.
|
|
28
|
+
*
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
static syncResources() {
|
|
32
|
+
if (!RpgResource.engine) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
RpgResource._spritesheets.clear();
|
|
36
|
+
RpgResource.engine.spritesheets.forEach((spritesheet, id) => {
|
|
37
|
+
const imageLink = spritesheet?.image || spritesheet?.imageSource || void 0;
|
|
38
|
+
if (imageLink) {
|
|
39
|
+
RpgResource._spritesheets.set(id, imageLink);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
RpgResource._sounds.clear();
|
|
43
|
+
RpgResource.engine.sounds.forEach((sound, id) => {
|
|
44
|
+
let soundLink;
|
|
45
|
+
if (sound && typeof sound === "object") {
|
|
46
|
+
if (sound._src && Array.isArray(sound._src) && sound._src.length > 0) {
|
|
47
|
+
soundLink = sound._src[0];
|
|
48
|
+
} else if (sound.src && typeof sound.src === "string") {
|
|
49
|
+
soundLink = sound.src;
|
|
50
|
+
} else if (sound.src && Array.isArray(sound.src) && sound.src.length > 0) {
|
|
51
|
+
soundLink = sound.src[0];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (soundLink) {
|
|
55
|
+
RpgResource._sounds.set(id, soundLink);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get/Set image links for spritesheets
|
|
61
|
+
*
|
|
62
|
+
* Map of spritesheet IDs to their image file paths/URLs.
|
|
63
|
+
* This Map is synchronized with the engine's spritesheet storage.
|
|
64
|
+
*
|
|
65
|
+
* @type {Map<string, string>}
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* // Get an image link
|
|
70
|
+
* const imageLink = RpgResource.spritesheets.get('hero')
|
|
71
|
+
*
|
|
72
|
+
* // Set a new image link
|
|
73
|
+
* RpgResource.spritesheets.set('new-sprite', './assets/new-sprite.png')
|
|
74
|
+
*
|
|
75
|
+
* // Check if a spritesheet exists
|
|
76
|
+
* if (RpgResource.spritesheets.has('monster')) {
|
|
77
|
+
* const link = RpgResource.spritesheets.get('monster')
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
static get spritesheets() {
|
|
82
|
+
RpgResource.syncResources();
|
|
83
|
+
return RpgResource._spritesheets;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get/Set sound file links
|
|
87
|
+
*
|
|
88
|
+
* Map of sound IDs to their audio file paths/URLs.
|
|
89
|
+
* This Map is synchronized with the engine's sound storage.
|
|
90
|
+
*
|
|
91
|
+
* @type {Map<string, string>}
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* // Get a sound link
|
|
96
|
+
* const soundLink = RpgResource.sounds.get('town-music')
|
|
97
|
+
*
|
|
98
|
+
* // Set a new sound link
|
|
99
|
+
* RpgResource.sounds.set('new-sound', './assets/new-sound.ogg')
|
|
100
|
+
*
|
|
101
|
+
* // Iterate over all sounds
|
|
102
|
+
* RpgResource.sounds.forEach((link, id) => {
|
|
103
|
+
* console.log(`Sound ${id}: ${link}`)
|
|
104
|
+
* })
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
static get sounds() {
|
|
108
|
+
RpgResource.syncResources();
|
|
109
|
+
return RpgResource._sounds;
|
|
21
110
|
}
|
|
22
111
|
}
|
|
23
|
-
__decorateClass([
|
|
24
|
-
users(RpgClientPlayer)
|
|
25
|
-
], RpgClientMap.prototype, "players");
|
|
26
|
-
__decorateClass([
|
|
27
|
-
sync(RpgClientEvent)
|
|
28
|
-
], RpgClientMap.prototype, "events");
|
|
29
112
|
|
|
30
|
-
export {
|
|
113
|
+
export { RpgResource };
|
|
31
114
|
//# sourceMappingURL=index18.js.map
|
package/dist/index18.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index18.js","sources":["../src/
|
|
1
|
+
{"version":3,"file":"index18.js","sources":["../src/Resource.ts"],"sourcesContent":["import { RpgClientEngine } from './RpgClientEngine';\n\n/**\n * RpgResource class\n * \n * Provides a unified API to access resource file links (images and sounds) in the game.\n * Resources are stored as Maps of resource IDs to file paths/URLs.\n * \n * ## Design\n * \n * RpgResource acts as a facade over the engine's resource storage, providing\n * easy access to resource file links. It maintains Maps that are synchronized\n * with the engine's internal storage, but only stores the file paths/URLs,\n * not the full resource objects.\n * \n * @example\n * ```ts\n * import { RpgResource } from '@rpgjs/client'\n * \n * // Get spritesheet image link\n * const imageLink = RpgResource.spritesheets.get('hero')\n * \n * // Get sound file link\n * const soundLink = RpgResource.sounds.get('town-music')\n * \n * // Set a new resource link\n * RpgResource.spritesheets.set('new-sprite', './assets/new-sprite.png')\n * ```\n */\nexport class RpgResource {\n private static engine: RpgClientEngine | null = null;\n private static _spritesheets: Map<string, string> = new Map();\n private static _sounds: Map<string, string> = new Map();\n\n /**\n * Initialize RpgResource with the engine instance\n * \n * This is called automatically by the engine during initialization.\n * It synchronizes the resource Maps with the engine's internal storage.\n * \n * @param engine - The RpgClientEngine instance\n */\n static init(engine: RpgClientEngine): void {\n RpgResource.engine = engine;\n RpgResource.syncResources();\n }\n\n /**\n * Synchronize resource Maps with the engine's internal storage\n * \n * Extracts file links from spritesheets and sounds stored in the engine\n * and updates the Maps accordingly.\n * \n * @private\n */\n private static syncResources(): void {\n if (!RpgResource.engine) {\n return;\n }\n\n // Sync spritesheets\n RpgResource._spritesheets.clear();\n RpgResource.engine.spritesheets.forEach((spritesheet, id) => {\n // Extract image path from spritesheet\n const imageLink = spritesheet?.image || spritesheet?.imageSource || undefined;\n if (imageLink) {\n RpgResource._spritesheets.set(id, imageLink);\n }\n });\n\n // Sync sounds\n RpgResource._sounds.clear();\n RpgResource.engine.sounds.forEach((sound, id) => {\n // Extract src path from sound\n let soundLink: string | undefined;\n \n // If it's a Howler instance, try to get src from _src or src property\n if (sound && typeof sound === 'object') {\n if (sound._src && Array.isArray(sound._src) && sound._src.length > 0) {\n soundLink = sound._src[0];\n } else if (sound.src && typeof sound.src === 'string') {\n soundLink = sound.src;\n } else if (sound.src && Array.isArray(sound.src) && sound.src.length > 0) {\n soundLink = sound.src[0];\n }\n }\n \n if (soundLink) {\n RpgResource._sounds.set(id, soundLink);\n }\n });\n }\n\n /**\n * Get/Set image links for spritesheets\n * \n * Map of spritesheet IDs to their image file paths/URLs.\n * This Map is synchronized with the engine's spritesheet storage.\n * \n * @type {Map<string, string>}\n * \n * @example\n * ```ts\n * // Get an image link\n * const imageLink = RpgResource.spritesheets.get('hero')\n * \n * // Set a new image link\n * RpgResource.spritesheets.set('new-sprite', './assets/new-sprite.png')\n * \n * // Check if a spritesheet exists\n * if (RpgResource.spritesheets.has('monster')) {\n * const link = RpgResource.spritesheets.get('monster')\n * }\n * ```\n */\n static get spritesheets(): Map<string, string> {\n // Sync before returning to ensure we have the latest data\n RpgResource.syncResources();\n return RpgResource._spritesheets;\n }\n\n /**\n * Get/Set sound file links\n * \n * Map of sound IDs to their audio file paths/URLs.\n * This Map is synchronized with the engine's sound storage.\n * \n * @type {Map<string, string>}\n * \n * @example\n * ```ts\n * // Get a sound link\n * const soundLink = RpgResource.sounds.get('town-music')\n * \n * // Set a new sound link\n * RpgResource.sounds.set('new-sound', './assets/new-sound.ogg')\n * \n * // Iterate over all sounds\n * RpgResource.sounds.forEach((link, id) => {\n * console.log(`Sound ${id}: ${link}`)\n * })\n * ```\n */\n static get sounds(): Map<string, string> {\n // Sync before returning to ensure we have the latest data\n RpgResource.syncResources();\n return RpgResource._sounds;\n }\n}\n\n"],"names":[],"mappings":"AA6BO,MAAM,WAAA,CAAY;AAAA,EACvB;AAAA,IAAA,IAAA,CAAe,MAAA,GAAiC,IAAA;AAAA;AAAA,EAChD;AAAA,IAAA,IAAA,CAAe,aAAA,uBAAyC,GAAA,EAAI;AAAA;AAAA,EAC5D;AAAA,IAAA,IAAA,CAAe,OAAA,uBAAmC,GAAA,EAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUtD,OAAO,KAAK,MAAA,EAA+B;AACzC,IAAA,WAAA,CAAY,MAAA,GAAS,MAAA;AACrB,IAAA,WAAA,CAAY,aAAA,EAAc;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAe,aAAA,GAAsB;AACnC,IAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AACvB,MAAA;AAAA,IACF;AAGA,IAAA,WAAA,CAAY,cAAc,KAAA,EAAM;AAChC,IAAA,WAAA,CAAY,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,CAAC,aAAa,EAAA,KAAO;AAE3D,MAAA,MAAM,SAAA,GAAY,WAAA,EAAa,KAAA,IAAS,WAAA,EAAa,WAAA,IAAe,MAAA;AACpE,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,WAAA,CAAY,aAAA,CAAc,GAAA,CAAI,EAAA,EAAI,SAAS,CAAA;AAAA,MAC7C;AAAA,IACF,CAAC,CAAA;AAGD,IAAA,WAAA,CAAY,QAAQ,KAAA,EAAM;AAC1B,IAAA,WAAA,CAAY,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAC,OAAO,EAAA,KAAO;AAE/C,MAAA,IAAI,SAAA;AAGJ,MAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,QAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,IAAK,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACpE,UAAA,SAAA,GAAY,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,QAC1B,WAAW,KAAA,CAAM,GAAA,IAAO,OAAO,KAAA,CAAM,QAAQ,QAAA,EAAU;AACrD,UAAA,SAAA,GAAY,KAAA,CAAM,GAAA;AAAA,QACpB,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,IAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,IAAK,KAAA,CAAM,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AACxE,UAAA,SAAA,GAAY,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,QACzB;AAAA,MACF;AAEA,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,EAAA,EAAI,SAAS,CAAA;AAAA,MACvC;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBA,WAAW,YAAA,GAAoC;AAE7C,IAAA,WAAA,CAAY,aAAA,EAAc;AAC1B,IAAA,OAAO,WAAA,CAAY,aAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBA,WAAW,MAAA,GAA8B;AAEvC,IAAA,WAAA,CAAY,aAAA,EAAc;AAC1B,IAAA,OAAO,WAAA,CAAY,OAAA;AAAA,EACrB;AACF;;;;"}
|
package/dist/index19.js
CHANGED
|
@@ -1,24 +1,366 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
4
|
+
// src/inject.ts
|
|
5
|
+
var DEFAULT_INSTANCE_KEY = "__default__";
|
|
6
|
+
function toTokenName(token) {
|
|
7
|
+
return typeof token === "function" ? token.name : token;
|
|
8
|
+
}
|
|
9
|
+
__name(toTokenName, "toTokenName");
|
|
10
|
+
function toInstanceKey(name) {
|
|
11
|
+
return name ?? DEFAULT_INSTANCE_KEY;
|
|
12
|
+
}
|
|
13
|
+
__name(toInstanceKey, "toInstanceKey");
|
|
14
|
+
function getRecord(context, token) {
|
|
15
|
+
return context.get("inject:" + toTokenName(token));
|
|
16
|
+
}
|
|
17
|
+
__name(getRecord, "getRecord");
|
|
18
|
+
function ensureRecord(context, token) {
|
|
19
|
+
const key = "inject:" + toTokenName(token);
|
|
20
|
+
let record = context.get(key);
|
|
21
|
+
if (!record) {
|
|
22
|
+
record = {
|
|
23
|
+
multi: false,
|
|
24
|
+
values: /* @__PURE__ */ new Map(),
|
|
25
|
+
injected: /* @__PURE__ */ new Set()
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
context.set(key, record);
|
|
29
|
+
return record;
|
|
30
|
+
}
|
|
31
|
+
__name(ensureRecord, "ensureRecord");
|
|
32
|
+
function provide(context, token, value, options = {}) {
|
|
33
|
+
const record = ensureRecord(context, token);
|
|
34
|
+
const instanceKey = toInstanceKey(options.name);
|
|
35
|
+
if (options.multi) {
|
|
36
|
+
record.multi = true;
|
|
37
|
+
}
|
|
38
|
+
if (!record.multi && instanceKey !== DEFAULT_INSTANCE_KEY) {
|
|
39
|
+
record.multi = true;
|
|
40
|
+
}
|
|
41
|
+
record.values.set(instanceKey, value);
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
__name(provide, "provide");
|
|
45
|
+
function isInjected(context, token, options = {}) {
|
|
46
|
+
const record = getRecord(context, token);
|
|
47
|
+
if (!record) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (options.name) {
|
|
51
|
+
return record.injected.has(toInstanceKey(options.name));
|
|
52
|
+
}
|
|
53
|
+
if (record.multi) {
|
|
54
|
+
return record.injected.size > 0;
|
|
55
|
+
}
|
|
56
|
+
return record.injected.has(DEFAULT_INSTANCE_KEY);
|
|
57
|
+
}
|
|
58
|
+
__name(isInjected, "isInjected");
|
|
59
|
+
function isProvided(context, token, options = {}) {
|
|
60
|
+
const record = getRecord(context, token);
|
|
61
|
+
if (!record) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (options.name) {
|
|
65
|
+
return record.values.has(toInstanceKey(options.name));
|
|
66
|
+
}
|
|
67
|
+
if (record.multi) {
|
|
68
|
+
return record.values.size > 0;
|
|
69
|
+
}
|
|
70
|
+
return record.values.has(DEFAULT_INSTANCE_KEY);
|
|
71
|
+
}
|
|
72
|
+
__name(isProvided, "isProvided");
|
|
73
|
+
function hasInstance(context, token, options = {}) {
|
|
74
|
+
return isProvided(context, token, options);
|
|
75
|
+
}
|
|
76
|
+
__name(hasInstance, "hasInstance");
|
|
77
|
+
function handleMissingInjection(token, options) {
|
|
78
|
+
const name = toTokenName(token);
|
|
79
|
+
if (options.name) {
|
|
80
|
+
throw new Error(`Injection provider ${name} with name ${options.name} not found`);
|
|
81
|
+
}
|
|
82
|
+
throw new Error(`Injection provider ${name} not found`);
|
|
83
|
+
}
|
|
84
|
+
__name(handleMissingInjection, "handleMissingInjection");
|
|
85
|
+
function markInjected(record, key) {
|
|
86
|
+
record.injected.add(key);
|
|
87
|
+
}
|
|
88
|
+
__name(markInjected, "markInjected");
|
|
89
|
+
function markAllInjected(record) {
|
|
90
|
+
for (const key of record.values.keys()) {
|
|
91
|
+
record.injected.add(key);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
__name(markAllInjected, "markAllInjected");
|
|
95
|
+
function inject(context, token, options = {}) {
|
|
96
|
+
const record = getRecord(context, token);
|
|
97
|
+
if (!record) {
|
|
98
|
+
if (options.optional) {
|
|
99
|
+
return options.multi ? [] : void 0;
|
|
100
|
+
}
|
|
101
|
+
return handleMissingInjection(token, options);
|
|
102
|
+
}
|
|
103
|
+
if (options.name) {
|
|
104
|
+
const instanceKey = toInstanceKey(options.name);
|
|
105
|
+
if (!record.values.has(instanceKey)) {
|
|
106
|
+
if (options.optional) {
|
|
107
|
+
return void 0;
|
|
18
108
|
}
|
|
19
|
-
|
|
109
|
+
return handleMissingInjection(token, options);
|
|
110
|
+
}
|
|
111
|
+
const value2 = record.values.get(instanceKey);
|
|
112
|
+
markInjected(record, instanceKey);
|
|
113
|
+
return value2;
|
|
20
114
|
}
|
|
115
|
+
if (options.multi || record.multi) {
|
|
116
|
+
if (record.values.size === 0) {
|
|
117
|
+
if (options.optional) {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
return handleMissingInjection(token, options);
|
|
121
|
+
}
|
|
122
|
+
markAllInjected(record);
|
|
123
|
+
return Array.from(record.values.values());
|
|
124
|
+
}
|
|
125
|
+
const value = record.values.get(DEFAULT_INSTANCE_KEY);
|
|
126
|
+
if (value === void 0) {
|
|
127
|
+
if (options.optional) {
|
|
128
|
+
return void 0;
|
|
129
|
+
}
|
|
130
|
+
return handleMissingInjection(token, options);
|
|
131
|
+
}
|
|
132
|
+
markInjected(record, DEFAULT_INSTANCE_KEY);
|
|
133
|
+
return value;
|
|
21
134
|
}
|
|
135
|
+
__name(inject, "inject");
|
|
136
|
+
function override(providers, newProvider, options) {
|
|
137
|
+
let { upsert = false, key } = options ?? {};
|
|
138
|
+
if (!key) {
|
|
139
|
+
key = typeof newProvider === "function" ? newProvider.name : newProvider.provide;
|
|
140
|
+
}
|
|
141
|
+
const flatProviders = providers.flat();
|
|
142
|
+
const exists = flatProviders.some((provider) => {
|
|
143
|
+
if (typeof provider === "function") {
|
|
144
|
+
return provider.name === key;
|
|
145
|
+
} else if (typeof provider === "object") {
|
|
146
|
+
return provider.provide === key;
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
});
|
|
150
|
+
const mappedProviders = flatProviders.map((provider) => {
|
|
151
|
+
if (typeof provider === "function" && provider.name === key) {
|
|
152
|
+
return newProvider;
|
|
153
|
+
} else if (typeof provider === "object" && provider.provide === key) {
|
|
154
|
+
return newProvider;
|
|
155
|
+
}
|
|
156
|
+
return provider;
|
|
157
|
+
});
|
|
158
|
+
if (upsert && !exists) {
|
|
159
|
+
mappedProviders.push(newProvider);
|
|
160
|
+
}
|
|
161
|
+
return mappedProviders;
|
|
162
|
+
}
|
|
163
|
+
__name(override, "override");
|
|
164
|
+
function findProviders(providers, name) {
|
|
165
|
+
const results = [];
|
|
166
|
+
for (const provider of providers) {
|
|
167
|
+
if (Array.isArray(provider)) {
|
|
168
|
+
results.push(...findProviders(provider, name));
|
|
169
|
+
} else if (findProvider(provider, name)) {
|
|
170
|
+
results.push(provider);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return results;
|
|
174
|
+
}
|
|
175
|
+
__name(findProviders, "findProviders");
|
|
176
|
+
function findProvider(providers, name) {
|
|
177
|
+
if (!Array.isArray(providers)) {
|
|
178
|
+
if (typeof providers === "object" && "provide" in providers) {
|
|
179
|
+
const provider = providers;
|
|
180
|
+
const providerName = typeof provider.provide === "function" ? provider.provide.name : provider.provide;
|
|
181
|
+
if (name instanceof RegExp) {
|
|
182
|
+
if (name.test(providerName)) return providers;
|
|
183
|
+
} else {
|
|
184
|
+
if (providerName === name) return providers;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
for (const provider of providers) {
|
|
190
|
+
if (Array.isArray(provider)) {
|
|
191
|
+
const found = findProvider(provider, name);
|
|
192
|
+
if (found) return found;
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (typeof provider === "object" && "provide" in provider) {
|
|
196
|
+
const providerName = typeof provider.provide === "function" ? provider.provide.name : provider.provide;
|
|
197
|
+
if (name instanceof RegExp) {
|
|
198
|
+
if (name.test(providerName)) return provider;
|
|
199
|
+
} else {
|
|
200
|
+
if (providerName === name) return provider;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
__name(findProvider, "findProvider");
|
|
207
|
+
|
|
208
|
+
// src/merge-config.ts
|
|
209
|
+
function processProvider(mergedConfig, baseConfig, provider) {
|
|
210
|
+
if (Array.isArray(provider)) {
|
|
211
|
+
for (const nestedProvider of provider) {
|
|
212
|
+
processProvider(mergedConfig, baseConfig, nestedProvider);
|
|
213
|
+
}
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const existingProvider = findProvider(baseConfig.providers, provider.provide);
|
|
217
|
+
if (existingProvider) {
|
|
218
|
+
mergedConfig.providers = override(mergedConfig.providers, provider);
|
|
219
|
+
} else {
|
|
220
|
+
mergedConfig.providers.push(provider);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
__name(processProvider, "processProvider");
|
|
224
|
+
function mergeConfig(baseConfig, config) {
|
|
225
|
+
const mergedConfig = {
|
|
226
|
+
...baseConfig,
|
|
227
|
+
...config,
|
|
228
|
+
providers: [
|
|
229
|
+
...baseConfig.providers
|
|
230
|
+
]
|
|
231
|
+
// Start with a copy of base providers
|
|
232
|
+
};
|
|
233
|
+
for (const provider of config.providers) {
|
|
234
|
+
processProvider(mergedConfig, baseConfig, provider);
|
|
235
|
+
}
|
|
236
|
+
return mergedConfig;
|
|
237
|
+
}
|
|
238
|
+
__name(mergeConfig, "mergeConfig");
|
|
239
|
+
|
|
240
|
+
// src/provider.ts
|
|
241
|
+
function extractProvideOptions(source) {
|
|
242
|
+
if (!source) {
|
|
243
|
+
return void 0;
|
|
244
|
+
}
|
|
245
|
+
const { multi, name } = source;
|
|
246
|
+
if (multi === void 0 && name === void 0) {
|
|
247
|
+
return void 0;
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
multi,
|
|
251
|
+
name
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
__name(extractProvideOptions, "extractProvideOptions");
|
|
255
|
+
function getDeps(provider) {
|
|
256
|
+
if (typeof provider === "function") {
|
|
257
|
+
return provider.deps ?? [];
|
|
258
|
+
}
|
|
259
|
+
return provider.deps ?? [];
|
|
260
|
+
}
|
|
261
|
+
__name(getDeps, "getDeps");
|
|
262
|
+
function sortProviders(providers) {
|
|
263
|
+
const tokenName = /* @__PURE__ */ __name((t) => typeof t === "function" ? t.name : t, "tokenName");
|
|
264
|
+
const map = /* @__PURE__ */ new Map();
|
|
265
|
+
for (const p of providers) {
|
|
266
|
+
const token = tokenName(typeof p === "function" ? p : p.provide);
|
|
267
|
+
const list = map.get(token);
|
|
268
|
+
if (list) {
|
|
269
|
+
list.push(p);
|
|
270
|
+
} else {
|
|
271
|
+
map.set(token, [
|
|
272
|
+
p
|
|
273
|
+
]);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const result = [];
|
|
277
|
+
const visited = /* @__PURE__ */ new Set();
|
|
278
|
+
const stack = /* @__PURE__ */ new Set();
|
|
279
|
+
const visit = /* @__PURE__ */ __name((token) => {
|
|
280
|
+
const name = tokenName(token);
|
|
281
|
+
if (visited.has(name)) return;
|
|
282
|
+
if (stack.has(name)) {
|
|
283
|
+
throw new Error(`Circular dependency detected for provider ${name}`);
|
|
284
|
+
}
|
|
285
|
+
stack.add(name);
|
|
286
|
+
const providersForToken = map.get(name);
|
|
287
|
+
if (providersForToken) {
|
|
288
|
+
for (const provider of providersForToken) {
|
|
289
|
+
for (const dep of getDeps(provider)) {
|
|
290
|
+
visit(dep);
|
|
291
|
+
}
|
|
292
|
+
result.push(provider);
|
|
293
|
+
}
|
|
294
|
+
visited.add(name);
|
|
295
|
+
}
|
|
296
|
+
stack.delete(name);
|
|
297
|
+
}, "visit");
|
|
298
|
+
for (const p of providers) {
|
|
299
|
+
const token = typeof p === "function" ? p : p.provide;
|
|
300
|
+
visit(token);
|
|
301
|
+
}
|
|
302
|
+
return result;
|
|
303
|
+
}
|
|
304
|
+
__name(sortProviders, "sortProviders");
|
|
305
|
+
async function injector(context, providers) {
|
|
306
|
+
providers = providers.flat();
|
|
307
|
+
providers = sortProviders(providers);
|
|
308
|
+
for (const provider of providers) {
|
|
309
|
+
let token;
|
|
310
|
+
let instance;
|
|
311
|
+
let options;
|
|
312
|
+
if (typeof provider === "function") {
|
|
313
|
+
token = provider;
|
|
314
|
+
instance = new provider(context);
|
|
315
|
+
const diOptions = extractProvideOptions(provider.diOptions ?? provider.di);
|
|
316
|
+
options = diOptions;
|
|
317
|
+
} else {
|
|
318
|
+
token = provider.provide;
|
|
319
|
+
options = extractProvideOptions(provider);
|
|
320
|
+
const provideUserClass = provider.useClass;
|
|
321
|
+
const isClass = typeof provideUserClass === "function";
|
|
322
|
+
if (isClass) {
|
|
323
|
+
instance = new provideUserClass(context);
|
|
324
|
+
} else if ("useValue" in provider) {
|
|
325
|
+
instance = provider.useValue;
|
|
326
|
+
} else if ("useFactory" in provider) {
|
|
327
|
+
instance = provider.useFactory?.(context);
|
|
328
|
+
if (instance instanceof Promise) {
|
|
329
|
+
instance = await instance;
|
|
330
|
+
}
|
|
331
|
+
} else if ("useExisting" in provider) {
|
|
332
|
+
instance = inject(context, provider.useExisting);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
provide(context, token, instance, options);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
__name(injector, "injector");
|
|
339
|
+
|
|
340
|
+
// src/context.ts
|
|
341
|
+
var Context = class {
|
|
342
|
+
static {
|
|
343
|
+
__name(this, "Context");
|
|
344
|
+
}
|
|
345
|
+
/** Internal storage for injected values */
|
|
346
|
+
values = {};
|
|
347
|
+
/**
|
|
348
|
+
* Sets a value in the context
|
|
349
|
+
* @param key - Unique identifier for the value
|
|
350
|
+
* @param value - Value to store
|
|
351
|
+
*/
|
|
352
|
+
set(key, value) {
|
|
353
|
+
this.values[key] = value;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Retrieves a value from the context
|
|
357
|
+
* @param key - Unique identifier for the value
|
|
358
|
+
* @returns The stored value or undefined if not found
|
|
359
|
+
*/
|
|
360
|
+
get(key) {
|
|
361
|
+
return this.values[key];
|
|
362
|
+
}
|
|
363
|
+
};
|
|
22
364
|
|
|
23
|
-
export {
|
|
365
|
+
export { Context, findProvider, findProviders, hasInstance, inject, injector, isInjected, isProvided, mergeConfig, override, provide };
|
|
24
366
|
//# sourceMappingURL=index19.js.map
|
package/dist/index19.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index19.js","sources":["../src/Game/EffectManager.ts"],"sourcesContent":["import { generateUID, RpgCommonPlayer } from \"@rpgjs/common\";\nimport { signal } from \"canvasengine\";\n\nexport class EffectManager {\n current = signal<any[]>([]);\n\n displayEffect(params: any, player: RpgCommonPlayer) {\n const id = generateUID();\n this.current().push({\n ...params,\n id,\n x: player.x,\n y: player.y,\n onFinish: () => {\n const index = this.current().findIndex((value) => value.id === id);\n this.current().splice(index, 1);\n },\n });\n }\n}\n"],"names":[],"mappings":";;;AAGO,MAAM,aAAc,CAAA;AAAA,EAApB,WAAA,GAAA;AACL,IAAU,IAAA,CAAA,OAAA,GAAA,MAAA,CAAc,EAAE,CAAA;AAAA;AAAA,EAE1B,aAAA,CAAc,QAAa,MAAyB,EAAA;AAClD,IAAA,MAAM,KAAK,WAAY,EAAA;AACvB,IAAK,IAAA,CAAA,OAAA,GAAU,IAAK,CAAA;AAAA,MAClB,GAAG,MAAA;AAAA,MACH,EAAA;AAAA,MACA,GAAG,MAAO,CAAA,CAAA;AAAA,MACV,GAAG,MAAO,CAAA,CAAA;AAAA,MACV,UAAU,MAAM;AACd,QAAM,MAAA,KAAA,GAAQ,KAAK,OAAQ,EAAA,CAAE,UAAU,CAAC,KAAA,KAAU,KAAM,CAAA,EAAA,KAAO,EAAE,CAAA;AACjE,QAAA,IAAA,CAAK,OAAQ,EAAA,CAAE,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAChC,KACD,CAAA;AAAA;AAEL;;;;"}
|
|
1
|
+
{"version":3,"file":"index19.js","sources":["../../../node_modules/.pnpm/@signe+di@2.5.1/node_modules/@signe/di/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/inject.ts\nvar DEFAULT_INSTANCE_KEY = \"__default__\";\nfunction toTokenName(token) {\n return typeof token === \"function\" ? token.name : token;\n}\n__name(toTokenName, \"toTokenName\");\nfunction toInstanceKey(name) {\n return name ?? DEFAULT_INSTANCE_KEY;\n}\n__name(toInstanceKey, \"toInstanceKey\");\nfunction getRecord(context, token) {\n return context.get(\"inject:\" + toTokenName(token));\n}\n__name(getRecord, \"getRecord\");\nfunction ensureRecord(context, token) {\n const key = \"inject:\" + toTokenName(token);\n let record = context.get(key);\n if (!record) {\n record = {\n multi: false,\n values: /* @__PURE__ */ new Map(),\n injected: /* @__PURE__ */ new Set()\n };\n }\n context.set(key, record);\n return record;\n}\n__name(ensureRecord, \"ensureRecord\");\nfunction provide(context, token, value, options = {}) {\n const record = ensureRecord(context, token);\n const instanceKey = toInstanceKey(options.name);\n if (options.multi) {\n record.multi = true;\n }\n if (!record.multi && instanceKey !== DEFAULT_INSTANCE_KEY) {\n record.multi = true;\n }\n record.values.set(instanceKey, value);\n return value;\n}\n__name(provide, \"provide\");\nfunction isInjected(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.injected.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.injected.size > 0;\n }\n return record.injected.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isInjected, \"isInjected\");\nfunction isProvided(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.values.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.values.size > 0;\n }\n return record.values.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isProvided, \"isProvided\");\nfunction hasInstance(context, token, options = {}) {\n return isProvided(context, token, options);\n}\n__name(hasInstance, \"hasInstance\");\nfunction handleMissingInjection(token, options) {\n const name = toTokenName(token);\n if (options.name) {\n throw new Error(`Injection provider ${name} with name ${options.name} not found`);\n }\n throw new Error(`Injection provider ${name} not found`);\n}\n__name(handleMissingInjection, \"handleMissingInjection\");\nfunction markInjected(record, key) {\n record.injected.add(key);\n}\n__name(markInjected, \"markInjected\");\nfunction markAllInjected(record) {\n for (const key of record.values.keys()) {\n record.injected.add(key);\n }\n}\n__name(markAllInjected, \"markAllInjected\");\nfunction inject(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n if (options.optional) {\n return options.multi ? [] : void 0;\n }\n return handleMissingInjection(token, options);\n }\n if (options.name) {\n const instanceKey = toInstanceKey(options.name);\n if (!record.values.has(instanceKey)) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n const value2 = record.values.get(instanceKey);\n markInjected(record, instanceKey);\n return value2;\n }\n if (options.multi || record.multi) {\n if (record.values.size === 0) {\n if (options.optional) {\n return [];\n }\n return handleMissingInjection(token, options);\n }\n markAllInjected(record);\n return Array.from(record.values.values());\n }\n const value = record.values.get(DEFAULT_INSTANCE_KEY);\n if (value === void 0) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n markInjected(record, DEFAULT_INSTANCE_KEY);\n return value;\n}\n__name(inject, \"inject\");\nfunction override(providers, newProvider, options) {\n let { upsert = false, key } = options ?? {};\n if (!key) {\n key = typeof newProvider === \"function\" ? newProvider.name : newProvider.provide;\n }\n const flatProviders = providers.flat();\n const exists = flatProviders.some((provider) => {\n if (typeof provider === \"function\") {\n return provider.name === key;\n } else if (typeof provider === \"object\") {\n return provider.provide === key;\n }\n return false;\n });\n const mappedProviders = flatProviders.map((provider) => {\n if (typeof provider === \"function\" && provider.name === key) {\n return newProvider;\n } else if (typeof provider === \"object\" && provider.provide === key) {\n return newProvider;\n }\n return provider;\n });\n if (upsert && !exists) {\n mappedProviders.push(newProvider);\n }\n return mappedProviders;\n}\n__name(override, \"override\");\nfunction findProviders(providers, name) {\n const results = [];\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n results.push(...findProviders(provider, name));\n } else if (findProvider(provider, name)) {\n results.push(provider);\n }\n }\n return results;\n}\n__name(findProviders, \"findProviders\");\nfunction findProvider(providers, name) {\n if (!Array.isArray(providers)) {\n if (typeof providers === \"object\" && \"provide\" in providers) {\n const provider = providers;\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return providers;\n } else {\n if (providerName === name) return providers;\n }\n }\n return null;\n }\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n const found = findProvider(provider, name);\n if (found) return found;\n continue;\n }\n if (typeof provider === \"object\" && \"provide\" in provider) {\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return provider;\n } else {\n if (providerName === name) return provider;\n }\n }\n }\n return null;\n}\n__name(findProvider, \"findProvider\");\n\n// src/merge-config.ts\nfunction processProvider(mergedConfig, baseConfig, provider) {\n if (Array.isArray(provider)) {\n for (const nestedProvider of provider) {\n processProvider(mergedConfig, baseConfig, nestedProvider);\n }\n return;\n }\n const existingProvider = findProvider(baseConfig.providers, provider.provide);\n if (existingProvider) {\n mergedConfig.providers = override(mergedConfig.providers, provider);\n } else {\n mergedConfig.providers.push(provider);\n }\n}\n__name(processProvider, \"processProvider\");\nfunction mergeConfig(baseConfig, config) {\n const mergedConfig = {\n ...baseConfig,\n ...config,\n providers: [\n ...baseConfig.providers\n ]\n // Start with a copy of base providers\n };\n for (const provider of config.providers) {\n processProvider(mergedConfig, baseConfig, provider);\n }\n return mergedConfig;\n}\n__name(mergeConfig, \"mergeConfig\");\n\n// src/provider.ts\nfunction extractProvideOptions(source) {\n if (!source) {\n return void 0;\n }\n const { multi, name } = source;\n if (multi === void 0 && name === void 0) {\n return void 0;\n }\n return {\n multi,\n name\n };\n}\n__name(extractProvideOptions, \"extractProvideOptions\");\nfunction getDeps(provider) {\n if (typeof provider === \"function\") {\n return provider.deps ?? [];\n }\n return provider.deps ?? [];\n}\n__name(getDeps, \"getDeps\");\nfunction sortProviders(providers) {\n const tokenName = /* @__PURE__ */ __name((t) => typeof t === \"function\" ? t.name : t, \"tokenName\");\n const map = /* @__PURE__ */ new Map();\n for (const p of providers) {\n const token = tokenName(typeof p === \"function\" ? p : p.provide);\n const list = map.get(token);\n if (list) {\n list.push(p);\n } else {\n map.set(token, [\n p\n ]);\n }\n }\n const result = [];\n const visited = /* @__PURE__ */ new Set();\n const stack = /* @__PURE__ */ new Set();\n const visit = /* @__PURE__ */ __name((token) => {\n const name = tokenName(token);\n if (visited.has(name)) return;\n if (stack.has(name)) {\n throw new Error(`Circular dependency detected for provider ${name}`);\n }\n stack.add(name);\n const providersForToken = map.get(name);\n if (providersForToken) {\n for (const provider of providersForToken) {\n for (const dep of getDeps(provider)) {\n visit(dep);\n }\n result.push(provider);\n }\n visited.add(name);\n }\n stack.delete(name);\n }, \"visit\");\n for (const p of providers) {\n const token = typeof p === \"function\" ? p : p.provide;\n visit(token);\n }\n return result;\n}\n__name(sortProviders, \"sortProviders\");\nasync function injector(context, providers) {\n providers = providers.flat();\n providers = sortProviders(providers);\n for (const provider of providers) {\n let token;\n let instance;\n let options;\n if (typeof provider === \"function\") {\n token = provider;\n instance = new provider(context);\n const diOptions = extractProvideOptions(provider.diOptions ?? provider.di);\n options = diOptions;\n } else {\n token = provider.provide;\n options = extractProvideOptions(provider);\n const provideUserClass = provider.useClass;\n const isClass = typeof provideUserClass === \"function\";\n if (isClass) {\n instance = new provideUserClass(context);\n } else if (\"useValue\" in provider) {\n instance = provider.useValue;\n } else if (\"useFactory\" in provider) {\n instance = provider.useFactory?.(context);\n if (instance instanceof Promise) {\n instance = await instance;\n }\n } else if (\"useExisting\" in provider) {\n instance = inject(context, provider.useExisting);\n }\n }\n provide(context, token, instance, options);\n }\n}\n__name(injector, \"injector\");\n\n// src/context.ts\nvar Context = class {\n static {\n __name(this, \"Context\");\n }\n /** Internal storage for injected values */\n values = {};\n /**\n * Sets a value in the context\n * @param key - Unique identifier for the value\n * @param value - Value to store\n */\n set(key, value) {\n this.values[key] = value;\n }\n /**\n * Retrieves a value from the context\n * @param key - Unique identifier for the value\n * @returns The stored value or undefined if not found\n */\n get(key) {\n return this.values[key];\n }\n};\nexport {\n Context,\n findProvider,\n findProviders,\n hasInstance,\n inject,\n injector,\n isInjected,\n isProvided,\n mergeConfig,\n override,\n provide\n};\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|