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