@hypen-space/core 0.4.956 → 0.5.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.
Files changed (96) hide show
  1. package/README.md +5 -8
  2. package/dist/app.js +13 -1168
  3. package/dist/app.js.map +3 -9
  4. package/dist/chunk-00zt3w6e.js +58 -0
  5. package/dist/chunk-00zt3w6e.js.map +10 -0
  6. package/dist/chunk-3zvyth50.js +87 -0
  7. package/dist/chunk-3zvyth50.js.map +10 -0
  8. package/dist/chunk-5gtx3pza.js +11 -0
  9. package/dist/chunk-5gtx3pza.js.map +9 -0
  10. package/dist/chunk-7222131a.js +191 -0
  11. package/dist/chunk-7222131a.js.map +10 -0
  12. package/dist/chunk-avchpwhf.js +200 -0
  13. package/dist/chunk-avchpwhf.js.map +10 -0
  14. package/dist/chunk-ec0tgy9a.js +154 -0
  15. package/dist/chunk-ec0tgy9a.js.map +10 -0
  16. package/dist/chunk-fnss4dm2.js +479 -0
  17. package/dist/chunk-fnss4dm2.js.map +10 -0
  18. package/dist/chunk-g2gz9pgg.js +133 -0
  19. package/dist/chunk-g2gz9pgg.js.map +10 -0
  20. package/dist/chunk-g72v6mmf.js +341 -0
  21. package/dist/chunk-g72v6mmf.js.map +10 -0
  22. package/dist/chunk-g7g3jxty.js +351 -0
  23. package/dist/chunk-g7g3jxty.js.map +10 -0
  24. package/dist/chunk-g830re2c.js +50 -0
  25. package/dist/chunk-g830re2c.js.map +10 -0
  26. package/dist/chunk-gtwh1sg7.js +127 -0
  27. package/dist/chunk-gtwh1sg7.js.map +10 -0
  28. package/dist/chunk-k12cwfst.js +72 -0
  29. package/dist/chunk-k12cwfst.js.map +10 -0
  30. package/dist/chunk-mbqqsz6r.js +128 -0
  31. package/dist/chunk-mbqqsz6r.js.map +10 -0
  32. package/dist/chunk-ne632swm.js +209 -0
  33. package/dist/chunk-ne632swm.js.map +10 -0
  34. package/dist/chunk-p3pj1bax.js +206 -0
  35. package/dist/chunk-p3pj1bax.js.map +10 -0
  36. package/dist/chunk-vshdk2pw.js +56 -0
  37. package/dist/chunk-vshdk2pw.js.map +10 -0
  38. package/dist/chunk-wp2ebn2m.js +51 -0
  39. package/dist/chunk-wp2ebn2m.js.map +10 -0
  40. package/dist/chunk-x4qv4jm9.js +88 -0
  41. package/dist/chunk-x4qv4jm9.js.map +10 -0
  42. package/dist/chunk-ycxp4drd.js +211 -0
  43. package/dist/chunk-ycxp4drd.js.map +10 -0
  44. package/dist/components/builtin.js +14 -1246
  45. package/dist/components/builtin.js.map +3 -10
  46. package/dist/context.js +7 -362
  47. package/dist/context.js.map +3 -6
  48. package/dist/datasource.js +5 -76
  49. package/dist/datasource.js.map +3 -4
  50. package/dist/disposable.js +20 -367
  51. package/dist/disposable.js.map +3 -5
  52. package/dist/engine-base.d.ts +38 -2
  53. package/dist/engine-base.js +45 -412
  54. package/dist/engine-base.js.map +4 -6
  55. package/dist/events.js +7 -285
  56. package/dist/events.js.map +3 -5
  57. package/dist/hypen.js +8 -71
  58. package/dist/hypen.js.map +3 -4
  59. package/dist/index.browser.js +58 -2152
  60. package/dist/index.browser.js.map +3 -16
  61. package/dist/index.d.ts +2 -0
  62. package/dist/index.js +132 -3058
  63. package/dist/index.js.map +4 -22
  64. package/dist/logger.js +16 -220
  65. package/dist/logger.js.map +3 -4
  66. package/dist/managed-router.js +12 -1367
  67. package/dist/managed-router.js.map +3 -10
  68. package/dist/portable.js +6 -70
  69. package/dist/portable.js.map +3 -4
  70. package/dist/remote/client.js +9 -1010
  71. package/dist/remote/client.js.map +3 -8
  72. package/dist/remote/index.d.ts +2 -0
  73. package/dist/remote/index.js +511 -1066
  74. package/dist/remote/index.js.map +4 -9
  75. package/dist/remote/remote-session.d.ts +245 -0
  76. package/dist/remote/session.js +5 -147
  77. package/dist/remote/session.js.map +3 -4
  78. package/dist/renderer.js +7 -271
  79. package/dist/renderer.js.map +3 -5
  80. package/dist/resolver.js +5 -484
  81. package/dist/resolver.js.map +3 -5
  82. package/dist/result.js +25 -211
  83. package/dist/result.js.map +3 -4
  84. package/dist/retry.js +10 -336
  85. package/dist/retry.js.map +3 -5
  86. package/dist/router.js +9 -807
  87. package/dist/router.js.map +3 -8
  88. package/dist/state.js +10 -274
  89. package/dist/state.js.map +3 -5
  90. package/dist/validate.d.ts +19 -0
  91. package/package.json +13 -1
  92. package/src/engine-base.ts +87 -4
  93. package/src/index.ts +5 -0
  94. package/src/remote/index.ts +16 -0
  95. package/src/remote/remote-session.ts +998 -0
  96. package/src/validate.ts +37 -0
@@ -1,151 +1,9 @@
1
- var __defProp = Object.defineProperty;
2
- var __returnValue = (v) => v;
3
- function __exportSetter(name, newValue) {
4
- this[name] = __returnValue.bind(null, newValue);
5
- }
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true,
11
- configurable: true,
12
- set: __exportSetter.bind(all, name)
13
- });
14
- };
15
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
16
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
17
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
18
- }) : x)(function(x) {
19
- if (typeof require !== "undefined")
20
- return require.apply(this, arguments);
21
- throw Error('Dynamic require of "' + x + '" is not supported');
22
- });
23
-
24
- // src/remote/session.ts
25
- class SessionManager {
26
- activeSessions = new Map;
27
- pendingSessions = new Map;
28
- sessionConnections = new Map;
29
- config;
30
- constructor(config = {}) {
31
- this.config = {
32
- ttl: config.ttl ?? 3600,
33
- concurrent: config.concurrent ?? "kick-old",
34
- generateId: config.generateId ?? (() => crypto.randomUUID())
35
- };
36
- }
37
- getTtl() {
38
- return this.config.ttl;
39
- }
40
- getConcurrentPolicy() {
41
- return this.config.concurrent;
42
- }
43
- createSession(props) {
44
- const now = new Date;
45
- const session = {
46
- id: this.config.generateId(),
47
- ttl: this.config.ttl,
48
- createdAt: now,
49
- lastConnectedAt: now,
50
- props
51
- };
52
- this.activeSessions.set(session.id, session);
53
- return session;
54
- }
55
- getActiveSession(id) {
56
- return this.activeSessions.get(id) ?? null;
57
- }
58
- getPendingSession(id) {
59
- return this.pendingSessions.get(id) ?? null;
60
- }
61
- hasSession(id) {
62
- return this.activeSessions.has(id) || this.pendingSessions.has(id);
63
- }
64
- suspendSession(sessionId, savedState, onExpire) {
65
- const session = this.activeSessions.get(sessionId);
66
- if (!session)
67
- return;
68
- this.activeSessions.delete(sessionId);
69
- const expiryTimer = setTimeout(async () => {
70
- const pending = this.pendingSessions.get(sessionId);
71
- if (pending) {
72
- this.pendingSessions.delete(sessionId);
73
- await onExpire(pending.session);
74
- }
75
- }, session.ttl * 1000);
76
- this.pendingSessions.set(sessionId, {
77
- session,
78
- savedState,
79
- expiryTimer
80
- });
81
- }
82
- resumeSession(sessionId) {
83
- const pending = this.pendingSessions.get(sessionId);
84
- if (!pending)
85
- return null;
86
- clearTimeout(pending.expiryTimer);
87
- this.pendingSessions.delete(sessionId);
88
- pending.session.lastConnectedAt = new Date;
89
- this.activeSessions.set(sessionId, pending.session);
90
- return {
91
- session: pending.session,
92
- savedState: pending.savedState
93
- };
94
- }
95
- destroySession(sessionId) {
96
- this.activeSessions.delete(sessionId);
97
- const pending = this.pendingSessions.get(sessionId);
98
- if (pending) {
99
- clearTimeout(pending.expiryTimer);
100
- this.pendingSessions.delete(sessionId);
101
- }
102
- this.sessionConnections.delete(sessionId);
103
- }
104
- trackConnection(sessionId, ws) {
105
- let connections = this.sessionConnections.get(sessionId);
106
- if (!connections) {
107
- connections = new Set;
108
- this.sessionConnections.set(sessionId, connections);
109
- }
110
- connections.add(ws);
111
- }
112
- untrackConnection(sessionId, ws) {
113
- const connections = this.sessionConnections.get(sessionId);
114
- if (connections) {
115
- connections.delete(ws);
116
- if (connections.size === 0) {
117
- this.sessionConnections.delete(sessionId);
118
- }
119
- }
120
- }
121
- getConnections(sessionId) {
122
- return this.sessionConnections.get(sessionId);
123
- }
124
- getConnectionCount(sessionId) {
125
- return this.sessionConnections.get(sessionId)?.size ?? 0;
126
- }
127
- getStats() {
128
- let totalConnections = 0;
129
- for (const connections of this.sessionConnections.values()) {
130
- totalConnections += connections.size;
131
- }
132
- return {
133
- activeSessions: this.activeSessions.size,
134
- pendingSessions: this.pendingSessions.size,
135
- totalConnections
136
- };
137
- }
138
- destroy() {
139
- for (const pending of this.pendingSessions.values()) {
140
- clearTimeout(pending.expiryTimer);
141
- }
142
- this.activeSessions.clear();
143
- this.pendingSessions.clear();
144
- this.sessionConnections.clear();
145
- }
146
- }
1
+ import {
2
+ SessionManager
3
+ } from "../chunk-gtwh1sg7.js";
4
+ import"../chunk-5gtx3pza.js";
147
5
  export {
148
6
  SessionManager
149
7
  };
150
8
 
151
- //# debugId=FA5E27F2BDA2311B64756E2164756E21
9
+ //# debugId=EE5034BABF87202F64756E2164756E21
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/remote/session.ts"],
3
+ "sources": [],
4
4
  "sourcesContent": [
5
- "/**\n * Session Management for Remote UI\n *\n * Manages session lifecycle including:\n * - Creating new sessions\n * - Suspending sessions on disconnect (pending reconnection)\n * - Resuming sessions on reconnect\n * - Expiring sessions after TTL\n * - Handling concurrent connections\n */\n\nimport type { Session, SessionConfig } from \"./types.js\";\n\n/**\n * Internal representation of a pending (disconnected) session\n */\ninterface PendingSession {\n session: Session;\n savedState: unknown;\n expiryTimer: ReturnType<typeof setTimeout>;\n}\n\n/**\n * Callback invoked when a session expires\n */\nexport type SessionExpireCallback = (session: Session) => void | Promise<void>;\n\n/**\n * Manages session lifecycle for remote UI connections\n */\nexport class SessionManager {\n /** Active sessions (currently connected) */\n private activeSessions = new Map<string, Session>();\n\n /** Pending sessions (disconnected, waiting for reconnect within TTL) */\n private pendingSessions = new Map<string, PendingSession>();\n\n /** Maps session ID to connected WebSocket(s) for concurrent handling */\n private sessionConnections = new Map<string, Set<unknown>>();\n\n /** Resolved configuration with defaults */\n private config: Required<SessionConfig>;\n\n constructor(config: SessionConfig = {}) {\n this.config = {\n ttl: config.ttl ?? 3600, // 1 hour default\n concurrent: config.concurrent ?? \"kick-old\",\n generateId: config.generateId ?? (() => crypto.randomUUID()),\n };\n }\n\n /**\n * Get the configured TTL in seconds\n */\n getTtl(): number {\n return this.config.ttl;\n }\n\n /**\n * Get the concurrent connection policy\n */\n getConcurrentPolicy(): \"kick-old\" | \"reject-new\" | \"allow-multiple\" {\n return this.config.concurrent;\n }\n\n /**\n * Create a new session\n */\n createSession(props?: Record<string, any>): Session {\n const now = new Date();\n const session: Session = {\n id: this.config.generateId(),\n ttl: this.config.ttl,\n createdAt: now,\n lastConnectedAt: now,\n props,\n };\n this.activeSessions.set(session.id, session);\n return session;\n }\n\n /**\n * Get an active (connected) session by ID\n */\n getActiveSession(id: string): Session | null {\n return this.activeSessions.get(id) ?? null;\n }\n\n /**\n * Get a pending (disconnected) session by ID\n */\n getPendingSession(id: string): PendingSession | null {\n return this.pendingSessions.get(id) ?? null;\n }\n\n /**\n * Check if a session exists (either active or pending)\n */\n hasSession(id: string): boolean {\n return this.activeSessions.has(id) || this.pendingSessions.has(id);\n }\n\n /**\n * Suspend a session when client disconnects\n * Moves from active to pending with a TTL timer\n *\n * @param sessionId - The session to suspend\n * @param savedState - State snapshot to restore on reconnect\n * @param onExpire - Callback when TTL expires\n */\n suspendSession(\n sessionId: string,\n savedState: unknown,\n onExpire: SessionExpireCallback\n ): void {\n const session = this.activeSessions.get(sessionId);\n if (!session) return;\n\n // Remove from active\n this.activeSessions.delete(sessionId);\n\n // Set up expiry timer\n const expiryTimer = setTimeout(async () => {\n const pending = this.pendingSessions.get(sessionId);\n if (pending) {\n this.pendingSessions.delete(sessionId);\n await onExpire(pending.session);\n }\n }, session.ttl * 1000);\n\n // Add to pending\n this.pendingSessions.set(sessionId, {\n session,\n savedState,\n expiryTimer,\n });\n }\n\n /**\n * Resume a pending session when client reconnects\n *\n * @param sessionId - The session to resume\n * @returns Session and saved state, or null if not found/expired\n */\n resumeSession(\n sessionId: string\n ): { session: Session; savedState: unknown } | null {\n const pending = this.pendingSessions.get(sessionId);\n if (!pending) return null;\n\n // Clear expiry timer\n clearTimeout(pending.expiryTimer);\n this.pendingSessions.delete(sessionId);\n\n // Update last connected time\n pending.session.lastConnectedAt = new Date();\n\n // Move back to active\n this.activeSessions.set(sessionId, pending.session);\n\n return {\n session: pending.session,\n savedState: pending.savedState,\n };\n }\n\n /**\n * Destroy a session completely (both active and pending)\n */\n destroySession(sessionId: string): void {\n this.activeSessions.delete(sessionId);\n\n const pending = this.pendingSessions.get(sessionId);\n if (pending) {\n clearTimeout(pending.expiryTimer);\n this.pendingSessions.delete(sessionId);\n }\n\n this.sessionConnections.delete(sessionId);\n }\n\n /**\n * Track a WebSocket connection for a session\n * Used for concurrent connection handling\n */\n trackConnection(sessionId: string, ws: unknown): void {\n let connections = this.sessionConnections.get(sessionId);\n if (!connections) {\n connections = new Set();\n this.sessionConnections.set(sessionId, connections);\n }\n connections.add(ws);\n }\n\n /**\n * Untrack a WebSocket connection\n */\n untrackConnection(sessionId: string, ws: unknown): void {\n const connections = this.sessionConnections.get(sessionId);\n if (connections) {\n connections.delete(ws);\n if (connections.size === 0) {\n this.sessionConnections.delete(sessionId);\n }\n }\n }\n\n /**\n * Get all connections for a session\n */\n getConnections(sessionId: string): Set<unknown> | undefined {\n return this.sessionConnections.get(sessionId);\n }\n\n /**\n * Get connection count for a session\n */\n getConnectionCount(sessionId: string): number {\n return this.sessionConnections.get(sessionId)?.size ?? 0;\n }\n\n /**\n * Get stats about current sessions\n */\n getStats(): {\n activeSessions: number;\n pendingSessions: number;\n totalConnections: number;\n } {\n let totalConnections = 0;\n for (const connections of this.sessionConnections.values()) {\n totalConnections += connections.size;\n }\n\n return {\n activeSessions: this.activeSessions.size,\n pendingSessions: this.pendingSessions.size,\n totalConnections,\n };\n }\n\n /**\n * Clean up all sessions and timers\n * Call this when shutting down the server\n */\n destroy(): void {\n // Clear all pending session timers\n for (const pending of this.pendingSessions.values()) {\n clearTimeout(pending.expiryTimer);\n }\n\n this.activeSessions.clear();\n this.pendingSessions.clear();\n this.sessionConnections.clear();\n }\n}\n"
6
5
  ],
7
- "mappings": "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",
8
- "debugId": "FA5E27F2BDA2311B64756E2164756E21",
6
+ "mappings": "",
7
+ "debugId": "EE5034BABF87202F64756E2164756E21",
9
8
  "names": []
10
9
  }
package/dist/renderer.js CHANGED
@@ -1,276 +1,12 @@
1
- var __defProp = Object.defineProperty;
2
- var __returnValue = (v) => v;
3
- function __exportSetter(name, newValue) {
4
- this[name] = __returnValue.bind(null, newValue);
5
- }
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true,
11
- configurable: true,
12
- set: __exportSetter.bind(all, name)
13
- });
14
- };
15
- var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
16
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
17
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
18
- }) : x)(function(x) {
19
- if (typeof require !== "undefined")
20
- return require.apply(this, arguments);
21
- throw Error('Dynamic require of "' + x + '" is not supported');
22
- });
23
-
24
- // src/logger.ts
25
- var LOG_LEVEL_ORDER = {
26
- debug: 0,
27
- info: 1,
28
- warn: 2,
29
- error: 3,
30
- none: 4
31
- };
32
- var LOG_LEVEL_COLORS = {
33
- debug: "\x1B[36m",
34
- info: "\x1B[32m",
35
- warn: "\x1B[33m",
36
- error: "\x1B[31m"
37
- };
38
- var RESET_COLOR = "\x1B[0m";
39
- function isProduction() {
40
- if (typeof process !== "undefined" && process.env) {
41
- return false;
42
- }
43
- return false;
44
- }
45
- var config = {
46
- level: isProduction() ? "error" : "info",
47
- colors: true,
48
- timestamps: false
49
- };
50
- function setLogLevel(level) {
51
- config.level = level;
52
- }
53
- function getLogLevel() {
54
- return config.level;
55
- }
56
- function configureLogger(options) {
57
- config = { ...config, ...options };
58
- }
59
- function enableLogging() {
60
- config.level = "debug";
61
- }
62
- function disableLogging() {
63
- config.level = "none";
64
- }
65
- function setDebugMode(enabled) {
66
- config.level = enabled ? "debug" : "error";
67
- }
68
- function isDebugMode() {
69
- return config.level === "debug";
70
- }
71
- function shouldLog(level) {
72
- return LOG_LEVEL_ORDER[level] >= LOG_LEVEL_ORDER[config.level];
73
- }
74
- function formatTag(tag, level) {
75
- const timestamp = config.timestamps ? `${new Date().toISOString()} ` : "";
76
- if (config.colors && level !== "none") {
77
- const color = LOG_LEVEL_COLORS[level];
78
- return `${timestamp}${color}[${tag}]${RESET_COLOR}`;
79
- }
80
- return `${timestamp}[${tag}]`;
81
- }
82
-
83
- class Logger {
84
- tag;
85
- constructor(tag) {
86
- this.tag = tag;
87
- }
88
- debug(...args) {
89
- if (!shouldLog("debug"))
90
- return;
91
- if (config.handler) {
92
- config.handler.debug(this.tag, ...args);
93
- } else {
94
- console.log(formatTag(this.tag, "debug"), ...args);
95
- }
96
- }
97
- info(...args) {
98
- if (!shouldLog("info"))
99
- return;
100
- if (config.handler) {
101
- config.handler.info(this.tag, ...args);
102
- } else {
103
- console.info(formatTag(this.tag, "info"), ...args);
104
- }
105
- }
106
- warn(...args) {
107
- if (!shouldLog("warn"))
108
- return;
109
- if (config.handler) {
110
- config.handler.warn(this.tag, ...args);
111
- } else {
112
- console.warn(formatTag(this.tag, "warn"), ...args);
113
- }
114
- }
115
- error(...args) {
116
- if (!shouldLog("error"))
117
- return;
118
- if (config.handler) {
119
- config.handler.error(this.tag, ...args);
120
- } else {
121
- console.error(formatTag(this.tag, "error"), ...args);
122
- }
123
- }
124
- time(label, fn) {
125
- if (!shouldLog("debug")) {
126
- return fn();
127
- }
128
- const start = performance.now();
129
- try {
130
- return fn();
131
- } finally {
132
- const duration = performance.now() - start;
133
- this.debug(`${label}: ${duration.toFixed(2)}ms`);
134
- }
135
- }
136
- async timeAsync(label, fn) {
137
- if (!shouldLog("debug")) {
138
- return fn();
139
- }
140
- const start = performance.now();
141
- try {
142
- return await fn();
143
- } finally {
144
- const duration = performance.now() - start;
145
- this.debug(`${label}: ${duration.toFixed(2)}ms`);
146
- }
147
- }
148
- child(subTag) {
149
- return new Logger(`${this.tag}:${subTag}`);
150
- }
151
- debugIf(condition, ...args) {
152
- if (condition)
153
- this.debug(...args);
154
- }
155
- warnIf(condition, ...args) {
156
- if (condition)
157
- this.warn(...args);
158
- }
159
- errorIf(condition, ...args) {
160
- if (condition)
161
- this.error(...args);
162
- }
163
- loggedOnce = new Set;
164
- warnOnce(key, ...args) {
165
- if (this.loggedOnce.has(key))
166
- return;
167
- this.loggedOnce.add(key);
168
- this.warn(...args);
169
- }
170
- debugOnce(key, ...args) {
171
- if (this.loggedOnce.has(key))
172
- return;
173
- this.loggedOnce.add(key);
174
- this.debug(...args);
175
- }
176
- }
177
- function createLogger(tag) {
178
- return new Logger(tag);
179
- }
180
- var logger = createLogger("Hypen");
181
- var log = {
182
- debug: (tag, ...args) => {
183
- if (!shouldLog("debug"))
184
- return;
185
- console.log(formatTag(tag, "debug"), ...args);
186
- },
187
- info: (tag, ...args) => {
188
- if (!shouldLog("info"))
189
- return;
190
- console.info(formatTag(tag, "info"), ...args);
191
- },
192
- warn: (tag, ...args) => {
193
- if (!shouldLog("warn"))
194
- return;
195
- console.warn(formatTag(tag, "warn"), ...args);
196
- },
197
- error: (tag, ...args) => {
198
- if (!shouldLog("error"))
199
- return;
200
- console.error(formatTag(tag, "error"), ...args);
201
- }
202
- };
203
- var frameworkLoggers = {
204
- hypen: createLogger("Hypen"),
205
- engine: createLogger("Engine"),
206
- router: createLogger("Router"),
207
- state: createLogger("State"),
208
- events: createLogger("Events"),
209
- remote: createLogger("Remote"),
210
- renderer: createLogger("Renderer"),
211
- module: createLogger("Module"),
212
- lifecycle: createLogger("Lifecycle"),
213
- loader: createLogger("Loader"),
214
- context: createLogger("Context"),
215
- discovery: createLogger("Discovery"),
216
- plugin: createLogger("Plugin"),
217
- canvas: createLogger("Canvas"),
218
- debug: createLogger("Debug")
219
- };
220
-
221
- // src/renderer.ts
222
- var log2 = frameworkLoggers.renderer;
223
-
224
- class BaseRenderer {
225
- nodes = new Map;
226
- getNode(id) {
227
- return this.nodes.get(id);
228
- }
229
- clear() {
230
- this.nodes.clear();
231
- }
232
- applyPatch(patch) {
233
- switch (patch.type) {
234
- case "create":
235
- this.onCreate(patch.id, patch.elementType, patch.props || {});
236
- break;
237
- case "setProp":
238
- this.onSetProp(patch.id, patch.name, patch.value);
239
- break;
240
- case "setText":
241
- this.onSetText(patch.id, patch.text);
242
- break;
243
- case "insert":
244
- this.onInsert(patch.parentId, patch.id, patch.beforeId);
245
- break;
246
- case "move":
247
- this.onMove(patch.parentId, patch.id, patch.beforeId);
248
- break;
249
- case "remove":
250
- this.onRemove(patch.id);
251
- break;
252
- case "attachEvent":
253
- this.onAttachEvent(patch.id, patch.eventName);
254
- break;
255
- case "detachEvent":
256
- this.onDetachEvent(patch.id, patch.eventName);
257
- break;
258
- }
259
- }
260
- }
261
-
262
- class ConsoleRenderer {
263
- applyPatches(patches) {
264
- console.group("Hypen Patches");
265
- for (const patch of patches) {
266
- console.log(patch);
267
- }
268
- console.groupEnd();
269
- }
270
- }
1
+ import {
2
+ BaseRenderer,
3
+ ConsoleRenderer
4
+ } from "./chunk-00zt3w6e.js";
5
+ import"./chunk-avchpwhf.js";
6
+ import"./chunk-5gtx3pza.js";
271
7
  export {
272
8
  ConsoleRenderer,
273
9
  BaseRenderer
274
10
  };
275
11
 
276
- //# debugId=EC4348E5A97EE71564756E2164756E21
12
+ //# debugId=1A10DA6592B9FEDE64756E2164756E21
@@ -1,11 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/logger.ts", "../src/renderer.ts"],
3
+ "sources": [],
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\" : \"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
- "/**\n * Renderer abstraction interface\n *\n * Renderers are pluggable and can be implemented for different platforms\n * (DOM, Canvas, Native, etc.)\n */\n\nimport type { Patch } from \"./types.js\";\nimport { frameworkLoggers } from \"./logger.js\";\n\nconst log = frameworkLoggers.renderer;\n\n/**\n * Renderer interface that all platform renderers must implement\n */\nexport interface Renderer {\n /**\n * Apply a batch of patches to the render tree\n */\n applyPatches(patches: Patch[]): void;\n\n /**\n * Get a node by its ID (optional, for debugging)\n */\n getNode?(id: string): any;\n\n /**\n * Clear the entire render tree\n */\n clear?(): void;\n}\n\n/**\n * Base renderer class with common utilities\n */\nexport abstract class BaseRenderer implements Renderer {\n protected nodes: Map<string, any> = new Map();\n\n abstract applyPatches(patches: Patch[]): void;\n\n getNode(id: string): any {\n return this.nodes.get(id);\n }\n\n clear(): void {\n this.nodes.clear();\n }\n\n /**\n * Apply a single patch\n */\n protected applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, patch.elementType!, patch.props || {});\n break;\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n case \"insert\":\n this.onInsert(patch.parentId!, patch.id!, patch.beforeId);\n break;\n case \"move\":\n this.onMove(patch.parentId!, patch.id!, patch.beforeId);\n break;\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n case \"attachEvent\":\n this.onAttachEvent(patch.id!, patch.eventName!);\n break;\n case \"detachEvent\":\n this.onDetachEvent(patch.id!, patch.eventName!);\n break;\n }\n }\n\n /**\n * Platform-specific patch handlers\n */\n protected abstract onCreate(id: string, elementType: string, props: Record<string, any>): void;\n protected abstract onSetProp(id: string, name: string, value: any): void;\n protected abstract onSetText(id: string, text: string): void;\n protected abstract onInsert(parentId: string, id: string, beforeId?: string): void;\n protected abstract onMove(parentId: string, id: string, beforeId?: string): void;\n protected abstract onRemove(id: string): void;\n protected abstract onAttachEvent(id: string, eventName: string): void;\n protected abstract onDetachEvent(id: string, eventName: string): void;\n}\n\n/**\n * Console/Debug renderer that logs patches\n */\nexport class ConsoleRenderer implements Renderer {\n applyPatches(patches: Patch[]): void {\n console.group(\"Hypen Patches\");\n for (const patch of patches) {\n console.log(patch);\n }\n console.groupEnd();\n }\n}\n"
7
5
  ],
8
- "mappings": "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",
9
- "debugId": "EC4348E5A97EE71564756E2164756E21",
6
+ "mappings": "",
7
+ "debugId": "1A10DA6592B9FEDE64756E2164756E21",
10
8
  "names": []
11
9
  }