@rb-games/core 0.1.1 → 0.1.2
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/chunk-5BLUF2HG.js +25 -0
- package/dist/chunk-5BLUF2HG.js.map +1 -0
- package/dist/chunk-DOHQE2YZ.js +392 -0
- package/dist/chunk-DOHQE2YZ.js.map +1 -0
- package/dist/chunk-FOZO6TLY.js +673 -0
- package/dist/chunk-FOZO6TLY.js.map +1 -0
- package/dist/chunk-G3PMV62Z.js +33 -0
- package/dist/chunk-G3PMV62Z.js.map +1 -0
- package/dist/chunk-KOHCRCV3.js +490 -0
- package/dist/chunk-KOHCRCV3.js.map +1 -0
- package/dist/chunk-MI6BP7A6.js +11 -0
- package/dist/chunk-MI6BP7A6.js.map +1 -0
- package/dist/chunk-NQMORMNP.js +15 -0
- package/dist/chunk-NQMORMNP.js.map +1 -0
- package/dist/chunk-RAEOBW6E.js +133 -0
- package/dist/chunk-RAEOBW6E.js.map +1 -0
- package/dist/chunk-UE7T7Z45.js +884 -0
- package/dist/chunk-UE7T7Z45.js.map +1 -0
- package/dist/devtools/index.js +2 -882
- package/dist/devtools/index.js.map +1 -1
- package/dist/engine/index.js +6 -1267
- package/dist/engine/index.js.map +1 -1
- package/dist/filters/index.js +1 -1
- package/dist/helpers/index.js +6 -35
- package/dist/helpers/index.js.map +1 -1
- package/dist/i18n/index.js +4 -525
- package/dist/i18n/index.js.map +1 -1
- package/dist/layout/index.js +2 -671
- package/dist/layout/index.js.map +1 -1
- package/dist/particle/index.js +1 -6
- package/dist/particle/index.js.map +1 -1
- package/dist/plugins/Plugin.types.d.ts +4 -2
- package/dist/plugins/Plugin.types.d.ts.map +1 -1
- package/dist/plugins/index.js +6 -521
- package/dist/plugins/index.js.map +1 -1
- package/dist/state-machine/index.js +1 -1
- package/dist/store/index.js +1 -1
- package/dist/ui/index.js +5 -531
- package/dist/ui/index.js.map +1 -1
- package/dist/utils/index.js +4 -897
- package/dist/utils/index.js.map +1 -1
- package/dist/vite/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { PixiEngine } from '../engine/PixiEngine';
|
|
2
2
|
/**
|
|
3
|
-
* Internal symbols for engine-only hook access
|
|
4
|
-
*
|
|
3
|
+
* Internal symbols for engine-only hook access.
|
|
4
|
+
* Use Symbol.for so every published tsup entry (engine, plugins, …) shares
|
|
5
|
+
* the same hook keys. Plain Symbol() is unique per bundle and silently
|
|
6
|
+
* drops resize/pause/ready callbacks in npm consumers.
|
|
5
7
|
*/
|
|
6
8
|
export declare const ENGINE_HOOKS: {
|
|
7
9
|
readonly onEngineReady: symbol;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.types.d.ts","sourceRoot":"","sources":["../../plugins/Plugin.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"Plugin.types.d.ts","sourceRoot":"","sources":["../../plugins/Plugin.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX;;GAEG;AACH,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAErD;;;;;OAKG;IACH,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnD;;OAEG;IACH,OAAO,CAAC,IAAI,IAAI,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -1,393 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { initSlotI18n, t, changeLanguage, getCurrentLanguage, isI18nReady, getI18nInstance } from '../chunk-RAEOBW6E.js';
|
|
2
|
+
import { ENGINE_HOOKS } from '../chunk-MI6BP7A6.js';
|
|
3
|
+
import { resolvePublicPath } from '../chunk-NQMORMNP.js';
|
|
4
|
+
import { getLogger } from '../chunk-DOHQE2YZ.js';
|
|
5
|
+
import '../chunk-G3PMV62Z.js';
|
|
6
|
+
import { EventEmitter, detectWebp, isMobile, Assets, Container, VERSION } from 'pixi.js';
|
|
2
7
|
import '@esotericsoftware/spine-pixi-v8';
|
|
3
8
|
import gsap2, { gsap } from 'gsap';
|
|
4
|
-
import i18next from 'i18next';
|
|
5
|
-
import Backend from 'i18next-http-backend';
|
|
6
|
-
import LanguageDetector from 'i18next-browser-languagedetector';
|
|
7
9
|
import * as Sentry from '@sentry/browser';
|
|
8
10
|
import { merge } from 'lodash';
|
|
9
11
|
import { sound } from '@pixi/sound';
|
|
10
12
|
|
|
11
|
-
// utils/Logger.ts
|
|
12
|
-
var Logger = class _Logger {
|
|
13
|
-
static instance;
|
|
14
|
-
config;
|
|
15
|
-
// Terminal colors (for Node.js environment)
|
|
16
|
-
terminalColors = {
|
|
17
|
-
reset: "\x1B[0m",
|
|
18
|
-
red: "\x1B[31m",
|
|
19
|
-
yellow: "\x1B[33m",
|
|
20
|
-
blue: "\x1B[34m",
|
|
21
|
-
green: "\x1B[32m",
|
|
22
|
-
gray: "\x1B[90m",
|
|
23
|
-
cyan: "\x1B[36m",
|
|
24
|
-
magenta: "\x1B[35m",
|
|
25
|
-
white: "\x1B[37m"
|
|
26
|
-
};
|
|
27
|
-
// Browser console colors (using CSS)
|
|
28
|
-
browserColors = {
|
|
29
|
-
timestamp: "color: gray",
|
|
30
|
-
context: "color: cyan; font-weight: bold",
|
|
31
|
-
message: "color: white",
|
|
32
|
-
error: "color: red; font-weight: bold",
|
|
33
|
-
warn: "color: orange; font-weight: bold",
|
|
34
|
-
info: "color: dodgerblue; font-weight: bold",
|
|
35
|
-
debug: "color: green",
|
|
36
|
-
trace: "color: gray"
|
|
37
|
-
};
|
|
38
|
-
levelLabels = {
|
|
39
|
-
[0 /* ERROR */]: "ERROR",
|
|
40
|
-
[1 /* WARN */]: "WARN",
|
|
41
|
-
[2 /* INFO */]: "INFO",
|
|
42
|
-
[3 /* DEBUG */]: "DEBUG",
|
|
43
|
-
[4 /* TRACE */]: "TRACE"
|
|
44
|
-
};
|
|
45
|
-
levelColors = {
|
|
46
|
-
[0 /* ERROR */]: this.terminalColors.red,
|
|
47
|
-
[1 /* WARN */]: this.terminalColors.yellow,
|
|
48
|
-
[2 /* INFO */]: this.terminalColors.blue,
|
|
49
|
-
[3 /* DEBUG */]: this.terminalColors.green,
|
|
50
|
-
[4 /* TRACE */]: this.terminalColors.gray
|
|
51
|
-
};
|
|
52
|
-
levelBrowserColors = {
|
|
53
|
-
[0 /* ERROR */]: this.browserColors.error,
|
|
54
|
-
[1 /* WARN */]: this.browserColors.warn,
|
|
55
|
-
[2 /* INFO */]: this.browserColors.info,
|
|
56
|
-
[3 /* DEBUG */]: this.browserColors.debug,
|
|
57
|
-
[4 /* TRACE */]: this.browserColors.trace
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Private constructor for singleton pattern
|
|
61
|
-
*/
|
|
62
|
-
constructor() {
|
|
63
|
-
var _a;
|
|
64
|
-
this.config = {
|
|
65
|
-
level: 3 /* DEBUG */,
|
|
66
|
-
// Default log level
|
|
67
|
-
enabled: true,
|
|
68
|
-
// Logging enabled by default
|
|
69
|
-
showTimestamp: false,
|
|
70
|
-
// Show timestamps by default
|
|
71
|
-
showColors: true
|
|
72
|
-
// Show colors by default
|
|
73
|
-
};
|
|
74
|
-
if ((_a = import.meta.env) == null ? void 0 : _a.DEV) {
|
|
75
|
-
console.warn(
|
|
76
|
-
"[Logger] For better debugging experience, add Logger.ts to DevTools ignore list:\nDevTools \u2192 Settings (F1) \u2192 Ignore List \u2192 Add pattern: /Logger\\.ts$"
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get the singleton instance of the Logger
|
|
82
|
-
*/
|
|
83
|
-
static getInstance() {
|
|
84
|
-
if (!_Logger.instance) {
|
|
85
|
-
_Logger.instance = new _Logger();
|
|
86
|
-
}
|
|
87
|
-
return _Logger.instance;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Configure the logger
|
|
91
|
-
* @param config Configuration options
|
|
92
|
-
*/
|
|
93
|
-
configure(config) {
|
|
94
|
-
this.config = { ...this.config, ...config };
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Enable or disable logging
|
|
98
|
-
* @param enabled Whether logging is enabled
|
|
99
|
-
*/
|
|
100
|
-
setEnabled(enabled) {
|
|
101
|
-
this.config.enabled = enabled;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Set the log level
|
|
105
|
-
* @param level The log level to set
|
|
106
|
-
*/
|
|
107
|
-
setLevel(level) {
|
|
108
|
-
this.config.level = level;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Get the current log level
|
|
112
|
-
*/
|
|
113
|
-
getLevel() {
|
|
114
|
-
return this.config.level;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Log an error message
|
|
118
|
-
* @param message The message to log
|
|
119
|
-
* @param args Additional arguments to log
|
|
120
|
-
*/
|
|
121
|
-
error(message, ...args) {
|
|
122
|
-
this.log(0 /* ERROR */, message, ...args);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Log a warning message
|
|
126
|
-
* @param message The message to log
|
|
127
|
-
* @param args Additional arguments to log
|
|
128
|
-
*/
|
|
129
|
-
warn(message, ...args) {
|
|
130
|
-
this.log(1 /* WARN */, message, ...args);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Log an info message
|
|
134
|
-
* @param message The message to log
|
|
135
|
-
* @param args Additional arguments to log
|
|
136
|
-
*/
|
|
137
|
-
info(message, ...args) {
|
|
138
|
-
this.log(2 /* INFO */, message, ...args);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Log a debug message
|
|
142
|
-
* @param message The message to log
|
|
143
|
-
* @param args Additional arguments to log
|
|
144
|
-
*/
|
|
145
|
-
debug(message, ...args) {
|
|
146
|
-
this.log(3 /* DEBUG */, message, ...args);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Log a trace message
|
|
150
|
-
* @param message The message to log
|
|
151
|
-
* @param args Additional arguments to log
|
|
152
|
-
*/
|
|
153
|
-
trace(message, ...args) {
|
|
154
|
-
this.log(4 /* TRACE */, message, ...args);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Log a message with a specific log level
|
|
158
|
-
* @param level The log level
|
|
159
|
-
* @param message The message to log
|
|
160
|
-
* @param args Additional arguments to log
|
|
161
|
-
*/
|
|
162
|
-
log(level, message, ...args) {
|
|
163
|
-
if (!this.config.enabled || level > this.config.level) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
if (!this.shouldLogMessage(message)) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
const isBrowser = typeof window !== "undefined";
|
|
170
|
-
if (isBrowser && this.config.showColors) {
|
|
171
|
-
this.logBrowser(level, message, ...args);
|
|
172
|
-
} else {
|
|
173
|
-
this.logTerminal(level, message, ...args);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
extractContext(message) {
|
|
177
|
-
const contextMatch = message.match(/^\[([^\]]+)\]\s(.*)$/);
|
|
178
|
-
if (!contextMatch) {
|
|
179
|
-
return {
|
|
180
|
-
context: "",
|
|
181
|
-
messageContent: message
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
return {
|
|
185
|
-
context: contextMatch[1],
|
|
186
|
-
messageContent: contextMatch[2]
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
matchesFilter(value, matchers) {
|
|
190
|
-
if (!(matchers == null ? void 0 : matchers.length)) {
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
return matchers.some((matcher) => {
|
|
194
|
-
if (typeof matcher === "string") {
|
|
195
|
-
return value.includes(matcher);
|
|
196
|
-
}
|
|
197
|
-
matcher.lastIndex = 0;
|
|
198
|
-
return matcher.test(value);
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
shouldLogMessage(message) {
|
|
202
|
-
var _a, _b;
|
|
203
|
-
const filter = this.config.filter;
|
|
204
|
-
if (!filter) {
|
|
205
|
-
return true;
|
|
206
|
-
}
|
|
207
|
-
const hasFilters = Boolean(((_a = filter.contexts) == null ? void 0 : _a.length) || ((_b = filter.messages) == null ? void 0 : _b.length));
|
|
208
|
-
if (!hasFilters) {
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
const { context, messageContent } = this.extractContext(message);
|
|
212
|
-
const contextMatches = this.matchesFilter(context, filter.contexts);
|
|
213
|
-
const messageMatches = this.matchesFilter(messageContent, filter.messages);
|
|
214
|
-
const matches = contextMatches || messageMatches;
|
|
215
|
-
return filter.mode === "exclude" ? !matches : matches;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Log a message in terminal/node environment
|
|
219
|
-
*/
|
|
220
|
-
logTerminal(level, message, ...args) {
|
|
221
|
-
let timestamp = "";
|
|
222
|
-
let levelStr = "";
|
|
223
|
-
let contextPart = "";
|
|
224
|
-
const contextMatch = message.match(/^\[([^\]]+)\]\s(.*)$/);
|
|
225
|
-
let messageContent = message;
|
|
226
|
-
if (contextMatch) {
|
|
227
|
-
contextPart = `[${contextMatch[1]}] `;
|
|
228
|
-
messageContent = contextMatch[2];
|
|
229
|
-
}
|
|
230
|
-
if (this.config.showTimestamp) {
|
|
231
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
232
|
-
timestamp = `[${now}] `;
|
|
233
|
-
}
|
|
234
|
-
levelStr = `[${this.levelLabels[level]}] `;
|
|
235
|
-
if (this.config.showColors) {
|
|
236
|
-
const levelColor = this.levelColors[level];
|
|
237
|
-
const contextColor = this.terminalColors.cyan;
|
|
238
|
-
const timestampColor = this.terminalColors.gray;
|
|
239
|
-
const messageColor = this.terminalColors.white;
|
|
240
|
-
timestamp = `${timestampColor}${timestamp}${this.terminalColors.reset}`;
|
|
241
|
-
levelStr = `${levelColor}${levelStr}${this.terminalColors.reset}`;
|
|
242
|
-
if (contextPart) {
|
|
243
|
-
contextPart = `${contextColor}${contextPart}${this.terminalColors.reset}`;
|
|
244
|
-
}
|
|
245
|
-
messageContent = `${messageColor}${messageContent}${this.terminalColors.reset}`;
|
|
246
|
-
}
|
|
247
|
-
const formattedMessage = timestamp + levelStr + contextPart + messageContent;
|
|
248
|
-
switch (level) {
|
|
249
|
-
case 0 /* ERROR */:
|
|
250
|
-
console.error(formattedMessage, ...args);
|
|
251
|
-
break;
|
|
252
|
-
case 1 /* WARN */:
|
|
253
|
-
console.warn(formattedMessage, ...args);
|
|
254
|
-
break;
|
|
255
|
-
case 2 /* INFO */:
|
|
256
|
-
console.info(formattedMessage, ...args);
|
|
257
|
-
break;
|
|
258
|
-
case 3 /* DEBUG */:
|
|
259
|
-
case 4 /* TRACE */:
|
|
260
|
-
default:
|
|
261
|
-
console.log(formattedMessage, ...args);
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Log a message in browser environment with CSS styling
|
|
267
|
-
*/
|
|
268
|
-
logBrowser(level, message, ...args) {
|
|
269
|
-
const contextMatch = message.match(/^\[([^\]]+)\]\s(.*)$/);
|
|
270
|
-
let context = "";
|
|
271
|
-
let messageContent = message;
|
|
272
|
-
if (contextMatch) {
|
|
273
|
-
context = contextMatch[1];
|
|
274
|
-
messageContent = contextMatch[2];
|
|
275
|
-
}
|
|
276
|
-
let format = "";
|
|
277
|
-
const formatArgs = [];
|
|
278
|
-
if (this.config.showTimestamp) {
|
|
279
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
280
|
-
format += "%c[" + now + "] ";
|
|
281
|
-
formatArgs.push(this.browserColors.timestamp);
|
|
282
|
-
}
|
|
283
|
-
format += "%c[" + this.levelLabels[level] + "] ";
|
|
284
|
-
formatArgs.push(this.levelBrowserColors[level]);
|
|
285
|
-
if (context) {
|
|
286
|
-
format += "%c[" + context + "] ";
|
|
287
|
-
formatArgs.push(this.browserColors.context);
|
|
288
|
-
}
|
|
289
|
-
format += "%c" + messageContent;
|
|
290
|
-
formatArgs.push(this.browserColors.message);
|
|
291
|
-
switch (level) {
|
|
292
|
-
case 0 /* ERROR */:
|
|
293
|
-
console.error(format, ...formatArgs, ...args);
|
|
294
|
-
break;
|
|
295
|
-
case 1 /* WARN */:
|
|
296
|
-
console.warn(format, ...formatArgs, ...args);
|
|
297
|
-
break;
|
|
298
|
-
case 2 /* INFO */:
|
|
299
|
-
console.info(format, ...formatArgs, ...args);
|
|
300
|
-
break;
|
|
301
|
-
case 3 /* DEBUG */:
|
|
302
|
-
case 4 /* TRACE */:
|
|
303
|
-
default:
|
|
304
|
-
console.log(format, ...formatArgs, ...args);
|
|
305
|
-
break;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Creates a context-specific logger.
|
|
310
|
-
*
|
|
311
|
-
* Context loggers automatically prefix all log messages with a context tag.
|
|
312
|
-
* Commonly used in plugins and classes to identify log sources.
|
|
313
|
-
*
|
|
314
|
-
* @param context - Context name (e.g., 'MyPlugin', 'SceneManager')
|
|
315
|
-
* @returns ContextLogger instance
|
|
316
|
-
*
|
|
317
|
-
* @example
|
|
318
|
-
* ```typescript
|
|
319
|
-
* class DisplayPlugin {
|
|
320
|
-
* private logger = logger.createContextLogger('DisplayPlugin');
|
|
321
|
-
*
|
|
322
|
-
* initialize() {
|
|
323
|
-
* this.logger.info('Initializing display');
|
|
324
|
-
* // Output: [INFO] [DisplayPlugin] Initializing display
|
|
325
|
-
* }
|
|
326
|
-
* }
|
|
327
|
-
* ```
|
|
328
|
-
*/
|
|
329
|
-
createContextLogger(context) {
|
|
330
|
-
return new ContextLogger(this, context);
|
|
331
|
-
}
|
|
332
|
-
};
|
|
333
|
-
var ContextLogger = class {
|
|
334
|
-
logger;
|
|
335
|
-
context;
|
|
336
|
-
constructor(logger2, context) {
|
|
337
|
-
this.logger = logger2;
|
|
338
|
-
this.context = context;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Log an error message
|
|
342
|
-
* @param message The message to log
|
|
343
|
-
* @param args Additional arguments to log
|
|
344
|
-
*/
|
|
345
|
-
error(message, ...args) {
|
|
346
|
-
this.logger.error(`[${this.context}] ${message}`, ...args);
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Log a warning message
|
|
350
|
-
* @param message The message to log
|
|
351
|
-
* @param args Additional arguments to log
|
|
352
|
-
*/
|
|
353
|
-
warn(message, ...args) {
|
|
354
|
-
this.logger.warn(`[${this.context}] ${message}`, ...args);
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Log an info message
|
|
358
|
-
* @param message The message to log
|
|
359
|
-
* @param args Additional arguments to log
|
|
360
|
-
*/
|
|
361
|
-
info(message, ...args) {
|
|
362
|
-
this.logger.info(`[${this.context}] ${message}`, ...args);
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Log a debug message
|
|
366
|
-
* @param message The message to log
|
|
367
|
-
* @param args Additional arguments to log
|
|
368
|
-
*/
|
|
369
|
-
debug(message, ...args) {
|
|
370
|
-
this.logger.debug(`[${this.context}] ${message}`, ...args);
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Log a trace message
|
|
374
|
-
* @param message The message to log
|
|
375
|
-
* @param args Additional arguments to log
|
|
376
|
-
*/
|
|
377
|
-
trace(message, ...args) {
|
|
378
|
-
this.logger.trace(`[${this.context}] ${message}`, ...args);
|
|
379
|
-
}
|
|
380
|
-
};
|
|
381
|
-
var logger = Logger.getInstance();
|
|
382
|
-
var contextLoggers = /* @__PURE__ */ new Map();
|
|
383
|
-
function getLogger(context) {
|
|
384
|
-
let cached = contextLoggers.get(context);
|
|
385
|
-
if (!cached) {
|
|
386
|
-
cached = new ContextLogger(logger, context);
|
|
387
|
-
contextLoggers.set(context, cached);
|
|
388
|
-
}
|
|
389
|
-
return cached;
|
|
390
|
-
}
|
|
391
13
|
var DeviceOptimizerPlugin = class {
|
|
392
14
|
name = "deviceOptimizerPlugin";
|
|
393
15
|
priority = 10;
|
|
@@ -1036,18 +658,6 @@ var DeviceOptimizerPlugin = class {
|
|
|
1036
658
|
getLogger("DeviceOptimizerPlugin").debug(`Forced performance tier: ${tier}`);
|
|
1037
659
|
}
|
|
1038
660
|
};
|
|
1039
|
-
|
|
1040
|
-
// helpers/resolvePublicPath.ts
|
|
1041
|
-
function resolvePublicPath(path) {
|
|
1042
|
-
var _a;
|
|
1043
|
-
if (path.startsWith("http://") || path.startsWith("https://")) {
|
|
1044
|
-
return path;
|
|
1045
|
-
}
|
|
1046
|
-
const base = typeof import.meta !== "undefined" && ((_a = import.meta.env) == null ? void 0 : _a.BASE_URL) ? import.meta.env.BASE_URL : "/";
|
|
1047
|
-
const normalizedBase = base.endsWith("/") ? base : `${base}/`;
|
|
1048
|
-
const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
1049
|
-
return `${normalizedBase}${normalizedPath}`;
|
|
1050
|
-
}
|
|
1051
661
|
var ResourcePlugin = class {
|
|
1052
662
|
name = "resourcePlugin";
|
|
1053
663
|
priority = 50;
|
|
@@ -1430,14 +1040,6 @@ var ResourcePlugin = class {
|
|
|
1430
1040
|
return this.config.bundles.filter((bundle) => !bundle.isLazy).length;
|
|
1431
1041
|
}
|
|
1432
1042
|
};
|
|
1433
|
-
|
|
1434
|
-
// plugins/Plugin.types.ts
|
|
1435
|
-
var ENGINE_HOOKS = {
|
|
1436
|
-
onEngineReady: Symbol("onEngineReady"),
|
|
1437
|
-
onPause: Symbol("onPause"),
|
|
1438
|
-
onResume: Symbol("onResume"),
|
|
1439
|
-
onResize: Symbol("onResize")
|
|
1440
|
-
};
|
|
1441
1043
|
var DisplayPlugin = class extends EventEmitter {
|
|
1442
1044
|
name = "displayPlugin";
|
|
1443
1045
|
priority = 900;
|
|
@@ -2592,123 +2194,6 @@ var InputPlugin = class extends EventEmitter {
|
|
|
2592
2194
|
getLogger("InputPlugin").info("InputPlugin cleaned up");
|
|
2593
2195
|
}
|
|
2594
2196
|
};
|
|
2595
|
-
var DEFAULT_LANGUAGE = "en";
|
|
2596
|
-
var initPromise = null;
|
|
2597
|
-
var languageChangedListeners = /* @__PURE__ */ new Set();
|
|
2598
|
-
function normalizeLanguageCode(lng) {
|
|
2599
|
-
if (!lng) return DEFAULT_LANGUAGE;
|
|
2600
|
-
return lng.trim().toLowerCase().split("-")[0] || DEFAULT_LANGUAGE;
|
|
2601
|
-
}
|
|
2602
|
-
function resolveLanguageFromUrl(search = window.location.search) {
|
|
2603
|
-
const raw = new URLSearchParams(search).get("lng");
|
|
2604
|
-
return normalizeLanguageCode(raw);
|
|
2605
|
-
}
|
|
2606
|
-
function createInterpolationFormat() {
|
|
2607
|
-
return (value, format) => {
|
|
2608
|
-
if (typeof value === "string") {
|
|
2609
|
-
value = value.trim();
|
|
2610
|
-
}
|
|
2611
|
-
if (format === "optional" && (value === null || value === void 0 || value === "")) {
|
|
2612
|
-
return "";
|
|
2613
|
-
}
|
|
2614
|
-
switch (format) {
|
|
2615
|
-
case "percentage":
|
|
2616
|
-
if (typeof value === "number" && Number.isNaN(value)) return value;
|
|
2617
|
-
return `${Number(value)}%`;
|
|
2618
|
-
case "uppercase":
|
|
2619
|
-
return (value || "").toString().toLocaleUpperCase();
|
|
2620
|
-
case "lowercase":
|
|
2621
|
-
return (value || "").toString().toLocaleLowerCase();
|
|
2622
|
-
case "firstchar":
|
|
2623
|
-
return (value || "").toString().split(/([.?!]+\s*|\n+)/g).map((part) => {
|
|
2624
|
-
if (/^[.?!]+/.test(part) || /^\s*$/.test(part)) {
|
|
2625
|
-
return part;
|
|
2626
|
-
}
|
|
2627
|
-
return part.toLocaleLowerCase().replace(
|
|
2628
|
-
/^(\s*)(\S)/,
|
|
2629
|
-
(_, spaces, firstChar) => spaces + firstChar.toLocaleUpperCase()
|
|
2630
|
-
);
|
|
2631
|
-
}).join("");
|
|
2632
|
-
case "camel":
|
|
2633
|
-
return (value || "").toString().split(" ").map((word) => {
|
|
2634
|
-
return word.charAt(0).toLocaleUpperCase() + (word || "").slice(1).toLocaleLowerCase();
|
|
2635
|
-
}).join(" ");
|
|
2636
|
-
default:
|
|
2637
|
-
return value;
|
|
2638
|
-
}
|
|
2639
|
-
};
|
|
2640
|
-
}
|
|
2641
|
-
async function initSlotI18n() {
|
|
2642
|
-
if (i18next.isInitialized) {
|
|
2643
|
-
return;
|
|
2644
|
-
}
|
|
2645
|
-
if (initPromise) {
|
|
2646
|
-
return initPromise;
|
|
2647
|
-
}
|
|
2648
|
-
initPromise = (async () => {
|
|
2649
|
-
const requestedLng = resolveLanguageFromUrl();
|
|
2650
|
-
await i18next.use(Backend).use(LanguageDetector).use({
|
|
2651
|
-
type: "postProcessor",
|
|
2652
|
-
name: "trimProcessor",
|
|
2653
|
-
process(value) {
|
|
2654
|
-
if (typeof value === "string") {
|
|
2655
|
-
return value.trim();
|
|
2656
|
-
}
|
|
2657
|
-
return value;
|
|
2658
|
-
}
|
|
2659
|
-
}).init({
|
|
2660
|
-
lng: requestedLng,
|
|
2661
|
-
preload: [DEFAULT_LANGUAGE],
|
|
2662
|
-
fallbackLng: [DEFAULT_LANGUAGE],
|
|
2663
|
-
load: "currentOnly",
|
|
2664
|
-
debug: false,
|
|
2665
|
-
detection: {
|
|
2666
|
-
order: ["querystring", "localStorage", "cookie", "navigator"],
|
|
2667
|
-
lookupQuerystring: "lng",
|
|
2668
|
-
caches: ["localStorage", "cookie"]
|
|
2669
|
-
},
|
|
2670
|
-
backend: {
|
|
2671
|
-
loadPath: resolvePublicPath("locales/{{lng}}.json"),
|
|
2672
|
-
queryStringParams: { v: "1.0.0" }
|
|
2673
|
-
},
|
|
2674
|
-
interpolation: {
|
|
2675
|
-
escapeValue: false,
|
|
2676
|
-
format: createInterpolationFormat()
|
|
2677
|
-
},
|
|
2678
|
-
postProcess: ["trimProcessor"]
|
|
2679
|
-
});
|
|
2680
|
-
i18next.on("languageChanged", (lng) => {
|
|
2681
|
-
const normalized = normalizeLanguageCode(lng);
|
|
2682
|
-
for (const listener of languageChangedListeners) {
|
|
2683
|
-
listener(normalized);
|
|
2684
|
-
}
|
|
2685
|
-
});
|
|
2686
|
-
getLogger("SharedI18n").info("i18n initialized", { language: getCurrentLanguage() });
|
|
2687
|
-
})();
|
|
2688
|
-
try {
|
|
2689
|
-
await initPromise;
|
|
2690
|
-
} catch (error) {
|
|
2691
|
-
initPromise = null;
|
|
2692
|
-
getLogger("SharedI18n").error("Failed to initialize i18n", error);
|
|
2693
|
-
throw error;
|
|
2694
|
-
}
|
|
2695
|
-
}
|
|
2696
|
-
function t(key, options) {
|
|
2697
|
-
return i18next.t(key, options);
|
|
2698
|
-
}
|
|
2699
|
-
async function changeLanguage(lng) {
|
|
2700
|
-
const normalized = normalizeLanguageCode(lng);
|
|
2701
|
-
await i18next.changeLanguage(normalized);
|
|
2702
|
-
}
|
|
2703
|
-
function getCurrentLanguage() {
|
|
2704
|
-
return normalizeLanguageCode(i18next.language);
|
|
2705
|
-
}
|
|
2706
|
-
function isI18nReady() {
|
|
2707
|
-
return i18next.isInitialized;
|
|
2708
|
-
}
|
|
2709
|
-
function getI18nInstance() {
|
|
2710
|
-
return i18next;
|
|
2711
|
-
}
|
|
2712
2197
|
|
|
2713
2198
|
// plugins/language/I18NextPlugin.ts
|
|
2714
2199
|
var I18NextPlugin = class {
|