@frontiers-labs/argon 0.1.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/dist/parser.js ADDED
@@ -0,0 +1,524 @@
1
+ import ts from 'typescript';
2
+ class ParseError extends Error {
3
+ node;
4
+ constructor(msg, node) {
5
+ super(msg);
6
+ this.node = node;
7
+ }
8
+ }
9
+ // ── Entry point ────────────────────────────────────────────────────────────────
10
+ export function parseModule(source, fileName) {
11
+ const sf = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true);
12
+ const interfaces = [];
13
+ const dataConsts = [];
14
+ const functions = [];
15
+ let component = null;
16
+ for (const stmt of sf.statements) {
17
+ if (ts.isImportDeclaration(stmt))
18
+ continue;
19
+ if (ts.isInterfaceDeclaration(stmt)) {
20
+ interfaces.push(parseInterface(stmt, source));
21
+ continue;
22
+ }
23
+ if (ts.isVariableStatement(stmt)) {
24
+ for (const decl of stmt.declarationList.declarations) {
25
+ if (!decl.initializer)
26
+ continue;
27
+ // Only capture top-level object-literal consts (i.e. DATA maps)
28
+ if (ts.isObjectLiteralExpression(decl.initializer)) {
29
+ const name = decl.name.text;
30
+ dataConsts.push({ name, value: parseLiteral(decl.initializer) });
31
+ }
32
+ }
33
+ continue;
34
+ }
35
+ if (ts.isFunctionDeclaration(stmt) && stmt.name) {
36
+ functions.push(parseFunction(stmt, source));
37
+ continue;
38
+ }
39
+ if (ts.isClassDeclaration(stmt)) {
40
+ const tagName = extractComponentTagName(stmt);
41
+ if (tagName) {
42
+ component = parseClass(stmt, tagName, source, sf);
43
+ }
44
+ continue;
45
+ }
46
+ }
47
+ if (!component)
48
+ throw new ParseError('No @component decorated class found');
49
+ return { sourceFile: fileName, interfaces, dataConsts, functions, component };
50
+ }
51
+ // ── Decorator ──────────────────────────────────────────────────────────────────
52
+ function extractComponentTagName(cls) {
53
+ const decorators = ts.getDecorators(cls);
54
+ if (!decorators)
55
+ return null;
56
+ for (const dec of decorators) {
57
+ // @component('tag-name')
58
+ if (ts.isCallExpression(dec.expression) &&
59
+ ts.isIdentifier(dec.expression.expression) &&
60
+ dec.expression.expression.text === 'component' &&
61
+ dec.expression.arguments.length >= 1) {
62
+ const arg = dec.expression.arguments[0];
63
+ if (ts.isStringLiteral(arg))
64
+ return arg.text;
65
+ }
66
+ }
67
+ return null;
68
+ }
69
+ // ── Interface ──────────────────────────────────────────────────────────────────
70
+ function parseInterface(node, _src) {
71
+ const fields = [];
72
+ for (const member of node.members) {
73
+ if (ts.isPropertySignature(member) && member.name) {
74
+ fields.push({
75
+ name: member.name.text,
76
+ type: member.type ? parseType(member.type) : { kind: 'unknown' },
77
+ optional: !!member.questionToken,
78
+ });
79
+ }
80
+ }
81
+ return { name: node.name.text, fields };
82
+ }
83
+ // ── Data const ────────────────────────────────────────────────────────────────
84
+ function parseLiteral(node) {
85
+ if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) {
86
+ return { kind: 'string', value: node.text };
87
+ }
88
+ if (ts.isNumericLiteral(node)) {
89
+ return { kind: 'number', value: Number(node.text) };
90
+ }
91
+ if (node.kind === ts.SyntaxKind.TrueKeyword)
92
+ return { kind: 'boolean', value: true };
93
+ if (node.kind === ts.SyntaxKind.FalseKeyword)
94
+ return { kind: 'boolean', value: false };
95
+ // Negative number: -42
96
+ if (ts.isPrefixUnaryExpression(node) &&
97
+ node.operator === ts.SyntaxKind.MinusToken &&
98
+ ts.isNumericLiteral(node.operand)) {
99
+ return { kind: 'number', value: -Number(node.operand.text) };
100
+ }
101
+ if (ts.isArrayLiteralExpression(node)) {
102
+ return { kind: 'array', elements: node.elements.map(parseLiteral) };
103
+ }
104
+ if (ts.isObjectLiteralExpression(node)) {
105
+ const properties = [];
106
+ for (const prop of node.properties) {
107
+ if (ts.isPropertyAssignment(prop) && prop.initializer) {
108
+ const key = ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name)
109
+ ? prop.name.text
110
+ : '';
111
+ if (key)
112
+ properties.push({ key, value: parseLiteral(prop.initializer) });
113
+ }
114
+ }
115
+ return { kind: 'object', properties };
116
+ }
117
+ // Template literal used as a string value (e.g. inside object)
118
+ if (ts.isAsExpression(node))
119
+ return parseLiteral(node.expression);
120
+ throw new ParseError(`Unsupported literal node: ${ts.SyntaxKind[node.kind]}`, node);
121
+ }
122
+ // ── Type ───────────────────────────────────────────────────────────────────────
123
+ function parseType(node) {
124
+ if (ts.isTypeReferenceNode(node)) {
125
+ const name = ts.isIdentifier(node.typeName) ? node.typeName.text : '';
126
+ if (name === 'Record' && node.typeArguments?.length === 2) {
127
+ return { kind: 'record', key: parseType(node.typeArguments[0]), value: parseType(node.typeArguments[1]) };
128
+ }
129
+ if (name === 'Array' && node.typeArguments?.length === 1) {
130
+ return { kind: 'array', element: parseType(node.typeArguments[0]) };
131
+ }
132
+ return { kind: 'named', name };
133
+ }
134
+ if (ts.isArrayTypeNode(node)) {
135
+ return { kind: 'array', element: parseType(node.elementType) };
136
+ }
137
+ if (ts.isTupleTypeNode(node)) {
138
+ return { kind: 'tuple', elements: node.elements.map(e => parseType(e)) };
139
+ }
140
+ if (ts.isTypeLiteralNode(node)) {
141
+ const fields = [];
142
+ for (const m of node.members) {
143
+ if (ts.isPropertySignature(m) && m.name) {
144
+ fields.push({
145
+ name: m.name.text,
146
+ type: m.type ? parseType(m.type) : { kind: 'unknown' },
147
+ optional: !!m.questionToken,
148
+ });
149
+ }
150
+ }
151
+ return { kind: 'object', fields };
152
+ }
153
+ switch (node.kind) {
154
+ case ts.SyntaxKind.StringKeyword: return { kind: 'string' };
155
+ case ts.SyntaxKind.NumberKeyword: return { kind: 'number' };
156
+ case ts.SyntaxKind.BooleanKeyword: return { kind: 'boolean' };
157
+ case ts.SyntaxKind.VoidKeyword: return { kind: 'void' };
158
+ default: return { kind: 'unknown' };
159
+ }
160
+ }
161
+ // ── Function ───────────────────────────────────────────────────────────────────
162
+ function parseFunction(node, source) {
163
+ const name = node.name.text;
164
+ const params = (node.parameters ?? []).map(p => ({
165
+ name: ts.isIdentifier(p.name) ? p.name.text : '?',
166
+ type: p.type ? parseType(p.type) : { kind: 'unknown' },
167
+ }));
168
+ const returnType = node.type ? parseType(node.type) : { kind: 'unknown' };
169
+ const body = node.body
170
+ ? node.body.statements.flatMap(s => parseStatement(s))
171
+ : [];
172
+ const bodySource = (() => {
173
+ if (!node.body)
174
+ return '';
175
+ const bodyText = source.slice(node.body.pos, node.body.end);
176
+ const open = bodyText.indexOf('{');
177
+ const close = bodyText.lastIndexOf('}');
178
+ return open !== -1 ? bodyText.slice(open + 1, close).trim() : '';
179
+ })();
180
+ return { name, params, returnType, bodySource, body };
181
+ }
182
+ // ── Statements ─────────────────────────────────────────────────────────────────
183
+ function parseStatement(node) {
184
+ if (ts.isVariableStatement(node)) {
185
+ return node.declarationList.declarations.flatMap(decl => {
186
+ if (!decl.initializer)
187
+ return [];
188
+ const names = extractBindingNames(decl.name);
189
+ return [{ kind: 'const', names, init: parseExpr(decl.initializer) }];
190
+ });
191
+ }
192
+ if (ts.isReturnStatement(node) && node.expression) {
193
+ return [{ kind: 'return', value: parseExpr(node.expression) }];
194
+ }
195
+ if (ts.isExpressionStatement(node)) {
196
+ return [{ kind: 'expr_stmt', expr: parseExpr(node.expression) }];
197
+ }
198
+ return [];
199
+ }
200
+ function extractBindingNames(name) {
201
+ if (ts.isIdentifier(name))
202
+ return [name.text];
203
+ if (ts.isArrayBindingPattern(name)) {
204
+ return name.elements.flatMap(el => ts.isBindingElement(el) ? extractBindingNames(el.name) : []);
205
+ }
206
+ if (ts.isObjectBindingPattern(name)) {
207
+ return name.elements.flatMap(el => extractBindingNames(el.name));
208
+ }
209
+ return [];
210
+ }
211
+ // ── Expressions ────────────────────────────────────────────────────────────────
212
+ function parseExpr(node) {
213
+ // Parenthesized expression — unwrap
214
+ if (ts.isParenthesizedExpression(node))
215
+ return parseExpr(node.expression);
216
+ // Type assertion: expr as T — drop the cast
217
+ if (ts.isAsExpression(node))
218
+ return { kind: 'as_expr', expr: parseExpr(node.expression) };
219
+ // Literals
220
+ if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) {
221
+ return { kind: 'literal', value: { kind: 'string', value: node.text } };
222
+ }
223
+ if (ts.isNumericLiteral(node)) {
224
+ return { kind: 'literal', value: { kind: 'number', value: Number(node.text) } };
225
+ }
226
+ if (node.kind === ts.SyntaxKind.TrueKeyword) {
227
+ return { kind: 'literal', value: { kind: 'boolean', value: true } };
228
+ }
229
+ if (node.kind === ts.SyntaxKind.FalseKeyword) {
230
+ return { kind: 'literal', value: { kind: 'boolean', value: false } };
231
+ }
232
+ // -N
233
+ if (ts.isPrefixUnaryExpression(node) &&
234
+ node.operator === ts.SyntaxKind.MinusToken &&
235
+ ts.isNumericLiteral(node.operand)) {
236
+ return { kind: 'literal', value: { kind: 'number', value: -Number(node.operand.text) } };
237
+ }
238
+ // this.field
239
+ if (ts.isPropertyAccessExpression(node) &&
240
+ node.expression.kind === ts.SyntaxKind.ThisKeyword) {
241
+ return { kind: 'self_field', field: node.name.text };
242
+ }
243
+ // a.b
244
+ if (ts.isPropertyAccessExpression(node)) {
245
+ return {
246
+ kind: 'prop_access',
247
+ object: parseExpr(node.expression),
248
+ property: node.name.text,
249
+ };
250
+ }
251
+ // a[b]
252
+ if (ts.isElementAccessExpression(node)) {
253
+ return {
254
+ kind: 'index',
255
+ object: parseExpr(node.expression),
256
+ index: parseExpr(node.argumentExpression),
257
+ };
258
+ }
259
+ // Identifier
260
+ if (ts.isIdentifier(node))
261
+ return { kind: 'local_ref', name: node.text };
262
+ // Method call: receiver.method(args)
263
+ if (ts.isCallExpression(node) &&
264
+ ts.isPropertyAccessExpression(node.expression)) {
265
+ const pae = node.expression;
266
+ // Check for Math.min / Math.max as standalone calls
267
+ if (ts.isIdentifier(pae.expression) &&
268
+ pae.expression.text === 'Math') {
269
+ const callee = `Math.${pae.name.text}`;
270
+ return { kind: 'call', callee, args: node.arguments.map(parseExpr) };
271
+ }
272
+ return {
273
+ kind: 'method_call',
274
+ receiver: parseExpr(pae.expression),
275
+ method: pae.name.text,
276
+ args: node.arguments.map(parseExpr),
277
+ };
278
+ }
279
+ // Standalone call: fn(args)
280
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
281
+ return {
282
+ kind: 'call',
283
+ callee: node.expression.text,
284
+ args: node.arguments.map(parseExpr),
285
+ };
286
+ }
287
+ // Spread: ...x
288
+ if (ts.isSpreadElement(node)) {
289
+ return { kind: 'spread', expr: parseExpr(node.expression) };
290
+ }
291
+ // Binary: a OP b
292
+ if (ts.isBinaryExpression(node)) {
293
+ const op = node.operatorToken.kind;
294
+ if (op === ts.SyntaxKind.EqualsEqualsEqualsToken || op === ts.SyntaxKind.EqualsEqualsToken) {
295
+ return { kind: 'eq', left: parseExpr(node.left), right: parseExpr(node.right) };
296
+ }
297
+ const opStr = binaryOpStr(op);
298
+ return { kind: 'binary', op: opStr, left: parseExpr(node.left), right: parseExpr(node.right) };
299
+ }
300
+ // Ternary: a ? b : c
301
+ if (ts.isConditionalExpression(node)) {
302
+ return {
303
+ kind: 'ternary',
304
+ condition: parseExpr(node.condition),
305
+ then: parseExpr(node.whenTrue),
306
+ else: parseExpr(node.whenFalse),
307
+ };
308
+ }
309
+ // Arrow function: (params) => body
310
+ if (ts.isArrowFunction(node)) {
311
+ const params = node.parameters.map((p, i) => {
312
+ if (ts.isArrayBindingPattern(p.name)) {
313
+ const destructured = p.name.elements.flatMap(el => ts.isBindingElement(el) && ts.isIdentifier(el.name) ? [el.name.text] : []);
314
+ return { name: `_arg${i}`, destructured };
315
+ }
316
+ const name = ts.isIdentifier(p.name) ? p.name.text : `_arg${i}`;
317
+ return { name };
318
+ });
319
+ if (ts.isBlock(node.body)) {
320
+ const body = node.body.statements.flatMap(parseStatement);
321
+ return { kind: 'arrow_fn', params, body };
322
+ }
323
+ return { kind: 'arrow_fn', params, body: parseExpr(node.body) };
324
+ }
325
+ // Array literal
326
+ if (ts.isArrayLiteralExpression(node)) {
327
+ return { kind: 'array_literal', elements: node.elements.map(parseExpr) };
328
+ }
329
+ // Object literal
330
+ if (ts.isObjectLiteralExpression(node)) {
331
+ const properties = [];
332
+ for (const prop of node.properties) {
333
+ if (ts.isPropertyAssignment(prop) && prop.initializer) {
334
+ const key = ts.isIdentifier(prop.name) ? prop.name.text
335
+ : ts.isStringLiteral(prop.name) ? prop.name.text : '';
336
+ if (key)
337
+ properties.push({ key, value: parseExpr(prop.initializer) });
338
+ }
339
+ if (ts.isShorthandPropertyAssignment(prop)) {
340
+ const key = prop.name.text;
341
+ properties.push({ key, value: { kind: 'local_ref', name: key } });
342
+ }
343
+ }
344
+ return { kind: 'object_literal', properties };
345
+ }
346
+ // Template expression (non-tagged): `text ${expr} text`
347
+ if (ts.isTemplateExpression(node)) {
348
+ const parts = [{ kind: 'static', text: node.head.text }];
349
+ for (const span of node.templateSpans) {
350
+ parts.push({ kind: 'expr', expr: parseExpr(span.expression) });
351
+ parts.push({ kind: 'static', text: span.literal.text });
352
+ }
353
+ return { kind: 'template_str', parts };
354
+ }
355
+ throw new ParseError(`Unsupported expression: ${ts.SyntaxKind[node.kind]} — ` +
356
+ `add support in parseExpr() for this pattern`, node);
357
+ }
358
+ function binaryOpStr(kind) {
359
+ switch (kind) {
360
+ case ts.SyntaxKind.PlusToken: return '+';
361
+ case ts.SyntaxKind.MinusToken: return '-';
362
+ case ts.SyntaxKind.AsteriskToken: return '*';
363
+ case ts.SyntaxKind.SlashToken: return '/';
364
+ case ts.SyntaxKind.PercentToken: return '%';
365
+ case ts.SyntaxKind.BarBarToken: return '||';
366
+ case ts.SyntaxKind.AmpersandAmpersandToken: return '&&';
367
+ case ts.SyntaxKind.LessThanToken: return '<';
368
+ case ts.SyntaxKind.GreaterThanToken: return '>';
369
+ default: return '?';
370
+ }
371
+ }
372
+ // ── Class ──────────────────────────────────────────────────────────────────────
373
+ function parseClass(cls, tagName, source, sf) {
374
+ const className = cls.name?.text ?? 'UnknownComponent';
375
+ const props = [];
376
+ let styles = '';
377
+ let renderBindings = [];
378
+ let renderTemplate = [];
379
+ let renderBodySource = '';
380
+ let hydrateBodySource = '';
381
+ const privateMethods = [];
382
+ const printer = ts.createPrinter({ removeComments: false });
383
+ for (const member of cls.members) {
384
+ // Static readonly styles
385
+ if (ts.isPropertyDeclaration(member) &&
386
+ hasModifier(member, ts.SyntaxKind.StaticKeyword) &&
387
+ ts.isIdentifier(member.name) &&
388
+ member.name.text === 'styles' &&
389
+ member.initializer) {
390
+ styles = extractTemplateText(member.initializer);
391
+ continue;
392
+ }
393
+ // Private fields (#period, etc.) — skip; not needed in IR
394
+ if (ts.isPropertyDeclaration(member) && ts.isPrivateIdentifier(member.name)) {
395
+ continue;
396
+ }
397
+ // Instance props (public class fields with defaults)
398
+ if (ts.isPropertyDeclaration(member) &&
399
+ ts.isIdentifier(member.name) &&
400
+ !hasModifier(member, ts.SyntaxKind.StaticKeyword) &&
401
+ member.initializer) {
402
+ props.push({
403
+ name: member.name.text,
404
+ type: member.type ? parseType(member.type) : { kind: 'unknown' },
405
+ defaultValue: parseLiteral(member.initializer),
406
+ });
407
+ continue;
408
+ }
409
+ // render() method
410
+ if (ts.isMethodDeclaration(member) &&
411
+ ts.isIdentifier(member.name) &&
412
+ member.name.text === 'render' &&
413
+ member.body) {
414
+ const parsed = parseRenderBody(member.body, className);
415
+ renderBindings = parsed.bindings;
416
+ renderTemplate = parsed.template;
417
+ const renderText = source.slice(member.body.pos, member.body.end);
418
+ const rOpen = renderText.indexOf('{');
419
+ const rClose = renderText.lastIndexOf('}');
420
+ renderBodySource = rOpen !== -1 ? renderText.slice(rOpen + 1, rClose).trim() : '';
421
+ continue;
422
+ }
423
+ // hydrate() method
424
+ if (ts.isMethodDeclaration(member) &&
425
+ ts.isIdentifier(member.name) &&
426
+ member.name.text === 'hydrate' &&
427
+ member.body) {
428
+ const hydrateText = source.slice(member.body.pos, member.body.end);
429
+ const hyOpen = hydrateText.indexOf('{');
430
+ const hyClose = hydrateText.lastIndexOf('}');
431
+ hydrateBodySource = hyOpen !== -1 ? hydrateText.slice(hyOpen + 1, hyClose).trim() : '';
432
+ continue;
433
+ }
434
+ // Private methods (#name)
435
+ if (ts.isMethodDeclaration(member) &&
436
+ ts.isPrivateIdentifier(member.name)) {
437
+ const name = member.name.text.slice(1); // strip leading #
438
+ const methodSrc = printer.printNode(ts.EmitHint.Unspecified, member, sf);
439
+ privateMethods.push({ name, source: methodSrc });
440
+ continue;
441
+ }
442
+ }
443
+ return {
444
+ tagName,
445
+ className,
446
+ props,
447
+ styles,
448
+ renderBindings,
449
+ renderTemplate,
450
+ renderBodySource,
451
+ hydrateBodySource,
452
+ privateMethods,
453
+ };
454
+ }
455
+ function hasModifier(node, kind) {
456
+ return !!ts.getModifiers(node)?.some(m => m.kind === kind);
457
+ }
458
+ function extractTemplateText(node) {
459
+ // css`...` or just a template literal
460
+ if (ts.isTaggedTemplateExpression(node)) {
461
+ return extractTemplateText(node.template);
462
+ }
463
+ if (ts.isNoSubstitutionTemplateLiteral(node))
464
+ return node.text;
465
+ if (ts.isStringLiteral(node))
466
+ return node.text;
467
+ return '';
468
+ }
469
+ function parseRenderBody(body, componentClassName) {
470
+ const bindings = [];
471
+ let template = [];
472
+ for (const stmt of body.statements) {
473
+ if (ts.isVariableStatement(stmt)) {
474
+ for (const decl of stmt.declarationList.declarations) {
475
+ if (!decl.initializer)
476
+ continue;
477
+ const name = ts.isIdentifier(decl.name) ? decl.name.text : '';
478
+ if (name) {
479
+ bindings.push({ name, init: parseExpr(decl.initializer) });
480
+ }
481
+ }
482
+ continue;
483
+ }
484
+ if (ts.isReturnStatement(stmt) && stmt.expression) {
485
+ template = parseHtmlTemplate(stmt.expression, componentClassName);
486
+ }
487
+ }
488
+ return { bindings, template };
489
+ }
490
+ function parseHtmlTemplate(node, componentClassName) {
491
+ // html`...` tagged template
492
+ let tmpl;
493
+ if (ts.isTaggedTemplateExpression(node)) {
494
+ tmpl = node.template;
495
+ }
496
+ else if (ts.isTemplateExpression(node) || ts.isNoSubstitutionTemplateLiteral(node)) {
497
+ tmpl = node;
498
+ }
499
+ else {
500
+ throw new ParseError('render() must return an html`` tagged template literal');
501
+ }
502
+ if (ts.isNoSubstitutionTemplateLiteral(tmpl)) {
503
+ return [{ kind: 'static', text: tmpl.text }];
504
+ }
505
+ const nodes = [];
506
+ nodes.push({ kind: 'static', text: tmpl.head.text });
507
+ for (const span of tmpl.templateSpans) {
508
+ // Special-case: ClassName.styles → mark as a styles reference so codegen
509
+ // can inline the CSS constant rather than emit an expression
510
+ const expr = span.expression;
511
+ if (ts.isPropertyAccessExpression(expr) &&
512
+ ts.isIdentifier(expr.expression) &&
513
+ expr.expression.text === componentClassName &&
514
+ expr.name.text === 'styles') {
515
+ nodes.push({ kind: 'expr', expr: { kind: 'local_ref', name: '__styles__' } });
516
+ }
517
+ else {
518
+ nodes.push({ kind: 'expr', expr: parseExpr(span.expression) });
519
+ }
520
+ nodes.push({ kind: 'static', text: span.literal.text });
521
+ }
522
+ return nodes;
523
+ }
524
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Argon runtime — used when running components directly in a browser without
3
+ * compiling. Provides the @component decorator and html/css template tags.
4
+ *
5
+ * In production, the compiler outputs a standard CustomElement class and this
6
+ * file is not shipped.
7
+ */
8
+ export declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
9
+ export declare const css: typeof html;
10
+ type AnyConstructor = new (...args: unknown[]) => object;
11
+ export declare function component(tagName: string): <T extends AnyConstructor>(Target: T, _ctx?: ClassDecoratorContext) => T;
12
+ export {};
13
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAOhF;AAED,eAAO,MAAM,GAAG,aAAO,CAAC;AAExB,KAAK,cAAc,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;AAEzD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,IACtB,CAAC,SAAS,cAAc,EAAE,QAAQ,CAAC,EAAE,OAAO,qBAAqB,KAAG,CAAC,CAiCvF"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Argon runtime — used when running components directly in a browser without
3
+ * compiling. Provides the @component decorator and html/css template tags.
4
+ *
5
+ * In production, the compiler outputs a standard CustomElement class and this
6
+ * file is not shipped.
7
+ */
8
+ export function html(strings, ...values) {
9
+ let result = '';
10
+ for (let i = 0; i < strings.length; i++) {
11
+ result += strings[i];
12
+ if (i < values.length)
13
+ result += String(values[i] ?? '');
14
+ }
15
+ return result;
16
+ }
17
+ export const css = html;
18
+ export function component(tagName) {
19
+ return function (Target, _ctx) {
20
+ customElements.define(tagName, class extends HTMLElement {
21
+ connectedCallback() {
22
+ const impl = new Target();
23
+ // Initialise props from data-* attributes
24
+ for (const key of Object.keys(impl)) {
25
+ const val = this.dataset[key];
26
+ if (val !== undefined)
27
+ impl[key] = val;
28
+ }
29
+ // Bridge HTMLElement methods that hydrate() may call on `this`
30
+ impl['setAttribute'] = this.setAttribute.bind(this);
31
+ impl['getAttribute'] = this.getAttribute.bind(this);
32
+ impl['removeAttribute'] = this.removeAttribute.bind(this);
33
+ // Render into shadow DOM if not already populated by DSD
34
+ if (!this.shadowRoot) {
35
+ this.attachShadow({ mode: 'open' });
36
+ }
37
+ if (this.shadowRoot.innerHTML.trim() === '') {
38
+ const render = impl['render'];
39
+ this.shadowRoot.innerHTML = render?.call(impl) ?? '';
40
+ }
41
+ // Hydrate
42
+ const hydrate = impl['hydrate'];
43
+ hydrate?.call(impl, this.shadowRoot);
44
+ }
45
+ });
46
+ return Target;
47
+ };
48
+ }
49
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,IAAI,CAAC,OAA6B,EAAE,GAAG,MAAiB;IACtE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC;AAIxB,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,UAAoC,MAAS,EAAE,IAA4B;QAChF,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,KAAM,SAAQ,WAAW;YACtD,iBAAiB;gBACf,MAAM,IAAI,GAAG,IAAI,MAAM,EAA6B,CAAC;gBAErD,0CAA0C;gBAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,GAAG,GAAI,IAA8C,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzE,IAAI,GAAG,KAAK,SAAS;wBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACzC,CAAC;gBAED,+DAA+D;gBAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE1D,yDAAyD;gBACzD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,IAAI,CAAC,UAAW,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAA+B,CAAC;oBAC5D,IAAI,CAAC,UAAW,CAAC,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxD,CAAC;gBAED,UAAU;gBACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAA6C,CAAC;gBAC5E,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAW,CAAC,CAAC;YACxC,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}