@lokascript/core 1.1.0 → 1.1.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 (46) hide show
  1. package/dist/behaviors/index.js +1151 -0
  2. package/dist/behaviors/index.js.map +1 -0
  3. package/dist/behaviors/index.mjs +1141 -0
  4. package/dist/behaviors/index.mjs.map +1 -0
  5. package/dist/commands/index.js +9080 -0
  6. package/dist/commands/index.js.map +1 -0
  7. package/dist/commands/index.mjs +8922 -0
  8. package/dist/commands/index.mjs.map +1 -0
  9. package/dist/expressions/index.js +6484 -0
  10. package/dist/expressions/index.js.map +1 -0
  11. package/dist/expressions/index.mjs +6466 -0
  12. package/dist/expressions/index.mjs.map +1 -0
  13. package/dist/metadata.js +378 -0
  14. package/dist/metadata.js.map +1 -0
  15. package/dist/metadata.mjs +368 -0
  16. package/dist/metadata.mjs.map +1 -0
  17. package/dist/parser/full-parser.js +6408 -0
  18. package/dist/parser/full-parser.js.map +1 -0
  19. package/dist/parser/full-parser.mjs +6405 -0
  20. package/dist/parser/full-parser.mjs.map +1 -0
  21. package/dist/parser/regex-parser.js +412 -0
  22. package/dist/parser/regex-parser.js.map +1 -0
  23. package/dist/parser/regex-parser.mjs +409 -0
  24. package/dist/parser/regex-parser.mjs.map +1 -0
  25. package/dist/reference/index.js +602 -0
  26. package/dist/reference/index.js.map +1 -0
  27. package/dist/reference/index.mjs +593 -0
  28. package/dist/reference/index.mjs.map +1 -0
  29. package/dist/registry/browser-types.js +81 -0
  30. package/dist/registry/browser-types.js.map +1 -0
  31. package/dist/registry/browser-types.mjs +76 -0
  32. package/dist/registry/browser-types.mjs.map +1 -0
  33. package/dist/registry/environment.js +36 -0
  34. package/dist/registry/environment.js.map +1 -0
  35. package/dist/registry/environment.mjs +30 -0
  36. package/dist/registry/environment.mjs.map +1 -0
  37. package/dist/registry/index.js +7111 -0
  38. package/dist/registry/index.js.map +1 -0
  39. package/dist/registry/index.mjs +7087 -0
  40. package/dist/registry/index.mjs.map +1 -0
  41. package/dist/registry/universal-types.js +91 -0
  42. package/dist/registry/universal-types.js.map +1 -0
  43. package/dist/registry/universal-types.mjs +86 -0
  44. package/dist/registry/universal-types.mjs.map +1 -0
  45. package/package.json +2 -2
  46. package/src/expressions/properties/impl/index.test.ts +3 -2
@@ -0,0 +1,409 @@
1
+ function parseLite(code) {
2
+ const trimmed = code.trim();
3
+ const onMatch = trimmed.match(/^on\s+(\w+)(?:\s+from\s+([^\s]+))?\s+(.+)$/i);
4
+ if (onMatch) {
5
+ return {
6
+ event: onMatch[1],
7
+ filter: onMatch[2],
8
+ commands: parseCommands(onMatch[3]),
9
+ };
10
+ }
11
+ const everyMatch = trimmed.match(/^every\s+(\d+)(ms|s)?\s+(.+)$/i);
12
+ if (everyMatch) {
13
+ const ms = everyMatch[2] === 's' ? parseInt(everyMatch[1]) * 1000 : parseInt(everyMatch[1]);
14
+ return {
15
+ event: `interval:${ms}`,
16
+ commands: parseCommands(everyMatch[3]),
17
+ };
18
+ }
19
+ const initMatch = trimmed.match(/^init\s+(.+)$/i);
20
+ if (initMatch) {
21
+ return {
22
+ event: 'init',
23
+ commands: parseCommands(initMatch[1]),
24
+ };
25
+ }
26
+ return parseCommands(trimmed);
27
+ }
28
+ function parseCommands(code) {
29
+ const parts = code.split(/\s+(?:then|and)\s+/i);
30
+ return parts.map(parseCommand).filter(Boolean);
31
+ }
32
+ function parseCommand(code) {
33
+ const trimmed = code.trim();
34
+ if (!trimmed)
35
+ return null;
36
+ let match = trimmed.match(/^toggle\s+(\.\w+|\w+)(?:\s+on\s+(.+))?$/i);
37
+ if (match) {
38
+ return { name: 'toggle', args: [match[1]], target: match[2] };
39
+ }
40
+ match = trimmed.match(/^add\s+(\.\w+|\w+)(?:\s+to\s+(.+))?$/i);
41
+ if (match) {
42
+ return { name: 'add', args: [match[1]], target: match[2] };
43
+ }
44
+ match = trimmed.match(/^remove\s+(\.\w+)(?:\s+from\s+(.+))?$/i);
45
+ if (match) {
46
+ return { name: 'remove', args: [match[1]], target: match[2] };
47
+ }
48
+ match = trimmed.match(/^remove\s+(.+)$/i);
49
+ if (match) {
50
+ return { name: 'remove', args: [], target: match[1] };
51
+ }
52
+ match = trimmed.match(/^put\s+(?:"([^"]+)"|'([^']+)'|(\S+))\s+(into|before|after)\s+(.+)$/i);
53
+ if (match) {
54
+ const content = match[1] || match[2] || match[3];
55
+ return { name: 'put', args: [content], modifier: match[4], target: match[5] };
56
+ }
57
+ match = trimmed.match(/^set\s+(.+?)\s+to\s+(.+)$/i);
58
+ if (match) {
59
+ return { name: 'set', args: [match[1], match[2]] };
60
+ }
61
+ match = trimmed.match(/^log\s+(.+)$/i);
62
+ if (match) {
63
+ return { name: 'log', args: [match[1]] };
64
+ }
65
+ match = trimmed.match(/^send\s+(\w+)(?:\s+to\s+(.+))?$/i);
66
+ if (match) {
67
+ return { name: 'send', args: [match[1]], target: match[2] };
68
+ }
69
+ match = trimmed.match(/^wait\s+(\d+)(ms|s)?$/i);
70
+ if (match) {
71
+ const ms = match[2] === 's' ? parseInt(match[1]) * 1000 : parseInt(match[1]);
72
+ return { name: 'wait', args: [ms.toString()] };
73
+ }
74
+ match = trimmed.match(/^(if|unless)\s+(.+?)\s+(toggle|add|remove|put|set|log|send|wait)\s+(.+)$/i);
75
+ if (match) {
76
+ const innerCmd = parseCommand(`${match[3]} ${match[4]}`);
77
+ if (innerCmd) {
78
+ innerCmd.modifier = match[1].toLowerCase();
79
+ innerCmd.args.unshift(match[2]);
80
+ return innerCmd;
81
+ }
82
+ }
83
+ match = trimmed.match(/^(show|hide)(?:\s+(.+))?$/i);
84
+ if (match) {
85
+ const target = match[2];
86
+ return match[1].toLowerCase() === 'show'
87
+ ? { name: 'remove', args: ['.hidden'], target }
88
+ : { name: 'add', args: ['.hidden'], target };
89
+ }
90
+ const parts = trimmed.split(/\s+/);
91
+ if (parts.length > 0) {
92
+ return { name: parts[0], args: parts.slice(1) };
93
+ }
94
+ return null;
95
+ }
96
+ function resolveTarget(target, me) {
97
+ if (!target)
98
+ return me;
99
+ const t = target.trim();
100
+ if (t === 'me')
101
+ return me;
102
+ if (t === 'body')
103
+ return document.body;
104
+ if (t.startsWith('#') || t.startsWith('.') || t.startsWith('[')) {
105
+ const elements = document.querySelectorAll(t);
106
+ return elements.length === 1 ? elements[0] : Array.from(elements);
107
+ }
108
+ if (/^\w+$/.test(t) && document.getElementById(t)) {
109
+ return document.getElementById(t);
110
+ }
111
+ return me;
112
+ }
113
+ function getClassName(arg) {
114
+ return arg.startsWith('.') ? arg.slice(1) : arg;
115
+ }
116
+ async function executeCommand(cmd, me, locals) {
117
+ const target = resolveTarget(cmd.target, me);
118
+ const elements = Array.isArray(target) ? target : target ? [target] : [me];
119
+ switch (cmd.name) {
120
+ case 'toggle': {
121
+ const className = getClassName(cmd.args[0]);
122
+ for (const el of elements) {
123
+ el.classList.toggle(className);
124
+ }
125
+ return elements.length === 1 ? elements[0] : elements;
126
+ }
127
+ case 'add': {
128
+ const className = getClassName(cmd.args[0]);
129
+ for (const el of elements) {
130
+ el.classList.add(className);
131
+ }
132
+ return elements.length === 1 ? elements[0] : elements;
133
+ }
134
+ case 'remove': {
135
+ if (cmd.args[0]) {
136
+ const className = getClassName(cmd.args[0]);
137
+ for (const el of elements) {
138
+ el.classList.remove(className);
139
+ }
140
+ }
141
+ else {
142
+ for (const el of elements) {
143
+ el.remove();
144
+ }
145
+ }
146
+ return null;
147
+ }
148
+ case 'put': {
149
+ const content = evaluateValue(cmd.args[0], me, locals);
150
+ for (const el of elements) {
151
+ switch (cmd.modifier?.toLowerCase()) {
152
+ case 'into':
153
+ el.innerHTML = String(content);
154
+ break;
155
+ case 'before':
156
+ el.insertAdjacentHTML('beforebegin', String(content));
157
+ break;
158
+ case 'after':
159
+ el.insertAdjacentHTML('afterend', String(content));
160
+ break;
161
+ default:
162
+ el.innerHTML = String(content);
163
+ }
164
+ }
165
+ return elements.length === 1 ? elements[0] : elements;
166
+ }
167
+ case 'set': {
168
+ const [targetExpr, valueExpr] = cmd.args;
169
+ const value = evaluateValue(valueExpr, me, locals);
170
+ if (targetExpr.startsWith(':')) {
171
+ locals.set(targetExpr.slice(1), value);
172
+ return value;
173
+ }
174
+ const propMatch = targetExpr.match(/^(.+?)(?:'s|\.)\s*(\w+)$/);
175
+ if (propMatch) {
176
+ const obj = resolveTarget(propMatch[1], me);
177
+ if (obj) {
178
+ obj[propMatch[2]] = value;
179
+ return obj;
180
+ }
181
+ }
182
+ return value;
183
+ }
184
+ case 'log': {
185
+ const value = evaluateValue(cmd.args.join(' '), me, locals);
186
+ console.log(value);
187
+ return value;
188
+ }
189
+ case 'send': {
190
+ const eventName = cmd.args[0];
191
+ const event = new CustomEvent(eventName, { bubbles: true });
192
+ for (const el of elements) {
193
+ el.dispatchEvent(event);
194
+ }
195
+ return event;
196
+ }
197
+ case 'wait': {
198
+ const ms = parseInt(cmd.args[0]) || 0;
199
+ await new Promise(resolve => setTimeout(resolve, ms));
200
+ return ms;
201
+ }
202
+ default:
203
+ console.warn(`Unknown command: ${cmd.name}`);
204
+ return null;
205
+ }
206
+ }
207
+ function evaluateValue(expr, me, locals) {
208
+ if (!expr)
209
+ return undefined;
210
+ const e = expr.trim();
211
+ if ((e.startsWith('"') && e.endsWith('"')) || (e.startsWith("'") && e.endsWith("'"))) {
212
+ return e.slice(1, -1);
213
+ }
214
+ if (/^-?\d+(\.\d+)?$/.test(e)) {
215
+ return parseFloat(e);
216
+ }
217
+ if (e === 'true')
218
+ return true;
219
+ if (e === 'false')
220
+ return false;
221
+ if (e === 'null')
222
+ return null;
223
+ if (e.startsWith(':')) {
224
+ return locals.get(e.slice(1));
225
+ }
226
+ if (e === 'me')
227
+ return me;
228
+ if (e === 'my')
229
+ return me;
230
+ if (e === 'body')
231
+ return document.body;
232
+ const propMatch = e.match(/^(me|my)\.(\w+)$/);
233
+ if (propMatch) {
234
+ return me[propMatch[2]];
235
+ }
236
+ return e;
237
+ }
238
+ async function executeParsed(parsed, me, locals = new Map()) {
239
+ if (Array.isArray(parsed)) {
240
+ let result;
241
+ for (const cmd of parsed) {
242
+ if (cmd.modifier === 'if' || cmd.modifier === 'unless') {
243
+ const condition = evaluateCondition(cmd.args[0], me, locals);
244
+ const shouldRun = cmd.modifier === 'if' ? condition : !condition;
245
+ if (!shouldRun)
246
+ continue;
247
+ cmd.args.shift();
248
+ }
249
+ result = await executeCommand(cmd, me, locals);
250
+ }
251
+ return result;
252
+ }
253
+ const handler = parsed;
254
+ const targetEl = handler.filter ? document.querySelector(handler.filter) : me;
255
+ const eventName = handler.event;
256
+ if (eventName.startsWith('interval:')) {
257
+ const ms = parseInt(eventName.split(':')[1]);
258
+ setInterval(async () => {
259
+ const handlerLocals = new Map(locals);
260
+ for (const cmd of handler.commands) {
261
+ await executeCommand(cmd, me, handlerLocals);
262
+ }
263
+ }, ms);
264
+ return me;
265
+ }
266
+ if (eventName === 'init') {
267
+ const handlerLocals = new Map(locals);
268
+ for (const cmd of handler.commands) {
269
+ await executeCommand(cmd, me, handlerLocals);
270
+ }
271
+ return me;
272
+ }
273
+ if (targetEl) {
274
+ targetEl.addEventListener(eventName, async (event) => {
275
+ const handlerLocals = new Map(locals);
276
+ handlerLocals.set('event', event);
277
+ for (const cmd of handler.commands) {
278
+ await executeCommand(cmd, me, handlerLocals);
279
+ }
280
+ });
281
+ }
282
+ return me;
283
+ }
284
+ function evaluateCondition(expr, me, locals) {
285
+ const e = expr.trim();
286
+ const hasMatch = e.match(/^(me|my)\s+has\s+\.(\w+)$/i);
287
+ if (hasMatch) {
288
+ return me.classList.contains(hasMatch[2]);
289
+ }
290
+ const propMatch = e.match(/^(me|my)\.(\w+)$/i);
291
+ if (propMatch) {
292
+ return Boolean(me[propMatch[2]]);
293
+ }
294
+ if (e.startsWith(':')) {
295
+ return Boolean(locals.get(e.slice(1)));
296
+ }
297
+ const value = evaluateValue(e, me, locals);
298
+ return Boolean(value);
299
+ }
300
+ function processElements(root = document) {
301
+ const elements = root.querySelectorAll('[_]');
302
+ for (const el of elements) {
303
+ const code = el.getAttribute('_');
304
+ if (code) {
305
+ try {
306
+ const parsed = parseLite(code);
307
+ executeParsed(parsed, el);
308
+ }
309
+ catch (err) {
310
+ console.error('HyperFixi Lite error:', err, 'Code:', code);
311
+ }
312
+ }
313
+ }
314
+ }
315
+ const api = {
316
+ version: '1.0.0-lite',
317
+ parse: parseLite,
318
+ execute: async (code, element) => {
319
+ const me = element || document.body;
320
+ const parsed = parseLite(code);
321
+ return executeParsed(parsed, me);
322
+ },
323
+ init: processElements,
324
+ process: processElements,
325
+ commands: ['add', 'remove', 'toggle', 'put', 'set', 'log', 'send', 'wait'],
326
+ };
327
+ if (typeof window !== 'undefined') {
328
+ window.hyperfixi = api;
329
+ if (document.readyState === 'loading') {
330
+ document.addEventListener('DOMContentLoaded', () => processElements());
331
+ }
332
+ else {
333
+ processElements();
334
+ }
335
+ }
336
+
337
+ class RegexParserImpl {
338
+ constructor() {
339
+ this.name = 'regex';
340
+ this.supportedCommands = [
341
+ 'add',
342
+ 'remove',
343
+ 'toggle',
344
+ 'put',
345
+ 'set',
346
+ 'log',
347
+ 'send',
348
+ 'wait',
349
+ ];
350
+ }
351
+ parse(code) {
352
+ const result = api.parse(code);
353
+ if ('event' in result) {
354
+ return {
355
+ type: 'eventHandler',
356
+ event: result.event,
357
+ filter: result.filter,
358
+ commands: result.commands.map(cmd => this.convertCommand(cmd)),
359
+ };
360
+ }
361
+ if (Array.isArray(result)) {
362
+ if (result.length === 1) {
363
+ return this.convertCommand(result[0]);
364
+ }
365
+ return {
366
+ type: 'sequence',
367
+ commands: result.map(cmd => this.convertCommand(cmd)),
368
+ };
369
+ }
370
+ return this.convertCommand(result);
371
+ }
372
+ convertCommand(cmd) {
373
+ return {
374
+ type: 'command',
375
+ name: cmd.name,
376
+ args: cmd.args.map(arg => ({
377
+ type: 'literal',
378
+ value: arg,
379
+ })),
380
+ ...(cmd.target && {
381
+ target: {
382
+ type: 'selector',
383
+ value: cmd.target,
384
+ },
385
+ }),
386
+ };
387
+ }
388
+ parseCommands(code) {
389
+ const result = this.parse(code);
390
+ if (result.type === 'sequence' && 'commands' in result) {
391
+ return result.commands;
392
+ }
393
+ return [result];
394
+ }
395
+ supports(syntax) {
396
+ const firstWord = syntax.trim().split(/\s+/)[0]?.toLowerCase();
397
+ if (firstWord === 'on' || firstWord === 'every' || firstWord === 'init') {
398
+ return true;
399
+ }
400
+ return this.supportedCommands.includes(firstWord);
401
+ }
402
+ }
403
+ const regexParser = new RegexParserImpl();
404
+ function createRegexParser() {
405
+ return new RegexParserImpl();
406
+ }
407
+
408
+ export { createRegexParser, regexParser };
409
+ //# sourceMappingURL=regex-parser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-parser.mjs","sources":["../../../src/compatibility/browser-bundle-lite.ts","../../../src/parser/regex-parser.ts"],"sourcesContent":[null,null],"names":["liteApi"],"mappings":"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"}