@hypen-space/core 0.2.1 → 0.2.3

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 (40) hide show
  1. package/README.md +199 -154
  2. package/dist/src/app.js +2 -1
  3. package/dist/src/app.js.map +3 -3
  4. package/dist/src/engine.browser.js +2 -2
  5. package/dist/src/engine.browser.js.map +2 -2
  6. package/dist/src/engine.js +4 -3
  7. package/dist/src/engine.js.map +3 -3
  8. package/dist/src/index.js +18 -6
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/plugin.js +126 -0
  11. package/dist/src/plugin.js.map +10 -0
  12. package/dist/src/resolver.js +102 -0
  13. package/dist/src/resolver.js.map +10 -0
  14. package/dist/src/router.js +37 -18
  15. package/dist/src/router.js.map +3 -3
  16. package/dist/src/state.js +9 -1
  17. package/dist/src/state.js.map +3 -3
  18. package/package.json +15 -2
  19. package/src/app.ts +1 -0
  20. package/src/engine.browser.ts +1 -1
  21. package/src/engine.ts +4 -2
  22. package/src/index.ts +21 -1
  23. package/src/plugin.ts +219 -0
  24. package/src/resolver.ts +216 -0
  25. package/src/router.ts +43 -21
  26. package/src/state.ts +20 -0
  27. package/wasm-browser/README.md +425 -0
  28. package/wasm-browser/hypen_engine.d.ts +151 -0
  29. package/wasm-browser/hypen_engine.js +811 -0
  30. package/wasm-browser/hypen_engine_bg.js +736 -0
  31. package/wasm-browser/hypen_engine_bg.wasm +0 -0
  32. package/wasm-browser/hypen_engine_bg.wasm.d.ts +30 -0
  33. package/wasm-browser/package.json +15 -0
  34. package/wasm-node/README.md +425 -0
  35. package/wasm-node/hypen_engine.d.ts +97 -0
  36. package/wasm-node/hypen_engine.js +751 -0
  37. package/wasm-node/hypen_engine_bg.js +736 -0
  38. package/wasm-node/hypen_engine_bg.wasm +0 -0
  39. package/wasm-node/hypen_engine_bg.wasm.d.ts +30 -0
  40. package/wasm-node/package.json +11 -0
@@ -0,0 +1,151 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Export patches as JSON string (for debugging)
5
+ */
6
+ export function patchesToJson(patches: any): string;
7
+ /**
8
+ * Parse Hypen DSL and return AST as JSON
9
+ */
10
+ export function parseToJson(source: string): string;
11
+ export function main(): void;
12
+ /**
13
+ * WASM-exported engine instance
14
+ * Uses Rc<RefCell<>> instead of Send+Sync for WASM single-threaded environment
15
+ */
16
+ export class WasmEngine {
17
+ free(): void;
18
+ [Symbol.dispose](): void;
19
+ /**
20
+ * Create a new engine instance
21
+ */
22
+ constructor();
23
+ /**
24
+ * Parse and render Hypen DSL source code
25
+ */
26
+ renderSource(source: string): void;
27
+ /**
28
+ * Set the render callback that receives patches
29
+ */
30
+ setRenderCallback(callback: Function): void;
31
+ /**
32
+ * Set the component resolver callback
33
+ * The resolver receives (componentName, contextPath) and should return
34
+ * { source: string, path: string } or null
35
+ *
36
+ * contextPath is the path of the component that's referencing this component
37
+ * The returned path should be the resolved absolute path to the component file
38
+ */
39
+ setComponentResolver(resolver: Function): void;
40
+ /**
41
+ * Register a primitive element (like Text, Button, etc.) to skip component resolution
42
+ * This prevents unnecessary resolver calls for built-in DOM elements
43
+ */
44
+ registerPrimitive(name: string): void;
45
+ /**
46
+ * Render a component source (for lazy loading routes)
47
+ * This allows rendering a component on-demand
48
+ */
49
+ renderLazyComponent(source: string): void;
50
+ /**
51
+ * Render a component into a specific parent node (subtree rendering)
52
+ * This is used for lazy routing where components are rendered on-demand into route containers
53
+ *
54
+ * # Arguments
55
+ * * `source` - The Hypen DSL source to parse and render
56
+ * * `parent_node_id_str` - The serialized node ID string of the parent element
57
+ * * `state_js` - The state to use for rendering (as JsValue)
58
+ */
59
+ renderInto(source: string, parent_node_id_str: string, state_js: any): void;
60
+ /**
61
+ * Update state from JavaScript
62
+ */
63
+ updateState(state_patch: any): void;
64
+ /**
65
+ * Update state using sparse path-value pairs
66
+ * More efficient than updateState for large state objects when only a few paths changed
67
+ *
68
+ * # Arguments
69
+ * * `paths_js` - Array of changed paths (e.g., ["user.name", "count"])
70
+ * * `values_js` - Object mapping paths to their new values (e.g., { "user.name": "Bob", "count": 42 })
71
+ */
72
+ updateStateSparse(paths_js: any, values_js: any): void;
73
+ /**
74
+ * Dispatch an action
75
+ */
76
+ dispatchAction(name: string, payload: any): void;
77
+ /**
78
+ * Register an action handler
79
+ */
80
+ onAction(action_name: string, handler: Function): void;
81
+ /**
82
+ * Clear the engine tree (useful when switching samples)
83
+ */
84
+ clearTree(): void;
85
+ /**
86
+ * Debug method to inspect parsed components
87
+ */
88
+ debugParseComponent(source: string): string;
89
+ /**
90
+ * Initialize a module
91
+ */
92
+ setModule(name: string, actions: string[], state_keys: string[], initial_state: any): void;
93
+ /**
94
+ * Get the current revision number
95
+ */
96
+ getRevision(): bigint;
97
+ }
98
+
99
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
100
+
101
+ export interface InitOutput {
102
+ readonly memory: WebAssembly.Memory;
103
+ readonly __wbg_wasmengine_free: (a: number, b: number) => void;
104
+ readonly wasmengine_new: () => number;
105
+ readonly wasmengine_setRenderCallback: (a: number, b: any) => void;
106
+ readonly wasmengine_setComponentResolver: (a: number, b: any) => void;
107
+ readonly wasmengine_registerPrimitive: (a: number, b: number, c: number) => void;
108
+ readonly wasmengine_renderLazyComponent: (a: number, b: number, c: number) => [number, number];
109
+ readonly wasmengine_renderInto: (a: number, b: number, c: number, d: number, e: number, f: any) => [number, number];
110
+ readonly wasmengine_updateState: (a: number, b: any) => [number, number];
111
+ readonly wasmengine_updateStateSparse: (a: number, b: any, c: any) => [number, number];
112
+ readonly wasmengine_dispatchAction: (a: number, b: number, c: number, d: any) => [number, number];
113
+ readonly wasmengine_onAction: (a: number, b: number, c: number, d: any) => void;
114
+ readonly wasmengine_clearTree: (a: number) => void;
115
+ readonly wasmengine_debugParseComponent: (a: number, b: number, c: number) => [number, number, number, number];
116
+ readonly wasmengine_setModule: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: any) => [number, number];
117
+ readonly wasmengine_getRevision: (a: number) => bigint;
118
+ readonly patchesToJson: (a: any) => [number, number, number, number];
119
+ readonly parseToJson: (a: number, b: number) => [number, number, number, number];
120
+ readonly main: () => void;
121
+ readonly wasmengine_renderSource: (a: number, b: number, c: number) => [number, number];
122
+ readonly __wbindgen_exn_store: (a: number) => void;
123
+ readonly __externref_table_alloc: () => number;
124
+ readonly __wbindgen_export_2: WebAssembly.Table;
125
+ readonly __wbindgen_malloc: (a: number, b: number) => number;
126
+ readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
127
+ readonly __externref_table_dealloc: (a: number) => void;
128
+ readonly __wbindgen_free: (a: number, b: number, c: number) => void;
129
+ readonly __wbindgen_start: () => void;
130
+ }
131
+
132
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
133
+ /**
134
+ * Instantiates the given `module`, which can either be bytes or
135
+ * a precompiled `WebAssembly.Module`.
136
+ *
137
+ * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
138
+ *
139
+ * @returns {InitOutput}
140
+ */
141
+ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
142
+
143
+ /**
144
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
145
+ * for everything else, calls `WebAssembly.instantiate` directly.
146
+ *
147
+ * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
148
+ *
149
+ * @returns {Promise<InitOutput>}
150
+ */
151
+ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;