@hypen-space/core 0.4.14 → 0.4.16
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/app.js +9 -83
- package/dist/app.js.map +3 -3
- package/dist/components/builtin.js +9 -83
- package/dist/components/builtin.js.map +3 -3
- package/dist/context.js +9 -4
- package/dist/context.js.map +3 -3
- package/dist/discovery.js +250 -250
- package/dist/discovery.js.map +5 -5
- package/dist/disposable.js +9 -4
- package/dist/disposable.js.map +3 -3
- package/dist/engine.browser.js +167 -131
- package/dist/engine.browser.js.map +3 -3
- package/dist/engine.js +2 -2
- package/dist/engine.js.map +2 -2
- package/dist/events.js +9 -4
- package/dist/events.js.map +3 -3
- package/dist/index.browser.js +278 -154
- package/dist/index.browser.js.map +7 -6
- package/dist/index.js +427 -434
- package/dist/index.js.map +10 -10
- package/dist/loader.js +2 -2
- package/dist/loader.js.map +2 -2
- package/dist/logger.js +9 -4
- package/dist/logger.js.map +3 -3
- package/dist/plugin.js +351 -6
- package/dist/plugin.js.map +5 -4
- package/dist/remote/client.js +9 -94
- package/dist/remote/client.js.map +3 -3
- package/dist/remote/index.js +481 -342
- package/dist/remote/index.js.map +7 -6
- package/dist/remote/server.js +481 -331
- package/dist/remote/server.js.map +7 -6
- package/dist/renderer.js +9 -4
- package/dist/renderer.js.map +3 -3
- package/dist/resolver.js +350 -5
- package/dist/resolver.js.map +4 -3
- package/dist/router.js +9 -4
- package/dist/router.js.map +3 -3
- package/dist/state.js +8 -3
- package/dist/state.js.map +2 -2
- package/package.json +1 -1
- package/src/logger.ts +1 -1
- package/wasm-browser/hypen_engine_bg.wasm +0 -0
- package/wasm-browser/package.json +1 -1
- package/wasm-node/hypen_engine_bg.wasm +0 -0
- package/wasm-node/package.json +1 -1
package/dist/events.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
1
|
var __create = Object.create;
|
|
3
2
|
var __getProtoOf = Object.getPrototypeOf;
|
|
4
3
|
var __defProp = Object.defineProperty;
|
|
@@ -25,7 +24,13 @@ var __export = (target, all) => {
|
|
|
25
24
|
});
|
|
26
25
|
};
|
|
27
26
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
28
|
-
var __require = /* @__PURE__ */
|
|
27
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
28
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
29
|
+
}) : x)(function(x) {
|
|
30
|
+
if (typeof require !== "undefined")
|
|
31
|
+
return require.apply(this, arguments);
|
|
32
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
33
|
+
});
|
|
29
34
|
|
|
30
35
|
// src/logger.ts
|
|
31
36
|
function isProduction() {
|
|
@@ -180,7 +185,7 @@ var init_logger = __esm(() => {
|
|
|
180
185
|
error: "\x1B[31m"
|
|
181
186
|
};
|
|
182
187
|
config = {
|
|
183
|
-
level: isProduction() ? "error" : "
|
|
188
|
+
level: isProduction() ? "error" : "info",
|
|
184
189
|
colors: true,
|
|
185
190
|
timestamps: false
|
|
186
191
|
};
|
|
@@ -296,4 +301,4 @@ export {
|
|
|
296
301
|
TypedEventEmitter
|
|
297
302
|
};
|
|
298
303
|
|
|
299
|
-
//# debugId=
|
|
304
|
+
//# debugId=312A38A0EBD4737F64756E2164756E21
|
package/dist/events.js.map
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/logger.ts", "../src/events.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * Configurable Debug Logger\n *\n * Provides environment-aware logging that can be disabled in production.\n * Supports log levels, tagged output, and performance timing.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"none\";\n\nexport interface LoggerConfig {\n /** Minimum log level (default: \"debug\" in dev, \"error\" in prod) */\n level: LogLevel;\n /** Enable colored output (default: true) */\n colors: boolean;\n /** Include timestamps (default: false) */\n timestamps: boolean;\n /** Custom log handler (default: console) */\n handler?: LogHandler;\n}\n\nexport interface LogHandler {\n debug(tag: string, ...args: unknown[]): void;\n info(tag: string, ...args: unknown[]): void;\n warn(tag: string, ...args: unknown[]): void;\n error(tag: string, ...args: unknown[]): void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst LOG_LEVEL_ORDER: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\nconst LOG_LEVEL_COLORS: Record<Exclude<LogLevel, \"none\">, string> = {\n debug: \"\\x1b[36m\", // Cyan\n info: \"\\x1b[32m\", // Green\n warn: \"\\x1b[33m\", // Yellow\n error: \"\\x1b[31m\", // Red\n};\n\nconst RESET_COLOR = \"\\x1b[0m\";\n\n// ============================================================================\n// Global Configuration\n// ============================================================================\n\n/**\n * Detect if running in production environment\n */\nfunction isProduction(): boolean {\n if (typeof process !== \"undefined\" && process.env) {\n return process.env.NODE_ENV === \"production\";\n }\n return false;\n}\n\n/**\n * Default configuration\n */\nlet config: LoggerConfig = {\n level: isProduction() ? \"error\" : \"
|
|
5
|
+
"/**\n * Configurable Debug Logger\n *\n * Provides environment-aware logging that can be disabled in production.\n * Supports log levels, tagged output, and performance timing.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"none\";\n\nexport interface LoggerConfig {\n /** Minimum log level (default: \"debug\" in dev, \"error\" in prod) */\n level: LogLevel;\n /** Enable colored output (default: true) */\n colors: boolean;\n /** Include timestamps (default: false) */\n timestamps: boolean;\n /** Custom log handler (default: console) */\n handler?: LogHandler;\n}\n\nexport interface LogHandler {\n debug(tag: string, ...args: unknown[]): void;\n info(tag: string, ...args: unknown[]): void;\n warn(tag: string, ...args: unknown[]): void;\n error(tag: string, ...args: unknown[]): void;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst LOG_LEVEL_ORDER: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\nconst LOG_LEVEL_COLORS: Record<Exclude<LogLevel, \"none\">, string> = {\n debug: \"\\x1b[36m\", // Cyan\n info: \"\\x1b[32m\", // Green\n warn: \"\\x1b[33m\", // Yellow\n error: \"\\x1b[31m\", // Red\n};\n\nconst RESET_COLOR = \"\\x1b[0m\";\n\n// ============================================================================\n// Global Configuration\n// ============================================================================\n\n/**\n * Detect if running in production environment\n */\nfunction isProduction(): boolean {\n if (typeof process !== \"undefined\" && process.env) {\n return process.env.NODE_ENV === \"production\";\n }\n return false;\n}\n\n/**\n * Default configuration\n */\nlet config: LoggerConfig = {\n level: isProduction() ? \"error\" : \"info\",\n colors: true,\n timestamps: false,\n};\n\n// ============================================================================\n// Configuration API\n// ============================================================================\n\n/**\n * Set the global log level\n */\nexport function setLogLevel(level: LogLevel): void {\n config.level = level;\n}\n\n/**\n * Get the current log level\n */\nexport function getLogLevel(): LogLevel {\n return config.level;\n}\n\n/**\n * Configure the logger\n */\nexport function configureLogger(options: Partial<LoggerConfig>): void {\n config = { ...config, ...options };\n}\n\n/**\n * Enable all logging (sets level to \"debug\")\n */\nexport function enableLogging(): void {\n config.level = \"debug\";\n}\n\n/**\n * Disable all logging (sets level to \"none\")\n */\nexport function disableLogging(): void {\n config.level = \"none\";\n}\n\n/**\n * Enable debug mode - alias for enableLogging()\n * Call this at app startup to see all debug logs\n *\n * @example\n * ```typescript\n * import { setDebugMode } from \"@hypen-space/core\";\n * setDebugMode(true);\n * ```\n */\nexport function setDebugMode(enabled: boolean): void {\n config.level = enabled ? \"debug\" : \"error\";\n}\n\n/**\n * Check if debug mode is enabled\n */\nexport function isDebugMode(): boolean {\n return config.level === \"debug\";\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\nfunction shouldLog(level: LogLevel): boolean {\n return LOG_LEVEL_ORDER[level] >= LOG_LEVEL_ORDER[config.level];\n}\n\nfunction formatTag(tag: string, level: LogLevel): string {\n const timestamp = config.timestamps ? `${new Date().toISOString()} ` : \"\";\n\n if (config.colors && level !== \"none\") {\n const color = LOG_LEVEL_COLORS[level as Exclude<LogLevel, \"none\">];\n return `${timestamp}${color}[${tag}]${RESET_COLOR}`;\n }\n\n return `${timestamp}[${tag}]`;\n}\n\n// ============================================================================\n// Logger Class\n// ============================================================================\n\n/**\n * Tagged logger instance\n *\n * @example\n * ```typescript\n * const log = createLogger(\"MyComponent\");\n * log.debug(\"initialized with\", { props });\n * log.error(\"failed to load\", error);\n * ```\n */\nexport class Logger {\n private readonly tag: string;\n\n constructor(tag: string) {\n this.tag = tag;\n }\n\n debug(...args: unknown[]): void {\n if (!shouldLog(\"debug\")) return;\n\n if (config.handler) {\n config.handler.debug(this.tag, ...args);\n } else {\n console.log(formatTag(this.tag, \"debug\"), ...args);\n }\n }\n\n info(...args: unknown[]): void {\n if (!shouldLog(\"info\")) return;\n\n if (config.handler) {\n config.handler.info(this.tag, ...args);\n } else {\n console.info(formatTag(this.tag, \"info\"), ...args);\n }\n }\n\n warn(...args: unknown[]): void {\n if (!shouldLog(\"warn\")) return;\n\n if (config.handler) {\n config.handler.warn(this.tag, ...args);\n } else {\n console.warn(formatTag(this.tag, \"warn\"), ...args);\n }\n }\n\n error(...args: unknown[]): void {\n if (!shouldLog(\"error\")) return;\n\n if (config.handler) {\n config.handler.error(this.tag, ...args);\n } else {\n console.error(formatTag(this.tag, \"error\"), ...args);\n }\n }\n\n /**\n * Time a function execution\n */\n time<T>(label: string, fn: () => T): T {\n if (!shouldLog(\"debug\")) {\n return fn();\n }\n\n const start = performance.now();\n try {\n return fn();\n } finally {\n const duration = performance.now() - start;\n this.debug(`${label}: ${duration.toFixed(2)}ms`);\n }\n }\n\n /**\n * Time an async function execution\n */\n async timeAsync<T>(label: string, fn: () => Promise<T>): Promise<T> {\n if (!shouldLog(\"debug\")) {\n return fn();\n }\n\n const start = performance.now();\n try {\n return await fn();\n } finally {\n const duration = performance.now() - start;\n this.debug(`${label}: ${duration.toFixed(2)}ms`);\n }\n }\n\n /**\n * Create a child logger with additional context\n */\n child(subTag: string): Logger {\n return new Logger(`${this.tag}:${subTag}`);\n }\n\n /**\n * Conditionally log based on a condition\n */\n debugIf(condition: boolean, ...args: unknown[]): void {\n if (condition) this.debug(...args);\n }\n\n warnIf(condition: boolean, ...args: unknown[]): void {\n if (condition) this.warn(...args);\n }\n\n errorIf(condition: boolean, ...args: unknown[]): void {\n if (condition) this.error(...args);\n }\n\n /**\n * Log once (useful for deprecation warnings)\n */\n private loggedOnce = new Set<string>();\n\n warnOnce(key: string, ...args: unknown[]): void {\n if (this.loggedOnce.has(key)) return;\n this.loggedOnce.add(key);\n this.warn(...args);\n }\n\n debugOnce(key: string, ...args: unknown[]): void {\n if (this.loggedOnce.has(key)) return;\n this.loggedOnce.add(key);\n this.debug(...args);\n }\n}\n\n// ============================================================================\n// Factory Functions\n// ============================================================================\n\n/**\n * Create a tagged logger\n *\n * @example\n * ```typescript\n * const log = createLogger(\"Router\");\n * log.info(\"navigating to\", path);\n * ```\n */\nexport function createLogger(tag: string): Logger {\n return new Logger(tag);\n}\n\n// ============================================================================\n// Default Logger Instance\n// ============================================================================\n\n/**\n * Default logger for general use\n */\nexport const logger = createLogger(\"Hypen\");\n\n// ============================================================================\n// Shorthand Functions (untagged)\n// ============================================================================\n\n/**\n * Shorthand logging functions for quick use\n * Prefer createLogger() for component-specific logging\n */\nexport const log = {\n debug: (tag: string, ...args: unknown[]): void => {\n if (!shouldLog(\"debug\")) return;\n console.log(formatTag(tag, \"debug\"), ...args);\n },\n\n info: (tag: string, ...args: unknown[]): void => {\n if (!shouldLog(\"info\")) return;\n console.info(formatTag(tag, \"info\"), ...args);\n },\n\n warn: (tag: string, ...args: unknown[]): void => {\n if (!shouldLog(\"warn\")) return;\n console.warn(formatTag(tag, \"warn\"), ...args);\n },\n\n error: (tag: string, ...args: unknown[]): void => {\n if (!shouldLog(\"error\")) return;\n console.error(formatTag(tag, \"error\"), ...args);\n },\n};\n\n// ============================================================================\n// Predefined Loggers for Framework Components\n// ============================================================================\n\nexport const frameworkLoggers = {\n hypen: createLogger(\"Hypen\"),\n engine: createLogger(\"Engine\"),\n router: createLogger(\"Router\"),\n state: createLogger(\"State\"),\n events: createLogger(\"Events\"),\n remote: createLogger(\"Remote\"),\n renderer: createLogger(\"Renderer\"),\n module: createLogger(\"Module\"),\n lifecycle: createLogger(\"Lifecycle\"),\n loader: createLogger(\"Loader\"),\n context: createLogger(\"Context\"),\n discovery: createLogger(\"Discovery\"),\n plugin: createLogger(\"Plugin\"),\n canvas: createLogger(\"Canvas\"),\n debug: createLogger(\"Debug\"),\n};\n",
|
|
6
6
|
"/**\n * Type-safe Event System\n *\n * Provides strongly-typed event emission and subscription with autocomplete support.\n */\n\nimport { frameworkLoggers } from \"./logger.js\";\n\nconst log = frameworkLoggers.events;\n\nexport type EventHandler<T = unknown> = (payload: T) => void;\n\n/**\n * Type-safe event emitter with generics\n */\nexport class TypedEventEmitter<TEvents extends Record<string, unknown> = Record<string, unknown>> {\n private eventBus = new Map<keyof TEvents, Set<EventHandler<any>>>();\n\n /**\n * Emit an event with type-safe payload\n */\n emit<K extends keyof TEvents>(event: K, payload: TEvents[K]): void {\n const handlers = this.eventBus.get(event);\n if (!handlers || handlers.size === 0) {\n return;\n }\n\n handlers.forEach((handler) => {\n try {\n handler(payload);\n } catch (error) {\n log.error(`Error in event handler for \"${String(event)}\":`, error);\n }\n });\n }\n\n /**\n * Subscribe to an event with type-safe payload\n * Returns an unsubscribe function\n */\n on<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void {\n if (!this.eventBus.has(event)) {\n this.eventBus.set(event, new Set());\n }\n\n const handlers = this.eventBus.get(event)!;\n handlers.add(handler);\n\n // Return unsubscribe function\n return () => {\n handlers.delete(handler);\n if (handlers.size === 0) {\n this.eventBus.delete(event);\n }\n };\n }\n\n /**\n * Subscribe to an event once (auto-unsubscribe after first emit)\n */\n once<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void {\n const wrappedHandler = (payload: TEvents[K]) => {\n handler(payload);\n unsubscribe();\n };\n\n const unsubscribe = this.on(event, wrappedHandler);\n return unsubscribe;\n }\n\n /**\n * Unsubscribe a specific handler from an event\n */\n off<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): void {\n const handlers = this.eventBus.get(event);\n if (handlers) {\n handlers.delete(handler);\n if (handlers.size === 0) {\n this.eventBus.delete(event);\n }\n }\n }\n\n /**\n * Remove all listeners for a specific event\n */\n removeAllListeners<K extends keyof TEvents>(event: K): void {\n this.eventBus.delete(event);\n }\n\n /**\n * Remove all listeners for all events\n */\n clearAll(): void {\n this.eventBus.clear();\n }\n\n /**\n * Get the number of listeners for an event\n */\n listenerCount<K extends keyof TEvents>(event: K): number {\n return this.eventBus.get(event)?.size ?? 0;\n }\n\n /**\n * Get all registered event names\n */\n eventNames(): Array<keyof TEvents> {\n return Array.from(this.eventBus.keys());\n }\n}\n\n/**\n * Default events for Hypen framework (can be extended by users)\n */\nexport type HypenFrameworkEvents = {\n 'module:created': { moduleId: string };\n 'module:destroyed': { moduleId: string };\n 'route:changed': { from: string | null; to: string };\n 'state:updated': { moduleId: string; paths: string[] };\n 'action:dispatched': { moduleId: string; actionName: string; payload?: unknown };\n 'error': { message: string; error?: Error; context?: string };\n};\n\n/**\n * Create a typed event emitter with custom event map\n */\nexport function createEventEmitter<TEvents extends Record<string, unknown> = HypenFrameworkEvents>(): TypedEventEmitter<TEvents> {\n return new TypedEventEmitter<TEvents>();\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "312A38A0EBD4737F64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/dist/index.browser.js
CHANGED
|
@@ -1,99 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
constructor(actionName, cause) {
|
|
25
|
-
super("ACTION_ERROR", `Action handler "${actionName}" failed: ${cause instanceof Error ? cause.message : String(cause)}`, {
|
|
26
|
-
context: { actionName },
|
|
27
|
-
cause: cause instanceof Error ? cause : undefined
|
|
28
|
-
});
|
|
29
|
-
this.name = "ActionError";
|
|
30
|
-
this.actionName = actionName;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
class ConnectionError extends HypenError {
|
|
35
|
-
url;
|
|
36
|
-
attempt;
|
|
37
|
-
constructor(url, cause, attempt) {
|
|
38
|
-
super("CONNECTION_ERROR", `Connection to "${url}" failed${attempt ? ` (attempt ${attempt})` : ""}: ${cause instanceof Error ? cause.message : String(cause)}`, {
|
|
39
|
-
context: { url, attempt },
|
|
40
|
-
cause: cause instanceof Error ? cause : undefined
|
|
41
|
-
});
|
|
42
|
-
this.name = "ConnectionError";
|
|
43
|
-
this.url = url;
|
|
44
|
-
this.attempt = attempt;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
class StateError extends HypenError {
|
|
49
|
-
path;
|
|
50
|
-
constructor(message, path, cause) {
|
|
51
|
-
super("STATE_ERROR", message, {
|
|
52
|
-
context: { path },
|
|
53
|
-
cause: cause instanceof Error ? cause : undefined
|
|
54
|
-
});
|
|
55
|
-
this.name = "StateError";
|
|
56
|
-
this.path = path;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
class ParseError extends HypenError {
|
|
61
|
-
source;
|
|
62
|
-
constructor(message, source, cause) {
|
|
63
|
-
super("PARSE_ERROR", message, {
|
|
64
|
-
context: { source },
|
|
65
|
-
cause: cause instanceof Error ? cause : undefined
|
|
66
|
-
});
|
|
67
|
-
this.name = "ParseError";
|
|
68
|
-
this.source = source;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
class RenderError extends HypenError {
|
|
73
|
-
constructor(message, cause) {
|
|
74
|
-
super("RENDER_ERROR", message, {
|
|
75
|
-
cause: cause instanceof Error ? cause : undefined
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
7
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
8
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
9
|
+
for (let key of __getOwnPropNames(mod))
|
|
10
|
+
if (!__hasOwnProp.call(to, key))
|
|
11
|
+
__defProp(to, key, {
|
|
12
|
+
get: () => mod[key],
|
|
13
|
+
enumerable: true
|
|
14
|
+
});
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __export = (target, all) => {
|
|
18
|
+
for (var name in all)
|
|
19
|
+
__defProp(target, name, {
|
|
20
|
+
get: all[name],
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
set: (newValue) => all[name] = () => newValue
|
|
76
24
|
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (
|
|
83
|
-
return
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return new StateError(message);
|
|
87
|
-
}
|
|
88
|
-
if (message.startsWith("Parent node not found:")) {
|
|
89
|
-
return new RenderError(message);
|
|
90
|
-
}
|
|
91
|
-
return new RenderError(message);
|
|
92
|
-
}
|
|
25
|
+
};
|
|
26
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
27
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
28
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
29
|
+
}) : x)(function(x) {
|
|
30
|
+
if (typeof require !== "undefined")
|
|
31
|
+
return require.apply(this, arguments);
|
|
32
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
33
|
+
});
|
|
93
34
|
|
|
94
35
|
// src/state.ts
|
|
95
|
-
var IS_PROXY = Symbol.for("hypen.isProxy");
|
|
96
|
-
var RAW_TARGET = Symbol.for("hypen.rawTarget");
|
|
97
36
|
function deepClone(obj) {
|
|
98
37
|
if (obj === null || typeof obj !== "object") {
|
|
99
38
|
return obj;
|
|
@@ -326,33 +265,28 @@ function getStateSnapshot(state) {
|
|
|
326
265
|
}
|
|
327
266
|
return deepClone(state);
|
|
328
267
|
}
|
|
268
|
+
function isStateProxy(value) {
|
|
269
|
+
return value !== null && typeof value === "object" && value[IS_PROXY] === true;
|
|
270
|
+
}
|
|
271
|
+
function unwrapProxy(value) {
|
|
272
|
+
if (value !== null && typeof value === "object" && value[IS_PROXY]) {
|
|
273
|
+
return value[RAW_TARGET];
|
|
274
|
+
}
|
|
275
|
+
return value;
|
|
276
|
+
}
|
|
277
|
+
var IS_PROXY, RAW_TARGET;
|
|
278
|
+
var init_state = __esm(() => {
|
|
279
|
+
IS_PROXY = Symbol.for("hypen.isProxy");
|
|
280
|
+
RAW_TARGET = Symbol.for("hypen.rawTarget");
|
|
281
|
+
});
|
|
329
282
|
|
|
330
283
|
// src/logger.ts
|
|
331
|
-
var LOG_LEVEL_ORDER = {
|
|
332
|
-
debug: 0,
|
|
333
|
-
info: 1,
|
|
334
|
-
warn: 2,
|
|
335
|
-
error: 3,
|
|
336
|
-
none: 4
|
|
337
|
-
};
|
|
338
|
-
var LOG_LEVEL_COLORS = {
|
|
339
|
-
debug: "\x1B[36m",
|
|
340
|
-
info: "\x1B[32m",
|
|
341
|
-
warn: "\x1B[33m",
|
|
342
|
-
error: "\x1B[31m"
|
|
343
|
-
};
|
|
344
|
-
var RESET_COLOR = "\x1B[0m";
|
|
345
284
|
function isProduction() {
|
|
346
285
|
if (typeof process !== "undefined" && process.env) {
|
|
347
286
|
return false;
|
|
348
287
|
}
|
|
349
288
|
return false;
|
|
350
289
|
}
|
|
351
|
-
var config = {
|
|
352
|
-
level: isProduction() ? "error" : "debug",
|
|
353
|
-
colors: true,
|
|
354
|
-
timestamps: false
|
|
355
|
-
};
|
|
356
290
|
function setLogLevel(level) {
|
|
357
291
|
config.level = level;
|
|
358
292
|
}
|
|
@@ -483,49 +417,167 @@ class Logger {
|
|
|
483
417
|
function createLogger(tag) {
|
|
484
418
|
return new Logger(tag);
|
|
485
419
|
}
|
|
486
|
-
var
|
|
487
|
-
var
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
420
|
+
var LOG_LEVEL_ORDER, LOG_LEVEL_COLORS, RESET_COLOR = "\x1B[0m", config, logger, log, frameworkLoggers;
|
|
421
|
+
var init_logger = __esm(() => {
|
|
422
|
+
LOG_LEVEL_ORDER = {
|
|
423
|
+
debug: 0,
|
|
424
|
+
info: 1,
|
|
425
|
+
warn: 2,
|
|
426
|
+
error: 3,
|
|
427
|
+
none: 4
|
|
428
|
+
};
|
|
429
|
+
LOG_LEVEL_COLORS = {
|
|
430
|
+
debug: "\x1B[36m",
|
|
431
|
+
info: "\x1B[32m",
|
|
432
|
+
warn: "\x1B[33m",
|
|
433
|
+
error: "\x1B[31m"
|
|
434
|
+
};
|
|
435
|
+
config = {
|
|
436
|
+
level: isProduction() ? "error" : "info",
|
|
437
|
+
colors: true,
|
|
438
|
+
timestamps: false
|
|
439
|
+
};
|
|
440
|
+
logger = createLogger("Hypen");
|
|
441
|
+
log = {
|
|
442
|
+
debug: (tag, ...args) => {
|
|
443
|
+
if (!shouldLog("debug"))
|
|
444
|
+
return;
|
|
445
|
+
console.log(formatTag(tag, "debug"), ...args);
|
|
446
|
+
},
|
|
447
|
+
info: (tag, ...args) => {
|
|
448
|
+
if (!shouldLog("info"))
|
|
449
|
+
return;
|
|
450
|
+
console.info(formatTag(tag, "info"), ...args);
|
|
451
|
+
},
|
|
452
|
+
warn: (tag, ...args) => {
|
|
453
|
+
if (!shouldLog("warn"))
|
|
454
|
+
return;
|
|
455
|
+
console.warn(formatTag(tag, "warn"), ...args);
|
|
456
|
+
},
|
|
457
|
+
error: (tag, ...args) => {
|
|
458
|
+
if (!shouldLog("error"))
|
|
459
|
+
return;
|
|
460
|
+
console.error(formatTag(tag, "error"), ...args);
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
frameworkLoggers = {
|
|
464
|
+
hypen: createLogger("Hypen"),
|
|
465
|
+
engine: createLogger("Engine"),
|
|
466
|
+
router: createLogger("Router"),
|
|
467
|
+
state: createLogger("State"),
|
|
468
|
+
events: createLogger("Events"),
|
|
469
|
+
remote: createLogger("Remote"),
|
|
470
|
+
renderer: createLogger("Renderer"),
|
|
471
|
+
module: createLogger("Module"),
|
|
472
|
+
lifecycle: createLogger("Lifecycle"),
|
|
473
|
+
loader: createLogger("Loader"),
|
|
474
|
+
context: createLogger("Context"),
|
|
475
|
+
discovery: createLogger("Discovery"),
|
|
476
|
+
plugin: createLogger("Plugin"),
|
|
477
|
+
canvas: createLogger("Canvas"),
|
|
478
|
+
debug: createLogger("Debug")
|
|
479
|
+
};
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
// src/result.ts
|
|
483
|
+
function Ok(value) {
|
|
484
|
+
return { ok: true, value };
|
|
485
|
+
}
|
|
486
|
+
function Err(error) {
|
|
487
|
+
return { ok: false, error };
|
|
488
|
+
}
|
|
489
|
+
function classifyEngineError(err) {
|
|
490
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
491
|
+
if (message.startsWith("Parse error:")) {
|
|
492
|
+
return new ParseError(message);
|
|
507
493
|
}
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
494
|
+
if (message.startsWith("Invalid state:") || message.startsWith("Invalid state patch:")) {
|
|
495
|
+
return new StateError(message);
|
|
496
|
+
}
|
|
497
|
+
if (message.startsWith("Parent node not found:")) {
|
|
498
|
+
return new RenderError(message);
|
|
499
|
+
}
|
|
500
|
+
return new RenderError(message);
|
|
501
|
+
}
|
|
502
|
+
var HypenError, ActionError, ConnectionError, StateError, ParseError, RenderError;
|
|
503
|
+
var init_result = __esm(() => {
|
|
504
|
+
HypenError = class HypenError extends Error {
|
|
505
|
+
code;
|
|
506
|
+
context;
|
|
507
|
+
cause;
|
|
508
|
+
constructor(code, message, options) {
|
|
509
|
+
super(message);
|
|
510
|
+
this.name = "HypenError";
|
|
511
|
+
this.code = code;
|
|
512
|
+
this.context = options?.context;
|
|
513
|
+
this.cause = options?.cause;
|
|
514
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
515
|
+
}
|
|
516
|
+
};
|
|
517
|
+
ActionError = class ActionError extends HypenError {
|
|
518
|
+
actionName;
|
|
519
|
+
constructor(actionName, cause) {
|
|
520
|
+
super("ACTION_ERROR", `Action handler "${actionName}" failed: ${cause instanceof Error ? cause.message : String(cause)}`, {
|
|
521
|
+
context: { actionName },
|
|
522
|
+
cause: cause instanceof Error ? cause : undefined
|
|
523
|
+
});
|
|
524
|
+
this.name = "ActionError";
|
|
525
|
+
this.actionName = actionName;
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
|
+
ConnectionError = class ConnectionError extends HypenError {
|
|
529
|
+
url;
|
|
530
|
+
attempt;
|
|
531
|
+
constructor(url, cause, attempt) {
|
|
532
|
+
super("CONNECTION_ERROR", `Connection to "${url}" failed${attempt ? ` (attempt ${attempt})` : ""}: ${cause instanceof Error ? cause.message : String(cause)}`, {
|
|
533
|
+
context: { url, attempt },
|
|
534
|
+
cause: cause instanceof Error ? cause : undefined
|
|
535
|
+
});
|
|
536
|
+
this.name = "ConnectionError";
|
|
537
|
+
this.url = url;
|
|
538
|
+
this.attempt = attempt;
|
|
539
|
+
}
|
|
540
|
+
};
|
|
541
|
+
StateError = class StateError extends HypenError {
|
|
542
|
+
path;
|
|
543
|
+
constructor(message, path, cause) {
|
|
544
|
+
super("STATE_ERROR", message, {
|
|
545
|
+
context: { path },
|
|
546
|
+
cause: cause instanceof Error ? cause : undefined
|
|
547
|
+
});
|
|
548
|
+
this.name = "StateError";
|
|
549
|
+
this.path = path;
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
ParseError = class ParseError extends HypenError {
|
|
553
|
+
source;
|
|
554
|
+
constructor(message, source, cause) {
|
|
555
|
+
super("PARSE_ERROR", message, {
|
|
556
|
+
context: { source },
|
|
557
|
+
cause: cause instanceof Error ? cause : undefined
|
|
558
|
+
});
|
|
559
|
+
this.name = "ParseError";
|
|
560
|
+
this.source = source;
|
|
561
|
+
}
|
|
562
|
+
};
|
|
563
|
+
RenderError = class RenderError extends HypenError {
|
|
564
|
+
constructor(message, cause) {
|
|
565
|
+
super("RENDER_ERROR", message, {
|
|
566
|
+
cause: cause instanceof Error ? cause : undefined
|
|
567
|
+
});
|
|
568
|
+
this.name = "RenderError";
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
});
|
|
526
572
|
|
|
527
573
|
// src/app.ts
|
|
528
|
-
var
|
|
574
|
+
var exports_app = {};
|
|
575
|
+
__export(exports_app, {
|
|
576
|
+
app: () => app,
|
|
577
|
+
HypenModuleInstance: () => HypenModuleInstance,
|
|
578
|
+
HypenAppBuilder: () => HypenAppBuilder,
|
|
579
|
+
HypenApp: () => HypenApp
|
|
580
|
+
});
|
|
529
581
|
|
|
530
582
|
class HypenAppBuilder {
|
|
531
583
|
initialState;
|
|
@@ -638,7 +690,6 @@ class HypenApp {
|
|
|
638
690
|
this._registry.clear();
|
|
639
691
|
}
|
|
640
692
|
}
|
|
641
|
-
var app = new HypenApp;
|
|
642
693
|
|
|
643
694
|
class HypenModuleInstance {
|
|
644
695
|
engine;
|
|
@@ -810,7 +861,17 @@ class HypenModuleInstance {
|
|
|
810
861
|
Object.assign(this.state, patch);
|
|
811
862
|
}
|
|
812
863
|
}
|
|
864
|
+
var log2, app;
|
|
865
|
+
var init_app = __esm(() => {
|
|
866
|
+
init_result();
|
|
867
|
+
init_state();
|
|
868
|
+
init_logger();
|
|
869
|
+
log2 = createLogger("ModuleInstance");
|
|
870
|
+
app = new HypenApp;
|
|
871
|
+
});
|
|
872
|
+
|
|
813
873
|
// src/renderer.ts
|
|
874
|
+
init_logger();
|
|
814
875
|
var log3 = frameworkLoggers.renderer;
|
|
815
876
|
|
|
816
877
|
class BaseRenderer {
|
|
@@ -860,7 +921,10 @@ class ConsoleRenderer {
|
|
|
860
921
|
console.groupEnd();
|
|
861
922
|
}
|
|
862
923
|
}
|
|
924
|
+
|
|
863
925
|
// src/router.ts
|
|
926
|
+
init_state();
|
|
927
|
+
init_logger();
|
|
864
928
|
var log4 = frameworkLoggers.router;
|
|
865
929
|
|
|
866
930
|
class HypenRouter {
|
|
@@ -1057,7 +1121,9 @@ class HypenRouter {
|
|
|
1057
1121
|
return `${path}?${queryString}`;
|
|
1058
1122
|
}
|
|
1059
1123
|
}
|
|
1124
|
+
|
|
1060
1125
|
// src/events.ts
|
|
1126
|
+
init_logger();
|
|
1061
1127
|
var log5 = frameworkLoggers.events;
|
|
1062
1128
|
|
|
1063
1129
|
class TypedEventEmitter {
|
|
@@ -1121,7 +1187,9 @@ class TypedEventEmitter {
|
|
|
1121
1187
|
function createEventEmitter() {
|
|
1122
1188
|
return new TypedEventEmitter;
|
|
1123
1189
|
}
|
|
1190
|
+
|
|
1124
1191
|
// src/context.ts
|
|
1192
|
+
init_logger();
|
|
1125
1193
|
var log6 = frameworkLoggers.context;
|
|
1126
1194
|
|
|
1127
1195
|
class HypenGlobalContext {
|
|
@@ -1225,8 +1293,14 @@ class HypenGlobalContext {
|
|
|
1225
1293
|
};
|
|
1226
1294
|
}
|
|
1227
1295
|
}
|
|
1296
|
+
|
|
1228
1297
|
// src/disposable.ts
|
|
1298
|
+
init_logger();
|
|
1229
1299
|
var log7 = frameworkLoggers.lifecycle;
|
|
1300
|
+
function isDisposable(obj) {
|
|
1301
|
+
return obj !== null && typeof obj === "object" && "dispose" in obj && typeof obj.dispose === "function";
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1230
1304
|
class DisposableStack {
|
|
1231
1305
|
stack = [];
|
|
1232
1306
|
disposed = false;
|
|
@@ -1315,6 +1389,17 @@ function getElementDisposables(element) {
|
|
|
1315
1389
|
element[ELEMENT_DISPOSABLES] = stack;
|
|
1316
1390
|
return stack;
|
|
1317
1391
|
}
|
|
1392
|
+
function disposeElement(element) {
|
|
1393
|
+
const stack = element[ELEMENT_DISPOSABLES];
|
|
1394
|
+
if (stack instanceof DisposableStack) {
|
|
1395
|
+
stack.dispose();
|
|
1396
|
+
delete element[ELEMENT_DISPOSABLES];
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
function hasElementDisposables(element) {
|
|
1400
|
+
return element[ELEMENT_DISPOSABLES] instanceof DisposableStack;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1318
1403
|
class DisposableMixin {
|
|
1319
1404
|
disposables = new DisposableStack;
|
|
1320
1405
|
track(disposable) {
|
|
@@ -1327,8 +1412,41 @@ class DisposableMixin {
|
|
|
1327
1412
|
this.disposables.dispose();
|
|
1328
1413
|
}
|
|
1329
1414
|
}
|
|
1415
|
+
function compositeDisposable(...disposables) {
|
|
1416
|
+
return {
|
|
1417
|
+
dispose: () => {
|
|
1418
|
+
for (const d of disposables) {
|
|
1419
|
+
try {
|
|
1420
|
+
d.dispose();
|
|
1421
|
+
} catch (error) {
|
|
1422
|
+
log7.error("Error during dispose:", error);
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
};
|
|
1427
|
+
}
|
|
1428
|
+
async function using(resource, fn) {
|
|
1429
|
+
const r = typeof resource === "function" ? resource() : resource;
|
|
1430
|
+
try {
|
|
1431
|
+
return await fn(r);
|
|
1432
|
+
} finally {
|
|
1433
|
+
r.dispose();
|
|
1434
|
+
}
|
|
1435
|
+
}
|
|
1436
|
+
function usingSync(resource, fn) {
|
|
1437
|
+
const r = typeof resource === "function" ? resource() : resource;
|
|
1438
|
+
try {
|
|
1439
|
+
return fn(r);
|
|
1440
|
+
} finally {
|
|
1441
|
+
r.dispose();
|
|
1442
|
+
}
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1445
|
+
// src/remote/client.ts
|
|
1446
|
+
init_result();
|
|
1330
1447
|
|
|
1331
1448
|
// src/retry.ts
|
|
1449
|
+
init_result();
|
|
1332
1450
|
var DEFAULT_OPTIONS = {
|
|
1333
1451
|
maxAttempts: 3,
|
|
1334
1452
|
delayMs: 1000,
|
|
@@ -1443,6 +1561,7 @@ var RetryPresets = {
|
|
|
1443
1561
|
};
|
|
1444
1562
|
|
|
1445
1563
|
// src/remote/client.ts
|
|
1564
|
+
init_logger();
|
|
1446
1565
|
var log8 = frameworkLoggers.remote;
|
|
1447
1566
|
|
|
1448
1567
|
class RemoteEngine {
|
|
@@ -1688,6 +1807,11 @@ class RemoteEngine {
|
|
|
1688
1807
|
}, this.options.reconnectInterval);
|
|
1689
1808
|
}
|
|
1690
1809
|
}
|
|
1810
|
+
|
|
1811
|
+
// src/index.browser.ts
|
|
1812
|
+
init_app();
|
|
1813
|
+
init_state();
|
|
1814
|
+
init_logger();
|
|
1691
1815
|
export {
|
|
1692
1816
|
setLogLevel,
|
|
1693
1817
|
setDebugMode,
|
|
@@ -1725,4 +1849,4 @@ export {
|
|
|
1725
1849
|
BaseRenderer
|
|
1726
1850
|
};
|
|
1727
1851
|
|
|
1728
|
-
//# debugId=
|
|
1852
|
+
//# debugId=0E3BF22DA5A4485864756E2164756E21
|