@hypen-space/core 0.4.5 → 0.4.11

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 (50) hide show
  1. package/dist/app.js +171 -171
  2. package/dist/app.js.map +4 -4
  3. package/dist/components/builtin.js +171 -171
  4. package/dist/components/builtin.js.map +4 -4
  5. package/dist/context.js +1 -1
  6. package/dist/context.js.map +1 -1
  7. package/dist/discovery.js +171 -171
  8. package/dist/discovery.js.map +4 -4
  9. package/dist/disposable.js +1 -1
  10. package/dist/disposable.js.map +1 -1
  11. package/dist/engine.browser.js +1 -1
  12. package/dist/engine.browser.js.map +1 -1
  13. package/dist/engine.js +1 -1
  14. package/dist/engine.js.map +1 -1
  15. package/dist/events.js +1 -1
  16. package/dist/events.js.map +1 -1
  17. package/dist/index.browser.js +171 -171
  18. package/dist/index.browser.js.map +4 -4
  19. package/dist/index.js +171 -171
  20. package/dist/index.js.map +4 -4
  21. package/dist/loader.js +1 -1
  22. package/dist/loader.js.map +1 -1
  23. package/dist/logger.js +245 -0
  24. package/dist/logger.js.map +10 -0
  25. package/dist/plugin.js +1 -1
  26. package/dist/plugin.js.map +1 -1
  27. package/dist/remote/client.js +1 -1
  28. package/dist/remote/client.js.map +1 -1
  29. package/dist/remote/index.js +171 -171
  30. package/dist/remote/index.js.map +4 -4
  31. package/dist/remote/server.js +171 -171
  32. package/dist/remote/server.js.map +4 -4
  33. package/dist/renderer.js +1 -1
  34. package/dist/renderer.js.map +1 -1
  35. package/dist/router.js +1 -1
  36. package/dist/router.js.map +1 -1
  37. package/dist/types.d.ts +1 -1
  38. package/dist/types.js +2 -0
  39. package/dist/types.js.map +9 -0
  40. package/package.json +1 -1
  41. package/src/types.ts +1 -1
  42. package/wasm-browser/hypen_engine.d.ts +3 -3
  43. package/wasm-browser/hypen_engine.js +73 -66
  44. package/wasm-browser/hypen_engine_bg.wasm +0 -0
  45. package/wasm-browser/hypen_engine_bg.wasm.d.ts +3 -3
  46. package/wasm-browser/package.json +1 -1
  47. package/wasm-node/hypen_engine.js +74 -66
  48. package/wasm-node/hypen_engine_bg.wasm +0 -0
  49. package/wasm-node/hypen_engine_bg.wasm.d.ts +3 -3
  50. package/wasm-node/package.json +1 -1
@@ -7,6 +7,6 @@
7
7
  "/**\n * Global Context - Cross-module communication and state access\n */\n\nimport type { HypenModuleInstance } from \"./app.js\";\nimport { getStateSnapshot } from \"./state.js\";\nimport { TypedEventEmitter, type HypenFrameworkEvents } from \"./events.js\";\nimport { frameworkLoggers } from \"./logger.js\";\n\nconst log = frameworkLoggers.context;\n\nexport type ModuleReference<T = unknown> = {\n state: T; // Live proxy state\n setState: (patch: Partial<T>) => void;\n getState: () => T; // Snapshot\n};\n\n/**\n * @deprecated Use TypedEventEmitter from events.ts for type-safe events\n */\nexport type EventHandler = (payload?: unknown) => void;\n\n/**\n * Global Context - Provides access to all modules and cross-module communication\n *\n * @template TEvents - Custom event map (extends HypenFrameworkEvents)\n */\nexport class HypenGlobalContext<TEvents extends Record<string, unknown> = HypenFrameworkEvents> {\n private modules = new Map<string, HypenModuleInstance>();\n private typedEvents: TypedEventEmitter<TEvents>;\n\n /**\n * @deprecated Legacy event bus for backward compatibility\n */\n private legacyEventBus = new Map<string, Set<EventHandler>>();\n\n constructor() {\n this.typedEvents = new TypedEventEmitter<TEvents>();\n }\n\n /**\n * Get the typed event emitter for type-safe event handling\n */\n get events(): TypedEventEmitter<TEvents> {\n return this.typedEvents;\n }\n\n /**\n * Register a module instance with an ID\n */\n registerModule(id: string, instance: HypenModuleInstance) {\n if (this.modules.has(id)) {\n log.warn(`Module \"${id}\" is already registered. Overwriting.`);\n }\n this.modules.set(id, instance);\n log.debug(`Registered module: ${id}`);\n }\n\n /**\n * Unregister a module\n */\n unregisterModule(id: string) {\n this.modules.delete(id);\n log.debug(`Unregistered module: ${id}`);\n }\n\n /**\n * Get a module by ID with type safety\n */\n getModule<T = unknown>(id: string): ModuleReference<T> {\n const module = this.modules.get(id);\n if (!module) {\n throw new Error(\n `Module \"${id}\" not found. Available modules: ${Array.from(this.modules.keys()).join(\", \")}`\n );\n }\n\n return {\n state: module.getLiveState() as T,\n setState: (patch: Partial<T>) => module.updateState(patch),\n getState: () => module.getState() as T,\n };\n }\n\n /**\n * Check if a module exists\n */\n hasModule(id: string): boolean {\n return this.modules.has(id);\n }\n\n /**\n * Get all registered module IDs\n */\n getModuleIds(): string[] {\n return Array.from(this.modules.keys());\n }\n\n /**\n * Get the entire app state tree (snapshot)\n */\n getGlobalState(): Record<string, unknown> {\n const state: Record<string, unknown> = {};\n this.modules.forEach((module, id) => {\n state[id] = module.getState();\n });\n return state;\n }\n\n /**\n * Emit an event to the event bus (legacy API for backward compatibility)\n * @deprecated Use `context.events.emit()` for type-safe events\n */\n emit(event: string, payload?: unknown): void {\n const handlers = this.legacyEventBus.get(event);\n if (!handlers || handlers.size === 0) {\n log.debug(`Event \"${event}\" emitted but no listeners`);\n } else {\n log.debug(`Emitting event: ${event}`, payload);\n handlers.forEach((handler) => {\n try {\n handler(payload);\n } catch (error) {\n log.error(`Error in event handler for \"${event}\":`, error);\n }\n });\n }\n\n // Also emit to typed event system if the event is registered there\n if (this.typedEvents.listenerCount(event as keyof TEvents) > 0) {\n this.typedEvents.emit(event as keyof TEvents, payload as TEvents[keyof TEvents]);\n }\n }\n\n /**\n * Subscribe to an event (legacy API for backward compatibility)\n * @deprecated Use `context.events.on()` for type-safe events\n */\n on(event: string, handler: EventHandler): () => void {\n if (!this.legacyEventBus.has(event)) {\n this.legacyEventBus.set(event, new Set());\n }\n\n const handlers = this.legacyEventBus.get(event)!;\n handlers.add(handler);\n\n log.debug(`Listening to event: ${event}`);\n\n // Return unsubscribe function\n return () => {\n handlers.delete(handler);\n if (handlers.size === 0) {\n this.legacyEventBus.delete(event);\n }\n };\n }\n\n /**\n * Unsubscribe from an event (legacy API)\n * @deprecated Use the unsubscribe function returned by `context.events.on()`\n */\n off(event: string, handler: EventHandler): void {\n const handlers = this.legacyEventBus.get(event);\n if (handlers) {\n handlers.delete(handler);\n if (handlers.size === 0) {\n this.legacyEventBus.delete(event);\n }\n }\n }\n\n /**\n * Clear all event listeners for an event (legacy API)\n * @deprecated Use `context.events.removeAllListeners()`\n */\n clearEvent(event: string): void {\n this.legacyEventBus.delete(event);\n }\n\n /**\n * Clear all event listeners (legacy API)\n * @deprecated Use `context.events.clearAll()`\n */\n clearAllEvents(): void {\n this.legacyEventBus.clear();\n }\n\n /**\n * Get debug info about the context\n */\n debug(): {\n modules: string[];\n events: string[];\n typedEvents: Array<keyof TEvents>;\n state: Record<string, unknown>;\n } {\n return {\n modules: this.getModuleIds(),\n events: Array.from(this.legacyEventBus.keys()),\n typedEvents: this.typedEvents.eventNames(),\n state: this.getGlobalState(),\n };\n }\n}\n"
8
8
  ],
9
9
  "mappings": "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",
10
- "debugId": "0B0D52730A7720DF64756E2164756E21",
10
+ "debugId": "D2F6094CE6FE0C2464756E2164756E21",
11
11
  "names": []
12
12
  }
package/dist/discovery.js CHANGED
@@ -275,176 +275,6 @@ var init_state = __esm(() => {
275
275
  RAW_TARGET = Symbol.for("hypen.rawTarget");
276
276
  });
277
277
 
278
- // src/result.ts
279
- function Ok(value) {
280
- return { ok: true, value };
281
- }
282
- function Err(error) {
283
- return { ok: false, error };
284
- }
285
- function isOk(result) {
286
- return result.ok;
287
- }
288
- function isErr(result) {
289
- return !result.ok;
290
- }
291
- async function fromPromise(promise, mapError) {
292
- try {
293
- const value = await promise;
294
- return Ok(value);
295
- } catch (e) {
296
- if (mapError) {
297
- return Err(mapError(e));
298
- }
299
- return Err(e);
300
- }
301
- }
302
- function fromTry(fn, mapError) {
303
- try {
304
- return Ok(fn());
305
- } catch (e) {
306
- if (mapError) {
307
- return Err(mapError(e));
308
- }
309
- return Err(e);
310
- }
311
- }
312
- function map(result, fn) {
313
- if (result.ok) {
314
- return Ok(fn(result.value));
315
- }
316
- return result;
317
- }
318
- function mapErr(result, fn) {
319
- if (!result.ok) {
320
- return Err(fn(result.error));
321
- }
322
- return result;
323
- }
324
- function flatMap(result, fn) {
325
- if (result.ok) {
326
- return fn(result.value);
327
- }
328
- return result;
329
- }
330
- function unwrap(result) {
331
- if (result.ok) {
332
- return result.value;
333
- }
334
- throw result.error;
335
- }
336
- function unwrapOr(result, defaultValue) {
337
- if (result.ok) {
338
- return result.value;
339
- }
340
- return defaultValue;
341
- }
342
- function unwrapOrElse(result, fn) {
343
- if (result.ok) {
344
- return result.value;
345
- }
346
- return fn(result.error);
347
- }
348
- function match(result, handlers) {
349
- if (result.ok) {
350
- return handlers.ok(result.value);
351
- }
352
- return handlers.err(result.error);
353
- }
354
- function all(results) {
355
- const values = [];
356
- for (const result of results) {
357
- if (!result.ok) {
358
- return result;
359
- }
360
- values.push(result.value);
361
- }
362
- return Ok(values);
363
- }
364
- function classifyEngineError(err) {
365
- const message = err instanceof Error ? err.message : String(err);
366
- if (message.startsWith("Parse error:")) {
367
- return new ParseError(message);
368
- }
369
- if (message.startsWith("Invalid state:") || message.startsWith("Invalid state patch:")) {
370
- return new StateError(message);
371
- }
372
- if (message.startsWith("Parent node not found:")) {
373
- return new RenderError(message);
374
- }
375
- return new RenderError(message);
376
- }
377
- var HypenError, ActionError, ConnectionError, StateError, ParseError, RenderError;
378
- var init_result = __esm(() => {
379
- HypenError = class HypenError extends Error {
380
- code;
381
- context;
382
- cause;
383
- constructor(code, message, options) {
384
- super(message);
385
- this.name = "HypenError";
386
- this.code = code;
387
- this.context = options?.context;
388
- this.cause = options?.cause;
389
- Object.setPrototypeOf(this, new.target.prototype);
390
- }
391
- };
392
- ActionError = class ActionError extends HypenError {
393
- actionName;
394
- constructor(actionName, cause) {
395
- super("ACTION_ERROR", `Action handler "${actionName}" failed: ${cause instanceof Error ? cause.message : String(cause)}`, {
396
- context: { actionName },
397
- cause: cause instanceof Error ? cause : undefined
398
- });
399
- this.name = "ActionError";
400
- this.actionName = actionName;
401
- }
402
- };
403
- ConnectionError = class ConnectionError extends HypenError {
404
- url;
405
- attempt;
406
- constructor(url, cause, attempt) {
407
- super("CONNECTION_ERROR", `Connection to "${url}" failed${attempt ? ` (attempt ${attempt})` : ""}: ${cause instanceof Error ? cause.message : String(cause)}`, {
408
- context: { url, attempt },
409
- cause: cause instanceof Error ? cause : undefined
410
- });
411
- this.name = "ConnectionError";
412
- this.url = url;
413
- this.attempt = attempt;
414
- }
415
- };
416
- StateError = class StateError extends HypenError {
417
- path;
418
- constructor(message, path, cause) {
419
- super("STATE_ERROR", message, {
420
- context: { path },
421
- cause: cause instanceof Error ? cause : undefined
422
- });
423
- this.name = "StateError";
424
- this.path = path;
425
- }
426
- };
427
- ParseError = class ParseError extends HypenError {
428
- source;
429
- constructor(message, source, cause) {
430
- super("PARSE_ERROR", message, {
431
- context: { source },
432
- cause: cause instanceof Error ? cause : undefined
433
- });
434
- this.name = "ParseError";
435
- this.source = source;
436
- }
437
- };
438
- RenderError = class RenderError extends HypenError {
439
- constructor(message, cause) {
440
- super("RENDER_ERROR", message, {
441
- cause: cause instanceof Error ? cause : undefined
442
- });
443
- this.name = "RenderError";
444
- }
445
- };
446
- });
447
-
448
278
  // src/logger.ts
449
279
  function isProduction() {
450
280
  if (typeof process !== "undefined" && process.env) {
@@ -644,6 +474,176 @@ var init_logger = __esm(() => {
644
474
  };
645
475
  });
646
476
 
477
+ // src/result.ts
478
+ function Ok(value) {
479
+ return { ok: true, value };
480
+ }
481
+ function Err(error) {
482
+ return { ok: false, error };
483
+ }
484
+ function isOk(result) {
485
+ return result.ok;
486
+ }
487
+ function isErr(result) {
488
+ return !result.ok;
489
+ }
490
+ async function fromPromise(promise, mapError) {
491
+ try {
492
+ const value = await promise;
493
+ return Ok(value);
494
+ } catch (e) {
495
+ if (mapError) {
496
+ return Err(mapError(e));
497
+ }
498
+ return Err(e);
499
+ }
500
+ }
501
+ function fromTry(fn, mapError) {
502
+ try {
503
+ return Ok(fn());
504
+ } catch (e) {
505
+ if (mapError) {
506
+ return Err(mapError(e));
507
+ }
508
+ return Err(e);
509
+ }
510
+ }
511
+ function map(result, fn) {
512
+ if (result.ok) {
513
+ return Ok(fn(result.value));
514
+ }
515
+ return result;
516
+ }
517
+ function mapErr(result, fn) {
518
+ if (!result.ok) {
519
+ return Err(fn(result.error));
520
+ }
521
+ return result;
522
+ }
523
+ function flatMap(result, fn) {
524
+ if (result.ok) {
525
+ return fn(result.value);
526
+ }
527
+ return result;
528
+ }
529
+ function unwrap(result) {
530
+ if (result.ok) {
531
+ return result.value;
532
+ }
533
+ throw result.error;
534
+ }
535
+ function unwrapOr(result, defaultValue) {
536
+ if (result.ok) {
537
+ return result.value;
538
+ }
539
+ return defaultValue;
540
+ }
541
+ function unwrapOrElse(result, fn) {
542
+ if (result.ok) {
543
+ return result.value;
544
+ }
545
+ return fn(result.error);
546
+ }
547
+ function match(result, handlers) {
548
+ if (result.ok) {
549
+ return handlers.ok(result.value);
550
+ }
551
+ return handlers.err(result.error);
552
+ }
553
+ function all(results) {
554
+ const values = [];
555
+ for (const result of results) {
556
+ if (!result.ok) {
557
+ return result;
558
+ }
559
+ values.push(result.value);
560
+ }
561
+ return Ok(values);
562
+ }
563
+ function classifyEngineError(err) {
564
+ const message = err instanceof Error ? err.message : String(err);
565
+ if (message.startsWith("Parse error:")) {
566
+ return new ParseError(message);
567
+ }
568
+ if (message.startsWith("Invalid state:") || message.startsWith("Invalid state patch:")) {
569
+ return new StateError(message);
570
+ }
571
+ if (message.startsWith("Parent node not found:")) {
572
+ return new RenderError(message);
573
+ }
574
+ return new RenderError(message);
575
+ }
576
+ var HypenError, ActionError, ConnectionError, StateError, ParseError, RenderError;
577
+ var init_result = __esm(() => {
578
+ HypenError = class HypenError extends Error {
579
+ code;
580
+ context;
581
+ cause;
582
+ constructor(code, message, options) {
583
+ super(message);
584
+ this.name = "HypenError";
585
+ this.code = code;
586
+ this.context = options?.context;
587
+ this.cause = options?.cause;
588
+ Object.setPrototypeOf(this, new.target.prototype);
589
+ }
590
+ };
591
+ ActionError = class ActionError extends HypenError {
592
+ actionName;
593
+ constructor(actionName, cause) {
594
+ super("ACTION_ERROR", `Action handler "${actionName}" failed: ${cause instanceof Error ? cause.message : String(cause)}`, {
595
+ context: { actionName },
596
+ cause: cause instanceof Error ? cause : undefined
597
+ });
598
+ this.name = "ActionError";
599
+ this.actionName = actionName;
600
+ }
601
+ };
602
+ ConnectionError = class ConnectionError extends HypenError {
603
+ url;
604
+ attempt;
605
+ constructor(url, cause, attempt) {
606
+ super("CONNECTION_ERROR", `Connection to "${url}" failed${attempt ? ` (attempt ${attempt})` : ""}: ${cause instanceof Error ? cause.message : String(cause)}`, {
607
+ context: { url, attempt },
608
+ cause: cause instanceof Error ? cause : undefined
609
+ });
610
+ this.name = "ConnectionError";
611
+ this.url = url;
612
+ this.attempt = attempt;
613
+ }
614
+ };
615
+ StateError = class StateError extends HypenError {
616
+ path;
617
+ constructor(message, path, cause) {
618
+ super("STATE_ERROR", message, {
619
+ context: { path },
620
+ cause: cause instanceof Error ? cause : undefined
621
+ });
622
+ this.name = "StateError";
623
+ this.path = path;
624
+ }
625
+ };
626
+ ParseError = class ParseError extends HypenError {
627
+ source;
628
+ constructor(message, source, cause) {
629
+ super("PARSE_ERROR", message, {
630
+ context: { source },
631
+ cause: cause instanceof Error ? cause : undefined
632
+ });
633
+ this.name = "ParseError";
634
+ this.source = source;
635
+ }
636
+ };
637
+ RenderError = class RenderError extends HypenError {
638
+ constructor(message, cause) {
639
+ super("RENDER_ERROR", message, {
640
+ cause: cause instanceof Error ? cause : undefined
641
+ });
642
+ this.name = "RenderError";
643
+ }
644
+ };
645
+ });
646
+
647
647
  // src/app.ts
648
648
  var exports_app = {};
649
649
  __export(exports_app, {
@@ -1241,4 +1241,4 @@ export {
1241
1241
  discoverComponents
1242
1242
  };
1243
1243
 
1244
- //# debugId=DA797A6F874A544F64756E2164756E21
1244
+ //# debugId=75A232D98C70314364756E2164756E21