apprun 4.0.0 → 6.0.0-rc.0
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/CHANGELOG.md +235 -12
- package/LICENSE +1 -1
- package/README.md +225 -110
- package/apprun.d.ts +240 -34
- package/cli/app.js +29 -0
- package/cli/colors.js +69 -0
- package/cli/index.html +13 -0
- package/cli/index.js +96 -0
- package/dist/apprun-code.js +2 -0
- package/dist/apprun-code.js.map +1 -0
- package/dist/apprun-dev-tools.js +1 -1
- package/dist/apprun-dev-tools.js.map +1 -1
- package/dist/apprun-html.esm.js +34 -0
- package/dist/apprun-html.esm.js.map +1 -0
- package/dist/apprun-html.js +2 -1
- package/dist/apprun-html.js.LICENSE.txt +11 -0
- package/dist/apprun-html.js.map +1 -1
- package/dist/apprun-play.js +2 -0
- package/dist/apprun-play.js.map +1 -0
- package/dist/apprun.esm.js +2 -0
- package/dist/apprun.esm.js.map +1 -0
- package/dist/apprun.js +1 -1
- package/dist/apprun.js.map +1 -1
- package/dist/createState.js +2 -0
- package/dist/createState.js.map +1 -0
- package/esm/add-components.js +90 -0
- package/esm/add-components.js.map +1 -0
- package/esm/app.js +209 -0
- package/esm/app.js.map +1 -0
- package/esm/apprun-code.js +170 -0
- package/esm/apprun-code.js.map +1 -0
- package/esm/apprun-dev-tools-tests.js +95 -0
- package/esm/apprun-dev-tools-tests.js.map +1 -0
- package/esm/apprun-dev-tools.js +281 -0
- package/esm/apprun-dev-tools.js.map +1 -0
- package/esm/apprun-html.js +24 -0
- package/esm/apprun-html.js.map +1 -0
- package/esm/apprun-play.js +248 -0
- package/esm/apprun-play.js.map +1 -0
- package/esm/apprun.js +220 -0
- package/esm/apprun.js.map +1 -0
- package/esm/component.js +413 -0
- package/esm/component.js.map +1 -0
- package/esm/createState.js +9 -0
- package/esm/createState.js.map +1 -0
- package/esm/decorator.js +88 -0
- package/esm/decorator.js.map +1 -0
- package/esm/directive.js +306 -0
- package/esm/directive.js.map +1 -0
- package/esm/router.js +345 -0
- package/esm/router.js.map +1 -0
- package/esm/type-utils.js +90 -0
- package/esm/type-utils.js.map +1 -0
- package/esm/types.js +58 -0
- package/esm/types.js.map +1 -0
- package/esm/vdom-lit-html.js +65 -0
- package/esm/vdom-lit-html.js.map +1 -0
- package/esm/vdom-my-prop-attr.js +227 -0
- package/esm/vdom-my-prop-attr.js.map +1 -0
- package/esm/vdom-my.js +293 -0
- package/esm/vdom-my.js.map +1 -0
- package/esm/vdom-to-html.js +54 -0
- package/esm/vdom-to-html.js.map +1 -0
- package/esm/vdom.js +28 -0
- package/esm/vdom.js.map +1 -0
- package/esm/version.js +15 -0
- package/esm/version.js.map +1 -0
- package/esm/web-component.js +155 -0
- package/esm/web-component.js.map +1 -0
- package/jsx-runtime.js +2 -0
- package/jsx-runtime.js.map +1 -0
- package/package.json +90 -41
- package/.travis.yml +0 -10
- package/.vscode/launch.json +0 -19
- package/BACKERS.md +0 -3
- package/apprun-cli.js +0 -177
- package/cli-templates/_gitignore +0 -6
- package/cli-templates/component.ts_ +0 -16
- package/cli-templates/index.html +0 -11
- package/cli-templates/karma.conf.js +0 -24
- package/cli-templates/main.ts_ +0 -13
- package/cli-templates/readme.md +0 -7
- package/cli-templates/spa_index.html +0 -14
- package/cli-templates/spa_main.ts_ +0 -47
- package/cli-templates/spec.ts_ +0 -11
- package/cli-templates/tsconfig.json +0 -12
- package/cli-templates/webpack.config.js +0 -23
- package/demo-html/app.js +0 -2
- package/demo-html/app.js.map +0 -1
- package/demo-html/counter-c.html +0 -29
- package/demo-html/counter-wc-event.html +0 -29
- package/demo-html/counter-wc.html +0 -29
- package/demo-html/counter.html +0 -26
- package/demo-html/index.html +0 -14
- package/demo-html/main.tsx +0 -31
- package/docs/README.md +0 -326
- package/docs/index.html +0 -23
- package/index.html +0 -85
- package/logo.png +0 -0
- package/src/app.ts +0 -69
- package/src/apprun-dev-tools.tsx +0 -67
- package/src/apprun-html.ts +0 -13
- package/src/apprun.ts +0 -53
- package/src/component.ts +0 -189
- package/src/createComponent.tsx +0 -38
- package/src/decorator.ts +0 -36
- package/src/router.ts +0 -19
- package/src/types.ts +0 -9
- package/src/vdom-html.ts +0 -17
- package/src/vdom-my.ts +0 -191
- package/src/vdom-to-html.tsx +0 -45
- package/src/vdom.ts +0 -7
- package/src/web-component.ts +0 -29
- package/tests/app-rx.spec_ +0 -41
- package/tests/app.spec.ts +0 -122
- package/tests/application.spec.tsx +0 -23
- package/tests/component.spec.tsx +0 -296
- package/tests/custom-element.spec.tsx +0 -19
- package/tests/data-attr.spec.tsx +0 -42
- package/tests/decorator.spec.tsx +0 -104
- package/tests/fragment.spec.tsx +0 -79
- package/tests/hyperscript.spec.ts +0 -43
- package/tests/node-test.js +0 -7
- package/tests/router.spec.ts +0 -69
- package/tests/stateful-component.spec.tsx +0 -248
- package/tests/typed.spec.tsx +0 -63
- package/tests/vdom-html.spec.ts +0 -35
- package/tests/vdom-jsx.spec.tsx +0 -131
- package/tests/vdom-my.spec.tsx +0 -195
- package/tests/view-engine.spec.js +0 -59
- package/tsconfig.json +0 -11
- package/tslint.json +0 -124
- package/typescriptreact.json +0 -87
- package/viewEngine.js +0 -54
- package/webpack.config.js +0 -30
package/esm/component.js
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppRun Component System Implementation
|
|
3
|
+
*
|
|
4
|
+
* This file provides the Component class which is the foundation for:
|
|
5
|
+
* 1. State Management
|
|
6
|
+
* - Maintains component state with history support
|
|
7
|
+
* - Handles state updates with async/iterator support
|
|
8
|
+
* - Supports state history navigation (prev/next)
|
|
9
|
+
* - Promise and async iterator state handling
|
|
10
|
+
*
|
|
11
|
+
* 2. View Rendering
|
|
12
|
+
* - Renders virtual DOM to real DOM with directives
|
|
13
|
+
* - Handles component lifecycle (mounted, rendered, unload)
|
|
14
|
+
* - Supports shadow DOM and web components
|
|
15
|
+
* - DOM removal tracking with a shared MutationObserver registry
|
|
16
|
+
* - View transition API support
|
|
17
|
+
*
|
|
18
|
+
* 3. Event Handling
|
|
19
|
+
* - Local and global event subscription management
|
|
20
|
+
* - Event handler registration via decorators
|
|
21
|
+
* - Action to state updates with error handling
|
|
22
|
+
* - Support for event options (delay, once, global)
|
|
23
|
+
*
|
|
24
|
+
* Features:
|
|
25
|
+
* - Component caching for debugging
|
|
26
|
+
* - Element tracking for cleanup
|
|
27
|
+
* - History navigation support
|
|
28
|
+
* - Global vs local event routing
|
|
29
|
+
* - Async state handling with latest-pending-promise protection
|
|
30
|
+
* - Memory leak prevention with shared unload tracking
|
|
31
|
+
* - Component unmounting with cleanup
|
|
32
|
+
* - Phase 3 concrete component field and history option typing
|
|
33
|
+
*
|
|
34
|
+
* Type Safety Improvements (v3.35.1):
|
|
35
|
+
* - Enhanced element access with null checks and warnings
|
|
36
|
+
* - Improved action validation and error handling
|
|
37
|
+
* - Better error reporting in component actions
|
|
38
|
+
* - Safer DOM element queries with fallback warnings
|
|
39
|
+
*
|
|
40
|
+
* Usage:
|
|
41
|
+
* ```ts
|
|
42
|
+
* class MyComponent extends Component {
|
|
43
|
+
* state = // Initial state
|
|
44
|
+
* view = state => // Return virtual DOM
|
|
45
|
+
* update = {
|
|
46
|
+
* 'event': (state, ...args) => // Return new state
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* // Mount component
|
|
51
|
+
* new MyComponent().mount('element-id');
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
import _app, { App } from './app';
|
|
55
|
+
import { Reflect } from './decorator';
|
|
56
|
+
import directive from './directive';
|
|
57
|
+
import { safeQuerySelector, safeGetElementById } from './type-utils';
|
|
58
|
+
// const componentCache = new Map();
|
|
59
|
+
// if (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);
|
|
60
|
+
export const REFRESH = state => state;
|
|
61
|
+
const app = _app;
|
|
62
|
+
let tracking_id_counter = 0;
|
|
63
|
+
const tracking_attr = '_c';
|
|
64
|
+
const tracked_elements = new Map();
|
|
65
|
+
let shared_observer = null;
|
|
66
|
+
function getHistoryOptions(history) {
|
|
67
|
+
return typeof history === 'object' && history !== null ? history : {};
|
|
68
|
+
}
|
|
69
|
+
function disconnectSharedObserverIfIdle() {
|
|
70
|
+
if (tracked_elements.size === 0 && shared_observer) {
|
|
71
|
+
shared_observer.disconnect();
|
|
72
|
+
shared_observer = null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function unloadTrackedElement(el) {
|
|
76
|
+
const tracked = tracked_elements.get(el);
|
|
77
|
+
if (!tracked)
|
|
78
|
+
return;
|
|
79
|
+
tracked_elements.delete(el);
|
|
80
|
+
tracked.component.unload?.(tracked.component.state);
|
|
81
|
+
disconnectSharedObserverIfIdle();
|
|
82
|
+
}
|
|
83
|
+
function ensureSharedObserver() {
|
|
84
|
+
if (shared_observer || typeof MutationObserver === 'undefined' || typeof document !== 'object' || !document.body)
|
|
85
|
+
return;
|
|
86
|
+
shared_observer = new MutationObserver(changes => {
|
|
87
|
+
changes.forEach(change => {
|
|
88
|
+
if (change.type === 'attributes') {
|
|
89
|
+
const el = change.target;
|
|
90
|
+
const tracked = tracked_elements.get(el);
|
|
91
|
+
if (tracked && change.oldValue === tracked.tracking_id)
|
|
92
|
+
unloadTrackedElement(el);
|
|
93
|
+
}
|
|
94
|
+
else if (change.type === 'childList') {
|
|
95
|
+
Array.from(tracked_elements.keys()).forEach(el => {
|
|
96
|
+
if (!document.body.contains(el))
|
|
97
|
+
unloadTrackedElement(el);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
shared_observer.observe(document.body, {
|
|
103
|
+
childList: true, subtree: true,
|
|
104
|
+
attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function registerTrackedElement(component, el, tracking_id) {
|
|
108
|
+
const existing = tracked_elements.get(el);
|
|
109
|
+
if (existing && existing.component !== component)
|
|
110
|
+
unloadTrackedElement(el);
|
|
111
|
+
tracked_elements.set(el, { component, tracking_id });
|
|
112
|
+
ensureSharedObserver();
|
|
113
|
+
}
|
|
114
|
+
function unregisterTrackedElement(el) {
|
|
115
|
+
if (!el)
|
|
116
|
+
return;
|
|
117
|
+
tracked_elements.delete(el);
|
|
118
|
+
disconnectSharedObserverIfIdle();
|
|
119
|
+
}
|
|
120
|
+
export class Component {
|
|
121
|
+
renderState(state, vdom = null) {
|
|
122
|
+
if (!this.view)
|
|
123
|
+
return;
|
|
124
|
+
let html = vdom || this.view(state);
|
|
125
|
+
app['debug'] && app.run('debug', {
|
|
126
|
+
component: this,
|
|
127
|
+
_: html ? '.' : '-',
|
|
128
|
+
state,
|
|
129
|
+
vdom: html,
|
|
130
|
+
el: this.element
|
|
131
|
+
});
|
|
132
|
+
if (typeof document !== 'object')
|
|
133
|
+
return;
|
|
134
|
+
const el = ((typeof this.element === 'string' && this.element) ?
|
|
135
|
+
safeGetElementById(this.element) || safeQuerySelector(this.element) : this.element);
|
|
136
|
+
if (!el) {
|
|
137
|
+
console.warn(`Component element not found: ${this.element}`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (!this.unload) {
|
|
141
|
+
unregisterTrackedElement(this.tracking_element);
|
|
142
|
+
this.tracking_element = null;
|
|
143
|
+
el.removeAttribute && el.removeAttribute(tracking_attr);
|
|
144
|
+
}
|
|
145
|
+
else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {
|
|
146
|
+
if (this.tracking_element && this.tracking_element !== el)
|
|
147
|
+
unregisterTrackedElement(this.tracking_element);
|
|
148
|
+
this.tracking_id = (++tracking_id_counter).toString(36);
|
|
149
|
+
el.setAttribute(tracking_attr, this.tracking_id);
|
|
150
|
+
this.tracking_element = el;
|
|
151
|
+
registerTrackedElement(this, el, this.tracking_id);
|
|
152
|
+
}
|
|
153
|
+
el['_component'] = this;
|
|
154
|
+
if (!vdom && html) {
|
|
155
|
+
html = directive(html, this);
|
|
156
|
+
if (this.options.transition && document && document['startViewTransition']) {
|
|
157
|
+
document['startViewTransition'](() => app.render(el, html, this));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
app.render(el, html, this);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
this.rendered && this.rendered(this.state);
|
|
164
|
+
}
|
|
165
|
+
setState(state, options = { render: true, history: false }) {
|
|
166
|
+
const handleAsyncIterator = async (iterator) => {
|
|
167
|
+
try {
|
|
168
|
+
while (true) {
|
|
169
|
+
const { value, done } = await iterator.next();
|
|
170
|
+
if (done)
|
|
171
|
+
break;
|
|
172
|
+
this.setState(value, options);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
console.error('Error in async iterator:', e);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
const result = state;
|
|
180
|
+
if (result?.[Symbol.asyncIterator]) {
|
|
181
|
+
// handleAsyncIterator(result[Symbol.asyncIterator]());
|
|
182
|
+
this.setState(handleAsyncIterator(result[Symbol.asyncIterator]()), options);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
else if (result?.[Symbol.iterator] && typeof result.next === "function") {
|
|
186
|
+
for (const value of result) {
|
|
187
|
+
this.setState(value, options);
|
|
188
|
+
}
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
else if (state && state instanceof Promise) {
|
|
192
|
+
// Promise will not be saved or rendered
|
|
193
|
+
// state will be saved and rendered when promise is resolved
|
|
194
|
+
const pending_state = state;
|
|
195
|
+
this._pending_state = pending_state;
|
|
196
|
+
Promise.resolve(pending_state).then(v => {
|
|
197
|
+
if (this._pending_state === pending_state) {
|
|
198
|
+
this._pending_state = null;
|
|
199
|
+
this.setState(v, options);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
this._state = state;
|
|
205
|
+
if (state == null)
|
|
206
|
+
return;
|
|
207
|
+
this._pending_state = null;
|
|
208
|
+
this.state = state;
|
|
209
|
+
if (options.render !== false) {
|
|
210
|
+
// before render state
|
|
211
|
+
if (options.transition && document && document['startViewTransition']) {
|
|
212
|
+
document['startViewTransition'](() => this.renderState(state));
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.renderState(state);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (options.history !== false && this.enable_history) {
|
|
219
|
+
this._history = [...this._history, state];
|
|
220
|
+
this._history_idx = this._history.length - 1;
|
|
221
|
+
}
|
|
222
|
+
if (typeof options.callback === 'function')
|
|
223
|
+
options.callback(this.state);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
constructor(state, view, update, options = {}) {
|
|
227
|
+
this.state = state;
|
|
228
|
+
this.view = view;
|
|
229
|
+
this.update = update;
|
|
230
|
+
this.options = options;
|
|
231
|
+
this._app = new App();
|
|
232
|
+
this._actions = [];
|
|
233
|
+
this._global_events = [];
|
|
234
|
+
this._history = [];
|
|
235
|
+
this._history_idx = -1;
|
|
236
|
+
this.enable_history = false;
|
|
237
|
+
this.global_event = false;
|
|
238
|
+
this.tracking_element = null;
|
|
239
|
+
this._history_prev = () => {
|
|
240
|
+
this._history_idx--;
|
|
241
|
+
if (this._history_idx >= 0) {
|
|
242
|
+
this.setState(this._history[this._history_idx], { render: true, history: false });
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
this._history_idx = 0;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
this._history_next = () => {
|
|
249
|
+
this._history_idx++;
|
|
250
|
+
if (this._history_idx < this._history.length) {
|
|
251
|
+
this.setState(this._history[this._history_idx], { render: true, history: false });
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this._history_idx = this._history.length - 1;
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
this.start = (element = null, options) => {
|
|
258
|
+
this.mount(element, { render: true, ...options });
|
|
259
|
+
if (this.mounted && typeof this.mounted === 'function') {
|
|
260
|
+
const new_state = this.mounted({}, [], this.state);
|
|
261
|
+
(typeof new_state !== 'undefined') && this.setState(new_state);
|
|
262
|
+
}
|
|
263
|
+
return this;
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
mount(element = null, options) {
|
|
267
|
+
console.assert(!this.element, 'Component already mounted.');
|
|
268
|
+
this.options = options = { ...this.options, ...options };
|
|
269
|
+
this.element = element;
|
|
270
|
+
this.global_event = options.global_event;
|
|
271
|
+
this.enable_history = !!options.history;
|
|
272
|
+
if (this.enable_history) {
|
|
273
|
+
const history = getHistoryOptions(options.history);
|
|
274
|
+
this.on((history.prev || 'history-prev'), this._history_prev);
|
|
275
|
+
this.on((history.next || 'history-next'), this._history_next);
|
|
276
|
+
}
|
|
277
|
+
if (options.route) {
|
|
278
|
+
this.update = this.update || {};
|
|
279
|
+
if (!this.update[options.route])
|
|
280
|
+
this.update[options.route] = REFRESH;
|
|
281
|
+
}
|
|
282
|
+
this.add_actions();
|
|
283
|
+
this.state = this.state ?? this['model'] ?? {};
|
|
284
|
+
if (typeof this.state === 'function')
|
|
285
|
+
this.state = this.state();
|
|
286
|
+
this.setState(this.state, { render: !!options.render, history: true });
|
|
287
|
+
if (app['debug'] && app.find('debug-create-component')?.length) {
|
|
288
|
+
app.run('debug-create-component', this);
|
|
289
|
+
}
|
|
290
|
+
return this;
|
|
291
|
+
}
|
|
292
|
+
is_global_event(name) {
|
|
293
|
+
return name && (this.global_event ||
|
|
294
|
+
this._global_events.indexOf(name) >= 0 ||
|
|
295
|
+
name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));
|
|
296
|
+
}
|
|
297
|
+
add_action(name, action, options = {}) {
|
|
298
|
+
if (!action || typeof action !== 'function') {
|
|
299
|
+
console.warn(`Component action for '${name}' is not a valid function:`, action);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (options.global)
|
|
303
|
+
this._global_events.push(name);
|
|
304
|
+
this.on(name, (...p) => {
|
|
305
|
+
app['debug'] && app.run('debug', {
|
|
306
|
+
component: this,
|
|
307
|
+
_: '>',
|
|
308
|
+
event: name, p,
|
|
309
|
+
current_state: this.state,
|
|
310
|
+
options
|
|
311
|
+
});
|
|
312
|
+
try {
|
|
313
|
+
const newState = action(this.state, ...p);
|
|
314
|
+
app['debug'] && app.run('debug', {
|
|
315
|
+
component: this,
|
|
316
|
+
_: '<',
|
|
317
|
+
event: name, p,
|
|
318
|
+
newState,
|
|
319
|
+
state: this.state,
|
|
320
|
+
options
|
|
321
|
+
});
|
|
322
|
+
this.setState(newState, options);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
const payload = { event: name, error, component: this, state: this.state, args: p, phase: 'component' };
|
|
326
|
+
app.find('error')?.length ? app.run('error', payload) : console.error(`Error in component action '${name}':`, error);
|
|
327
|
+
app['debug'] && app.run('debug', {
|
|
328
|
+
component: this,
|
|
329
|
+
_: '!',
|
|
330
|
+
event: name, p,
|
|
331
|
+
error,
|
|
332
|
+
state: this.state,
|
|
333
|
+
options
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}, options);
|
|
337
|
+
}
|
|
338
|
+
add_actions() {
|
|
339
|
+
const actions = this.update || {};
|
|
340
|
+
Reflect.getMetadataKeys(this).forEach(key => {
|
|
341
|
+
if (key.startsWith('apprun-update:')) {
|
|
342
|
+
const meta = Reflect.getMetadata(key, this);
|
|
343
|
+
actions[meta.name] = [this[meta.key].bind(this), meta.options];
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
const all = {};
|
|
347
|
+
if (Array.isArray(actions)) {
|
|
348
|
+
actions.forEach(act => {
|
|
349
|
+
const [name, action, opts] = act;
|
|
350
|
+
const names = name.toString();
|
|
351
|
+
names.split(',').forEach(n => all[n.trim()] = [action, opts]);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
Object.keys(actions).forEach(name => {
|
|
356
|
+
const action = actions[name];
|
|
357
|
+
if (typeof action === 'function' || Array.isArray(action)) {
|
|
358
|
+
name.split(',').forEach(n => all[n.trim()] = action);
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
if (!all['.'])
|
|
363
|
+
all['.'] = REFRESH;
|
|
364
|
+
Object.keys(all).forEach(name => {
|
|
365
|
+
const action = all[name];
|
|
366
|
+
if (typeof action === 'function') {
|
|
367
|
+
this.add_action(name, action);
|
|
368
|
+
}
|
|
369
|
+
else if (Array.isArray(action)) {
|
|
370
|
+
this.add_action(name, action[0], action[1]);
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
run(event, ...args) {
|
|
375
|
+
if (this.state instanceof Promise) {
|
|
376
|
+
return Promise.resolve(this.state).then(state => {
|
|
377
|
+
this.state = state;
|
|
378
|
+
this.run(event, ...args);
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
const name = event.toString();
|
|
383
|
+
return this.is_global_event(name) ?
|
|
384
|
+
app.run(name, ...args) :
|
|
385
|
+
this._app.run(name, ...args);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
on(event, fn, options) {
|
|
389
|
+
const name = event.toString();
|
|
390
|
+
this._actions.push({ name, fn });
|
|
391
|
+
return this.is_global_event(name) ?
|
|
392
|
+
app.on(name, fn, options) :
|
|
393
|
+
this._app.on(name, fn, options);
|
|
394
|
+
}
|
|
395
|
+
runAsync(event, ...args) {
|
|
396
|
+
const name = event.toString();
|
|
397
|
+
return this.is_global_event(name) ?
|
|
398
|
+
app.runAsync(name, ...args) :
|
|
399
|
+
this._app.runAsync(name, ...args);
|
|
400
|
+
}
|
|
401
|
+
unmount() {
|
|
402
|
+
unregisterTrackedElement(this.tracking_element);
|
|
403
|
+
this.tracking_element = null;
|
|
404
|
+
this._actions.forEach(action => {
|
|
405
|
+
const { name, fn } = action;
|
|
406
|
+
this.is_global_event(name) ?
|
|
407
|
+
app.off(name, fn) :
|
|
408
|
+
this._app.off(name, fn);
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
Component.__isAppRunComponent = true;
|
|
413
|
+
//# sourceMappingURL=component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createState.js","sourceRoot":"","sources":["../src/createState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,OAAO,CAAC;AAEvC,MAAM,UAAU,WAAW,CACzB,EAA6C;IAE7C,OAAO,CAAC,KAAQ,EAAE,GAAG,IAAW,EAAK,EAAE;QACrC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
package/esm/decorator.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import webComponent from './web-component';
|
|
2
|
+
/**
|
|
3
|
+
* TypeScript Decorators for AppRun Components
|
|
4
|
+
*
|
|
5
|
+
* This file provides decorators that enable:
|
|
6
|
+
* 1. Event Handler Registration
|
|
7
|
+
* - @on(): Subscribe to events with options (global, once, delay)
|
|
8
|
+
* - @update(): Define state updates with metadata and options
|
|
9
|
+
* - Supports method and class decoration patterns
|
|
10
|
+
*
|
|
11
|
+
* 2. Web Component Integration
|
|
12
|
+
* - @customElement(): Register as custom element with options
|
|
13
|
+
* - Handles shadow DOM and attribute observation
|
|
14
|
+
* - Automatic lifecycle management for web components
|
|
15
|
+
*
|
|
16
|
+
* 3. Metadata Management
|
|
17
|
+
* - Custom Reflect implementation for decorator metadata
|
|
18
|
+
* - Stores event handler and update metadata for runtime use
|
|
19
|
+
* - Supports runtime reflection for dynamic behavior
|
|
20
|
+
* - Metadata keys for event bindings and updates
|
|
21
|
+
*
|
|
22
|
+
* Features:
|
|
23
|
+
* - Event handler decoration with options
|
|
24
|
+
* - State update method decoration
|
|
25
|
+
* - Web component registration
|
|
26
|
+
* - Metadata-driven event binding
|
|
27
|
+
* - Flexible decorator patterns
|
|
28
|
+
* - Runtime metadata access
|
|
29
|
+
*
|
|
30
|
+
* Type Safety Improvements (v3.35.1):
|
|
31
|
+
* - Enhanced decorator typing for better IDE support
|
|
32
|
+
* - Improved metadata key management
|
|
33
|
+
* - Better type inference for decorated methods
|
|
34
|
+
*
|
|
35
|
+
* Usage:
|
|
36
|
+
* ```ts
|
|
37
|
+
* @customElement('my-element')
|
|
38
|
+
* class MyComponent extends Component {
|
|
39
|
+
* @on('event', { global: true })
|
|
40
|
+
* handler(state, ...args) {
|
|
41
|
+
* // Handle event
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* @update('event', { render: true })
|
|
45
|
+
* updater(state, ...args) {
|
|
46
|
+
* // Update state
|
|
47
|
+
* return newState;
|
|
48
|
+
* }
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
// tslint:disable:no-invalid-this
|
|
53
|
+
export const Reflect = {
|
|
54
|
+
meta: new WeakMap(),
|
|
55
|
+
defineMetadata(metadataKey, metadataValue, target) {
|
|
56
|
+
if (!this.meta.has(target))
|
|
57
|
+
this.meta.set(target, {});
|
|
58
|
+
this.meta.get(target)[metadataKey] = metadataValue;
|
|
59
|
+
},
|
|
60
|
+
getMetadataKeys(target) {
|
|
61
|
+
target = Object.getPrototypeOf(target);
|
|
62
|
+
return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];
|
|
63
|
+
},
|
|
64
|
+
getMetadata(metadataKey, target) {
|
|
65
|
+
target = Object.getPrototypeOf(target);
|
|
66
|
+
return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
export function update(events, options = {}) {
|
|
70
|
+
return (target, key, descriptor) => {
|
|
71
|
+
const name = events ? events.toString() : key;
|
|
72
|
+
Reflect.defineMetadata(`apprun-update:${name}`, { name, key, options }, target);
|
|
73
|
+
return descriptor;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function on(events, options = {}) {
|
|
77
|
+
return function (target, key) {
|
|
78
|
+
const name = events ? events.toString() : key;
|
|
79
|
+
Reflect.defineMetadata(`apprun-update:${name}`, { name, key, options }, target);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function customElement(name, options) {
|
|
83
|
+
return function _customElement(constructor) {
|
|
84
|
+
webComponent(name, constructor, options);
|
|
85
|
+
return constructor;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../src/decorator.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG;IAErB,IAAI,EAAE,IAAI,OAAO,EAAE;IAEnB,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,MAAM;QACpB,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAED,WAAW,CAAC,WAAW,EAAE,MAAM;QAC7B,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;CACF,CAAA;AAED,MAAM,UAAU,MAAM,CAAa,MAAU,EAAE,UAAe,EAAE;IAC9D,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,UAAe,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,cAAc,CAAC,iBAAiB,IAAI,EAAE,EAC5C,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,UAAU,CAAC;IACpB,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,EAAE,CAAa,MAAU,EAAE,UAAe,EAAE;IAC1D,OAAO,UAAU,MAAW,EAAE,GAAW;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,cAAc,CAAC,iBAAiB,IAAI,EAAE,EAC5C,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAA8B;IACxE,OAAO,SAAS,cAAc,CAAwC,WAAc;QAClF,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,WAAW,CAAC;IACrB,CAAC,CAAA;AACH,CAAC"}
|