@hypen-space/core 0.4.37 → 0.4.39

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 (85) hide show
  1. package/README.md +13 -14
  2. package/dist/app.js +304 -227
  3. package/dist/app.js.map +5 -5
  4. package/dist/components/builtin.d.ts +17 -0
  5. package/dist/components/builtin.js +336 -256
  6. package/dist/components/builtin.js.map +6 -6
  7. package/dist/context.d.ts +11 -20
  8. package/dist/context.js +69 -101
  9. package/dist/context.js.map +3 -3
  10. package/dist/datasource.js +80 -0
  11. package/dist/datasource.js.map +10 -0
  12. package/dist/disposable.js +60 -63
  13. package/dist/disposable.js.map +2 -2
  14. package/dist/events.js +60 -63
  15. package/dist/events.js.map +2 -2
  16. package/dist/hypen.js +78 -0
  17. package/dist/hypen.js.map +10 -0
  18. package/dist/index.browser.d.ts +2 -1
  19. package/dist/index.browser.js +327 -281
  20. package/dist/index.browser.js.map +7 -8
  21. package/dist/index.d.ts +0 -3
  22. package/dist/index.js +547 -246
  23. package/dist/index.js.map +9 -9
  24. package/dist/logger.js +60 -64
  25. package/dist/logger.js.map +2 -2
  26. package/dist/remote/client.js +258 -158
  27. package/dist/remote/client.js.map +6 -6
  28. package/dist/remote/index.d.ts +6 -5
  29. package/dist/remote/index.js +255 -1985
  30. package/dist/remote/index.js.map +6 -13
  31. package/dist/remote/session.js +151 -0
  32. package/dist/remote/session.js.map +10 -0
  33. package/dist/renderer.js +60 -63
  34. package/dist/renderer.js.map +2 -2
  35. package/dist/result.js +235 -0
  36. package/dist/result.js.map +10 -0
  37. package/dist/retry.js +344 -0
  38. package/dist/retry.js.map +11 -0
  39. package/dist/router.js +62 -70
  40. package/dist/router.js.map +2 -2
  41. package/dist/state.js +3 -8
  42. package/dist/state.js.map +2 -2
  43. package/package.json +11 -56
  44. package/src/components/builtin.ts +78 -56
  45. package/src/context.ts +22 -65
  46. package/src/index.browser.ts +5 -4
  47. package/src/index.ts +10 -23
  48. package/src/remote/index.ts +9 -5
  49. package/src/result.ts +11 -0
  50. package/dist/discovery.d.ts +0 -90
  51. package/dist/discovery.js +0 -1334
  52. package/dist/discovery.js.map +0 -15
  53. package/dist/engine.browser.d.ts +0 -116
  54. package/dist/engine.browser.js +0 -479
  55. package/dist/engine.browser.js.map +0 -12
  56. package/dist/engine.d.ts +0 -107
  57. package/dist/engine.js +0 -543
  58. package/dist/engine.js.map +0 -12
  59. package/dist/loader.d.ts +0 -51
  60. package/dist/loader.js +0 -292
  61. package/dist/loader.js.map +0 -11
  62. package/dist/plugin.d.ts +0 -39
  63. package/dist/plugin.js +0 -685
  64. package/dist/plugin.js.map +0 -12
  65. package/dist/remote/server.d.ts +0 -188
  66. package/dist/remote/server.js +0 -2270
  67. package/dist/remote/server.js.map +0 -19
  68. package/src/discovery.ts +0 -527
  69. package/src/engine.browser.ts +0 -302
  70. package/src/engine.ts +0 -282
  71. package/src/loader.ts +0 -136
  72. package/src/plugin.ts +0 -220
  73. package/src/remote/server.ts +0 -879
  74. package/wasm-browser/README.md +0 -594
  75. package/wasm-browser/hypen_engine.d.ts +0 -389
  76. package/wasm-browser/hypen_engine.js +0 -1070
  77. package/wasm-browser/hypen_engine_bg.wasm +0 -0
  78. package/wasm-browser/hypen_engine_bg.wasm.d.ts +0 -37
  79. package/wasm-browser/package.json +0 -24
  80. package/wasm-node/README.md +0 -594
  81. package/wasm-node/hypen_engine.d.ts +0 -327
  82. package/wasm-node/hypen_engine.js +0 -979
  83. package/wasm-node/hypen_engine_bg.wasm +0 -0
  84. package/wasm-node/hypen_engine_bg.wasm.d.ts +0 -37
  85. package/wasm-node/package.json +0 -22
package/README.md CHANGED
@@ -77,7 +77,8 @@ Your renderer applies these patches to the actual platform.
77
77
  ## Quick Start
78
78
 
79
79
  ```typescript
80
- import { Engine, app } from "@hypen-space/core";
80
+ import { app } from "@hypen-space/core";
81
+ import { Engine } from "@hypen-space/web-engine";
81
82
 
82
83
  // 1. Define your module's state and actions
83
84
  const counter = app
@@ -244,7 +245,7 @@ Link(to: "/products/42") { Text("View Product") }
244
245
  For larger apps, organize components as files and auto-discover them:
245
246
 
246
247
  ```typescript
247
- import { discoverComponents, loadDiscoveredComponents } from "@hypen-space/core";
248
+ import { discoverComponents, loadDiscoveredComponents } from "@hypen-space/server";
248
249
 
249
250
  const components = await discoverComponents("./src/components");
250
251
  const loaded = await loadDiscoveredComponents(components);
@@ -268,7 +269,7 @@ Counter/
268
269
  Watch for changes (hot reload):
269
270
 
270
271
  ```typescript
271
- import { watchComponents } from "@hypen-space/core";
272
+ import { watchComponents } from "@hypen-space/server";
272
273
 
273
274
  const watcher = watchComponents("./src/components", {
274
275
  onUpdate: (c) => console.log("Updated:", c.name),
@@ -280,7 +281,7 @@ const watcher = watchComponents("./src/components", {
280
281
  Register components programmatically:
281
282
 
282
283
  ```typescript
283
- import { componentLoader, ComponentLoader } from "@hypen-space/core";
284
+ import { componentLoader, ComponentLoader } from "@hypen-space/server";
284
285
 
285
286
  // Global loader
286
287
  componentLoader.register("Counter", counterModule, counterTemplate);
@@ -336,13 +337,13 @@ context.emit("userLoggedIn", { id: "1", name: "Ian" });
336
337
 
337
338
  ```typescript
338
339
  // Node.js / Bundler - WASM loads automatically
339
- import { Engine } from "@hypen-space/core";
340
+ import { Engine } from "@hypen-space/server";
340
341
  const engine = new Engine();
341
342
  await engine.init();
342
343
 
343
344
  // Browser - specify WASM path
344
- import { BrowserEngine } from "@hypen-space/core";
345
- const engine = new BrowserEngine();
345
+ import { Engine } from "@hypen-space/web-engine";
346
+ const engine = new Engine();
346
347
  await engine.init({ wasmPath: "/hypen_engine_bg.wasm" });
347
348
  ```
348
349
 
@@ -515,24 +516,22 @@ events.emit("userLogin", { userId: "123" });
515
516
 
516
517
  | Export | Description |
517
518
  |--------|-------------|
518
- | `@hypen-space/core` | Main entry point |
519
- | `@hypen-space/core/engine` | Low-level WASM engine |
520
- | `@hypen-space/core/engine/browser` | Browser-optimized engine |
519
+ | `@hypen-space/core` | Main entry point (app, state, router, types) |
521
520
  | `@hypen-space/core/app` | Module builder |
522
521
  | `@hypen-space/core/state` | Observable state utilities |
523
522
  | `@hypen-space/core/renderer` | Abstract renderer |
524
523
  | `@hypen-space/core/router` | Routing system |
525
524
  | `@hypen-space/core/context` | Global context |
526
- | `@hypen-space/core/remote` | Remote UI protocol |
527
- | `@hypen-space/core/loader` | Component loader |
528
- | `@hypen-space/core/discovery` | Component discovery |
525
+ | `@hypen-space/core/remote/client` | Remote UI client (RemoteEngine) |
529
526
  | `@hypen-space/core/components` | Built-in Router, Route, Link |
530
527
  | `@hypen-space/core/result` | Result type for error handling |
531
528
  | `@hypen-space/core/disposable` | Disposable pattern utilities |
532
529
  | `@hypen-space/core/retry` | Retry with backoff |
533
530
  | `@hypen-space/core/logger` | Structured logging |
534
531
  | `@hypen-space/core/events` | Typed event emitter |
535
- | `@hypen-space/core/hypen` | Template helpers (hypen, state, item, index) |
532
+ | `@hypen-space/server` | Node.js WASM engine, loader, discovery, RemoteServer |
533
+ | `@hypen-space/web-engine` | Browser WASM engine, Hypen orchestrator |
534
+ | `@hypen-space/web` | DOM & Canvas renderers |
536
535
 
537
536
  ## Requirements
538
537
 
package/dist/app.js CHANGED
@@ -21,7 +21,250 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
21
21
  throw Error('Dynamic require of "' + x + '" is not supported');
22
22
  });
23
23
 
24
+ // src/result.ts
25
+ function Ok(value) {
26
+ return { ok: true, value };
27
+ }
28
+ function Err(error) {
29
+ return { ok: false, error };
30
+ }
31
+ function isOk(result) {
32
+ return result.ok;
33
+ }
34
+ function isErr(result) {
35
+ return !result.ok;
36
+ }
37
+ async function fromPromise(promise, mapError) {
38
+ try {
39
+ const value = await promise;
40
+ return Ok(value);
41
+ } catch (e) {
42
+ if (mapError) {
43
+ return Err(mapError(e));
44
+ }
45
+ return Err(e);
46
+ }
47
+ }
48
+ function fromTry(fn, mapError) {
49
+ try {
50
+ return Ok(fn());
51
+ } catch (e) {
52
+ if (mapError) {
53
+ return Err(mapError(e));
54
+ }
55
+ return Err(e);
56
+ }
57
+ }
58
+ function map(result, fn) {
59
+ if (result.ok) {
60
+ return Ok(fn(result.value));
61
+ }
62
+ return result;
63
+ }
64
+ function mapErr(result, fn) {
65
+ if (!result.ok) {
66
+ return Err(fn(result.error));
67
+ }
68
+ return result;
69
+ }
70
+ function flatMap(result, fn) {
71
+ if (result.ok) {
72
+ return fn(result.value);
73
+ }
74
+ return result;
75
+ }
76
+ function unwrap(result) {
77
+ if (result.ok) {
78
+ return result.value;
79
+ }
80
+ throw result.error;
81
+ }
82
+ function unwrapOr(result, defaultValue) {
83
+ if (result.ok) {
84
+ return result.value;
85
+ }
86
+ return defaultValue;
87
+ }
88
+ function unwrapOrElse(result, fn) {
89
+ if (result.ok) {
90
+ return result.value;
91
+ }
92
+ return fn(result.error);
93
+ }
94
+ function match(result, handlers) {
95
+ if (result.ok) {
96
+ return handlers.ok(result.value);
97
+ }
98
+ return handlers.err(result.error);
99
+ }
100
+ function all(results) {
101
+ const values = [];
102
+ for (const result of results) {
103
+ if (!result.ok) {
104
+ return result;
105
+ }
106
+ values.push(result.value);
107
+ }
108
+ return Ok(values);
109
+ }
110
+
111
+ class HypenError extends Error {
112
+ code;
113
+ context;
114
+ cause;
115
+ constructor(code, message, options) {
116
+ super(message);
117
+ this.name = "HypenError";
118
+ this.code = code;
119
+ this.context = options?.context;
120
+ this.cause = options?.cause;
121
+ Object.setPrototypeOf(this, new.target.prototype);
122
+ }
123
+ }
124
+
125
+ class ActionError extends HypenError {
126
+ actionName;
127
+ constructor(actionName, cause) {
128
+ super("ACTION_ERROR", `Action handler "${actionName}" failed: ${cause instanceof Error ? cause.message : String(cause)}`, {
129
+ context: { actionName },
130
+ cause: cause instanceof Error ? cause : undefined
131
+ });
132
+ this.name = "ActionError";
133
+ this.actionName = actionName;
134
+ }
135
+ }
136
+
137
+ class ConnectionError extends HypenError {
138
+ url;
139
+ attempt;
140
+ constructor(url, cause, attempt) {
141
+ super("CONNECTION_ERROR", `Connection to "${url}" failed${attempt ? ` (attempt ${attempt})` : ""}: ${cause instanceof Error ? cause.message : String(cause)}`, {
142
+ context: { url, attempt },
143
+ cause: cause instanceof Error ? cause : undefined
144
+ });
145
+ this.name = "ConnectionError";
146
+ this.url = url;
147
+ this.attempt = attempt;
148
+ }
149
+ }
150
+
151
+ class StateError extends HypenError {
152
+ path;
153
+ constructor(message, path, cause) {
154
+ super("STATE_ERROR", message, {
155
+ context: { path },
156
+ cause: cause instanceof Error ? cause : undefined
157
+ });
158
+ this.name = "StateError";
159
+ this.path = path;
160
+ }
161
+ }
162
+
163
+ class ParseError extends HypenError {
164
+ source;
165
+ constructor(message, source, cause) {
166
+ super("PARSE_ERROR", message, {
167
+ context: { source },
168
+ cause: cause instanceof Error ? cause : undefined
169
+ });
170
+ this.name = "ParseError";
171
+ this.source = source;
172
+ }
173
+ }
174
+
175
+ class RenderError extends HypenError {
176
+ constructor(message, cause) {
177
+ super("RENDER_ERROR", message, {
178
+ cause: cause instanceof Error ? cause : undefined
179
+ });
180
+ this.name = "RenderError";
181
+ }
182
+ }
183
+ function classifyEngineError(err) {
184
+ if (err && typeof err === "object" && "message" in err && "type" in err) {
185
+ const structured = err;
186
+ switch (structured.type) {
187
+ case "parseError":
188
+ return new ParseError(structured.message);
189
+ case "stateError":
190
+ return new StateError(structured.message);
191
+ case "renderError":
192
+ return new RenderError(structured.message);
193
+ case "actionError":
194
+ return new HypenError("ACTION_ERROR", structured.message);
195
+ default:
196
+ return new HypenError("UNKNOWN_ERROR", structured.message);
197
+ }
198
+ }
199
+ const message = err instanceof Error ? err.message : String(err);
200
+ if (message.startsWith("Parse error:")) {
201
+ return new ParseError(message);
202
+ }
203
+ if (message.startsWith("Invalid state:") || message.startsWith("Invalid state patch:")) {
204
+ return new StateError(message);
205
+ }
206
+ if (message.startsWith("Parent node not found:")) {
207
+ return new RenderError(message);
208
+ }
209
+ return new RenderError(message);
210
+ }
211
+
212
+ // src/datasource.ts
213
+ class DataSourceManager {
214
+ plugins = new Map;
215
+ configs = new Map;
216
+ state = new Map;
217
+ engine;
218
+ constructor(engine) {
219
+ this.engine = engine;
220
+ }
221
+ async use(plugin, config) {
222
+ const { name } = plugin;
223
+ this.state.set(name, {});
224
+ this.plugins.set(name, plugin);
225
+ this.configs.set(name, config);
226
+ await plugin.connect(config, (change) => {
227
+ const current = this.state.get(name) ?? {};
228
+ for (const path of change.paths) {
229
+ if (path in change.values) {
230
+ current[path] = change.values[path];
231
+ }
232
+ }
233
+ this.state.set(name, current);
234
+ this.engine.setContext(name, current);
235
+ });
236
+ }
237
+ get(name) {
238
+ return this.plugins.get(name);
239
+ }
240
+ has(name) {
241
+ return this.plugins.has(name);
242
+ }
243
+ getNames() {
244
+ return Array.from(this.plugins.keys());
245
+ }
246
+ getStatus(name) {
247
+ return this.plugins.get(name)?.status;
248
+ }
249
+ async remove(name) {
250
+ const plugin = this.plugins.get(name);
251
+ if (plugin) {
252
+ await plugin.disconnect();
253
+ this.plugins.delete(name);
254
+ this.configs.delete(name);
255
+ this.state.delete(name);
256
+ this.engine.removeContext(name);
257
+ }
258
+ }
259
+ async disconnectAll() {
260
+ const names = Array.from(this.plugins.keys());
261
+ await Promise.all(names.map((name) => this.remove(name)));
262
+ }
263
+ }
264
+
24
265
  // src/state.ts
266
+ var IS_PROXY = Symbol.for("hypen.isProxy");
267
+ var RAW_TARGET = Symbol.for("hypen.rawTarget");
25
268
  function deepClone(obj) {
26
269
  if (obj === null || typeof obj !== "object") {
27
270
  return obj;
@@ -266,19 +509,33 @@ function unwrapProxy(value) {
266
509
  }
267
510
  return value;
268
511
  }
269
- var IS_PROXY, RAW_TARGET;
270
- var init_state = __esm(() => {
271
- IS_PROXY = Symbol.for("hypen.isProxy");
272
- RAW_TARGET = Symbol.for("hypen.rawTarget");
273
- });
274
512
 
275
513
  // src/logger.ts
514
+ var LOG_LEVEL_ORDER = {
515
+ debug: 0,
516
+ info: 1,
517
+ warn: 2,
518
+ error: 3,
519
+ none: 4
520
+ };
521
+ var LOG_LEVEL_COLORS = {
522
+ debug: "\x1B[36m",
523
+ info: "\x1B[32m",
524
+ warn: "\x1B[33m",
525
+ error: "\x1B[31m"
526
+ };
527
+ var RESET_COLOR = "\x1B[0m";
276
528
  function isProduction() {
277
529
  if (typeof process !== "undefined" && process.env) {
278
530
  return false;
279
531
  }
280
532
  return false;
281
533
  }
534
+ var config = {
535
+ level: isProduction() ? "error" : "info",
536
+ colors: true,
537
+ timestamps: false
538
+ };
282
539
  function setLogLevel(level) {
283
540
  config.level = level;
284
541
  }
@@ -409,220 +666,49 @@ class Logger {
409
666
  function createLogger(tag) {
410
667
  return new Logger(tag);
411
668
  }
412
- var LOG_LEVEL_ORDER, LOG_LEVEL_COLORS, RESET_COLOR = "\x1B[0m", config, logger, log, frameworkLoggers;
413
- var init_logger = __esm(() => {
414
- LOG_LEVEL_ORDER = {
415
- debug: 0,
416
- info: 1,
417
- warn: 2,
418
- error: 3,
419
- none: 4
420
- };
421
- LOG_LEVEL_COLORS = {
422
- debug: "\x1B[36m",
423
- info: "\x1B[32m",
424
- warn: "\x1B[33m",
425
- error: "\x1B[31m"
426
- };
427
- config = {
428
- level: isProduction() ? "error" : "info",
429
- colors: true,
430
- timestamps: false
431
- };
432
- logger = createLogger("Hypen");
433
- log = {
434
- debug: (tag, ...args) => {
435
- if (!shouldLog("debug"))
436
- return;
437
- console.log(formatTag(tag, "debug"), ...args);
438
- },
439
- info: (tag, ...args) => {
440
- if (!shouldLog("info"))
441
- return;
442
- console.info(formatTag(tag, "info"), ...args);
443
- },
444
- warn: (tag, ...args) => {
445
- if (!shouldLog("warn"))
446
- return;
447
- console.warn(formatTag(tag, "warn"), ...args);
448
- },
449
- error: (tag, ...args) => {
450
- if (!shouldLog("error"))
451
- return;
452
- console.error(formatTag(tag, "error"), ...args);
453
- }
454
- };
455
- frameworkLoggers = {
456
- hypen: createLogger("Hypen"),
457
- engine: createLogger("Engine"),
458
- router: createLogger("Router"),
459
- state: createLogger("State"),
460
- events: createLogger("Events"),
461
- remote: createLogger("Remote"),
462
- renderer: createLogger("Renderer"),
463
- module: createLogger("Module"),
464
- lifecycle: createLogger("Lifecycle"),
465
- loader: createLogger("Loader"),
466
- context: createLogger("Context"),
467
- discovery: createLogger("Discovery"),
468
- plugin: createLogger("Plugin"),
469
- canvas: createLogger("Canvas"),
470
- debug: createLogger("Debug")
471
- };
472
- });
473
-
474
- // src/result.ts
475
- function Ok(value) {
476
- return { ok: true, value };
477
- }
478
- function Err(error) {
479
- return { ok: false, error };
480
- }
481
- function classifyEngineError(err) {
482
- const message = err instanceof Error ? err.message : String(err);
483
- if (message.startsWith("Parse error:")) {
484
- return new ParseError(message);
485
- }
486
- if (message.startsWith("Invalid state:") || message.startsWith("Invalid state patch:")) {
487
- return new StateError(message);
488
- }
489
- if (message.startsWith("Parent node not found:")) {
490
- return new RenderError(message);
491
- }
492
- return new RenderError(message);
493
- }
494
- var HypenError, ActionError, ConnectionError, StateError, ParseError, RenderError;
495
- var init_result = __esm(() => {
496
- HypenError = class HypenError extends Error {
497
- code;
498
- context;
499
- cause;
500
- constructor(code, message, options) {
501
- super(message);
502
- this.name = "HypenError";
503
- this.code = code;
504
- this.context = options?.context;
505
- this.cause = options?.cause;
506
- Object.setPrototypeOf(this, new.target.prototype);
507
- }
508
- };
509
- ActionError = class ActionError extends HypenError {
510
- actionName;
511
- constructor(actionName, cause) {
512
- super("ACTION_ERROR", `Action handler "${actionName}" failed: ${cause instanceof Error ? cause.message : String(cause)}`, {
513
- context: { actionName },
514
- cause: cause instanceof Error ? cause : undefined
515
- });
516
- this.name = "ActionError";
517
- this.actionName = actionName;
518
- }
519
- };
520
- ConnectionError = class ConnectionError extends HypenError {
521
- url;
522
- attempt;
523
- constructor(url, cause, attempt) {
524
- super("CONNECTION_ERROR", `Connection to "${url}" failed${attempt ? ` (attempt ${attempt})` : ""}: ${cause instanceof Error ? cause.message : String(cause)}`, {
525
- context: { url, attempt },
526
- cause: cause instanceof Error ? cause : undefined
527
- });
528
- this.name = "ConnectionError";
529
- this.url = url;
530
- this.attempt = attempt;
531
- }
532
- };
533
- StateError = class StateError extends HypenError {
534
- path;
535
- constructor(message, path, cause) {
536
- super("STATE_ERROR", message, {
537
- context: { path },
538
- cause: cause instanceof Error ? cause : undefined
539
- });
540
- this.name = "StateError";
541
- this.path = path;
542
- }
543
- };
544
- ParseError = class ParseError extends HypenError {
545
- source;
546
- constructor(message, source, cause) {
547
- super("PARSE_ERROR", message, {
548
- context: { source },
549
- cause: cause instanceof Error ? cause : undefined
550
- });
551
- this.name = "ParseError";
552
- this.source = source;
553
- }
554
- };
555
- RenderError = class RenderError extends HypenError {
556
- constructor(message, cause) {
557
- super("RENDER_ERROR", message, {
558
- cause: cause instanceof Error ? cause : undefined
559
- });
560
- this.name = "RenderError";
561
- }
562
- };
563
- });
564
-
565
- // src/datasource.ts
566
- class DataSourceManager {
567
- plugins = new Map;
568
- configs = new Map;
569
- state = new Map;
570
- engine;
571
- constructor(engine) {
572
- this.engine = engine;
573
- }
574
- async use(plugin, config2) {
575
- const { name } = plugin;
576
- this.state.set(name, {});
577
- this.plugins.set(name, plugin);
578
- this.configs.set(name, config2);
579
- await plugin.connect(config2, (change) => {
580
- const current = this.state.get(name) ?? {};
581
- for (const path of change.paths) {
582
- if (path in change.values) {
583
- current[path] = change.values[path];
584
- }
585
- }
586
- this.state.set(name, current);
587
- this.engine.setContext(name, current);
588
- });
589
- }
590
- get(name) {
591
- return this.plugins.get(name);
592
- }
593
- has(name) {
594
- return this.plugins.has(name);
595
- }
596
- getNames() {
597
- return Array.from(this.plugins.keys());
598
- }
599
- getStatus(name) {
600
- return this.plugins.get(name)?.status;
601
- }
602
- async remove(name) {
603
- const plugin = this.plugins.get(name);
604
- if (plugin) {
605
- await plugin.disconnect();
606
- this.plugins.delete(name);
607
- this.configs.delete(name);
608
- this.state.delete(name);
609
- this.engine.removeContext(name);
610
- }
611
- }
612
- async disconnectAll() {
613
- const names = Array.from(this.plugins.keys());
614
- await Promise.all(names.map((name) => this.remove(name)));
669
+ var logger = createLogger("Hypen");
670
+ var log = {
671
+ debug: (tag, ...args) => {
672
+ if (!shouldLog("debug"))
673
+ return;
674
+ console.log(formatTag(tag, "debug"), ...args);
675
+ },
676
+ info: (tag, ...args) => {
677
+ if (!shouldLog("info"))
678
+ return;
679
+ console.info(formatTag(tag, "info"), ...args);
680
+ },
681
+ warn: (tag, ...args) => {
682
+ if (!shouldLog("warn"))
683
+ return;
684
+ console.warn(formatTag(tag, "warn"), ...args);
685
+ },
686
+ error: (tag, ...args) => {
687
+ if (!shouldLog("error"))
688
+ return;
689
+ console.error(formatTag(tag, "error"), ...args);
615
690
  }
616
- }
691
+ };
692
+ var frameworkLoggers = {
693
+ hypen: createLogger("Hypen"),
694
+ engine: createLogger("Engine"),
695
+ router: createLogger("Router"),
696
+ state: createLogger("State"),
697
+ events: createLogger("Events"),
698
+ remote: createLogger("Remote"),
699
+ renderer: createLogger("Renderer"),
700
+ module: createLogger("Module"),
701
+ lifecycle: createLogger("Lifecycle"),
702
+ loader: createLogger("Loader"),
703
+ context: createLogger("Context"),
704
+ discovery: createLogger("Discovery"),
705
+ plugin: createLogger("Plugin"),
706
+ canvas: createLogger("Canvas"),
707
+ debug: createLogger("Debug")
708
+ };
617
709
 
618
710
  // src/app.ts
619
- var exports_app = {};
620
- __export(exports_app, {
621
- app: () => app,
622
- HypenModuleInstance: () => HypenModuleInstance,
623
- HypenAppBuilder: () => HypenAppBuilder,
624
- HypenApp: () => HypenApp
625
- });
711
+ var log2 = createLogger("ModuleInstance");
626
712
 
627
713
  class HypenAppBuilder {
628
714
  initialState;
@@ -746,6 +832,7 @@ class HypenApp {
746
832
  this._registry.clear();
747
833
  }
748
834
  }
835
+ var app = new HypenApp;
749
836
 
750
837
  class HypenModuleInstance {
751
838
  engine;
@@ -949,16 +1036,6 @@ class HypenModuleInstance {
949
1036
  Object.assign(this.state, patch);
950
1037
  }
951
1038
  }
952
- var log2, app;
953
- var init_app = __esm(() => {
954
- init_result();
955
- init_state();
956
- init_logger();
957
- log2 = createLogger("ModuleInstance");
958
- app = new HypenApp;
959
- });
960
- init_app();
961
-
962
1039
  export {
963
1040
  app,
964
1041
  HypenModuleInstance,
@@ -966,4 +1043,4 @@ export {
966
1043
  HypenApp
967
1044
  };
968
1045
 
969
- //# debugId=DF0AC5B74AEC489464756E2164756E21
1046
+ //# debugId=3EB5E17282D6146B64756E2164756E21