@hymarkx/compiler 0.0.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 (88) hide show
  1. package/LICENSE-APACHE +202 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +23 -0
  4. package/dist/analyze/index.d.ts +75 -0
  5. package/dist/analyze/index.d.ts.map +1 -0
  6. package/dist/analyze/index.js +455 -0
  7. package/dist/analyze/index.js.map +1 -0
  8. package/dist/components/authored.d.ts +30 -0
  9. package/dist/components/authored.d.ts.map +1 -0
  10. package/dist/components/authored.js +293 -0
  11. package/dist/components/authored.js.map +1 -0
  12. package/dist/components/builtins.d.ts +6 -0
  13. package/dist/components/builtins.d.ts.map +1 -0
  14. package/dist/components/builtins.js +205 -0
  15. package/dist/components/builtins.js.map +1 -0
  16. package/dist/components/styles.d.ts +3 -0
  17. package/dist/components/styles.d.ts.map +1 -0
  18. package/dist/components/styles.js +99 -0
  19. package/dist/components/styles.js.map +1 -0
  20. package/dist/components/types.d.ts +77 -0
  21. package/dist/components/types.d.ts.map +1 -0
  22. package/dist/components/types.js +2 -0
  23. package/dist/components/types.js.map +1 -0
  24. package/dist/components/validate.d.ts +14 -0
  25. package/dist/components/validate.d.ts.map +1 -0
  26. package/dist/components/validate.js +347 -0
  27. package/dist/components/validate.js.map +1 -0
  28. package/dist/diagnostic-origin.d.ts +11 -0
  29. package/dist/diagnostic-origin.d.ts.map +1 -0
  30. package/dist/diagnostic-origin.js +12 -0
  31. package/dist/diagnostic-origin.js.map +1 -0
  32. package/dist/diagnostics/render.d.ts +13 -0
  33. package/dist/diagnostics/render.d.ts.map +1 -0
  34. package/dist/diagnostics/render.js +92 -0
  35. package/dist/diagnostics/render.js.map +1 -0
  36. package/dist/emit/backend.d.ts +13 -0
  37. package/dist/emit/backend.d.ts.map +1 -0
  38. package/dist/emit/backend.js +2 -0
  39. package/dist/emit/backend.js.map +1 -0
  40. package/dist/emit/escape.d.ts +5 -0
  41. package/dist/emit/escape.d.ts.map +1 -0
  42. package/dist/emit/escape.js +52 -0
  43. package/dist/emit/escape.js.map +1 -0
  44. package/dist/emit/html.d.ts +16 -0
  45. package/dist/emit/html.d.ts.map +1 -0
  46. package/dist/emit/html.js +528 -0
  47. package/dist/emit/html.js.map +1 -0
  48. package/dist/emit/sanitize.d.ts +19 -0
  49. package/dist/emit/sanitize.d.ts.map +1 -0
  50. package/dist/emit/sanitize.js +383 -0
  51. package/dist/emit/sanitize.js.map +1 -0
  52. package/dist/events.d.ts +7 -0
  53. package/dist/events.d.ts.map +1 -0
  54. package/dist/events.js +16 -0
  55. package/dist/events.js.map +1 -0
  56. package/dist/expression.d.ts +133 -0
  57. package/dist/expression.d.ts.map +1 -0
  58. package/dist/expression.js +1248 -0
  59. package/dist/expression.js.map +1 -0
  60. package/dist/frontmatter.d.ts +15 -0
  61. package/dist/frontmatter.d.ts.map +1 -0
  62. package/dist/frontmatter.js +196 -0
  63. package/dist/frontmatter.js.map +1 -0
  64. package/dist/index.d.ts +18 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +92 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/islands.d.ts +23 -0
  69. package/dist/islands.d.ts.map +1 -0
  70. package/dist/islands.js +76 -0
  71. package/dist/islands.js.map +1 -0
  72. package/dist/runtime.d.ts +14 -0
  73. package/dist/runtime.d.ts.map +1 -0
  74. package/dist/runtime.js +487 -0
  75. package/dist/runtime.js.map +1 -0
  76. package/dist/styles.d.ts +33 -0
  77. package/dist/styles.d.ts.map +1 -0
  78. package/dist/styles.js +370 -0
  79. package/dist/styles.js.map +1 -0
  80. package/dist/suggestions.d.ts +3 -0
  81. package/dist/suggestions.d.ts.map +1 -0
  82. package/dist/suggestions.js +29 -0
  83. package/dist/suggestions.js.map +1 -0
  84. package/dist/types.d.ts +59 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +2 -0
  87. package/dist/types.js.map +1 -0
  88. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/emit/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Diagnostic, Span } from '@hymarkx/ast';
2
+ /** Auditable raw-HTML element and attribute allowlist for document trust mode. */
3
+ export declare const HTML_ALLOWLIST: Readonly<Record<string, readonly string[]>>;
4
+ /** Result of sanitizing one raw-HTML syntax-tree node. */
5
+ export interface SanitizeResult {
6
+ readonly html: string;
7
+ readonly diagnostics: readonly Diagnostic[];
8
+ }
9
+ /** Adds valueless attributes to app-mode raw HTML start tags without changing raw text. */
10
+ export declare function addAttributesToRawHtml(value: string, attributeNames: readonly string[]): string;
11
+ /** Applies universal component attributes to the first emitted element. */
12
+ export declare function addUniversalAttributesToFirstElement(value: string, attributes: Readonly<Record<string, unknown>>): string | undefined;
13
+ /** Reports whether a URL uses a document-mode scheme or a relative reference. */
14
+ export declare function isAllowedDocumentUrl(value: string): boolean;
15
+ /** Reports phase-5 script, style, and event constructs forbidden in authored components. */
16
+ export declare function componentHtmlDiagnostics(value: string, span: Span): readonly Diagnostic[];
17
+ /** Sanitizes a raw-HTML node and reports every trust-boundary violation. */
18
+ export declare function sanitizeRawHtml(value: string, span: Span): SanitizeResult;
19
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/emit/sanitize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGpD,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAiCtE,CAAA;AAwCD,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;CAC5C;AAwHD,2FAA2F;AAC3F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAsC/F;AAUD,2EAA2E;AAC3E,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC5C,MAAM,GAAG,SAAS,CAwCpB;AAmBD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAkB3D;AAUD,4FAA4F;AAC5F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,UAAU,EAAE,CA2DzF;AA8CD,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,cAAc,CAuCzE"}
@@ -0,0 +1,383 @@
1
+ import { createDiagnostic } from '@hymarkx/ast';
2
+ import { encodeUrl, escapeHtml } from './escape.js';
3
+ /** Auditable raw-HTML element and attribute allowlist for document trust mode. */
4
+ export const HTML_ALLOWLIST = {
5
+ '*': ['class', 'id', 'title'],
6
+ a: ['href', 'title'],
7
+ b: [],
8
+ blockquote: [],
9
+ br: [],
10
+ code: ['class'],
11
+ del: [],
12
+ em: [],
13
+ h1: [],
14
+ h2: [],
15
+ h3: [],
16
+ h4: [],
17
+ h5: [],
18
+ h6: [],
19
+ hr: [],
20
+ i: [],
21
+ img: ['alt', 'height', 'src', 'title', 'width'],
22
+ li: [],
23
+ ol: ['start'],
24
+ p: [],
25
+ pre: [],
26
+ s: [],
27
+ strong: [],
28
+ table: [],
29
+ tbody: [],
30
+ td: ['align', 'colspan', 'rowspan'],
31
+ tfoot: [],
32
+ th: ['align', 'colspan', 'rowspan'],
33
+ thead: [],
34
+ tr: [],
35
+ u: [],
36
+ ul: [],
37
+ };
38
+ const PROHIBITED_ELEMENTS = new Set(['script', 'style', 'iframe', 'object', 'embed', 'form']);
39
+ const VOID_ELEMENTS = new Set(['br', 'hr', 'img']);
40
+ const URL_ATTRIBUTES = new Set([
41
+ 'action',
42
+ 'data',
43
+ 'formaction',
44
+ 'href',
45
+ 'poster',
46
+ 'src',
47
+ 'xlink:href',
48
+ ]);
49
+ const RAW_TEXT_ELEMENTS = new Set([
50
+ 'iframe',
51
+ 'noembed',
52
+ 'noframes',
53
+ 'plaintext',
54
+ 'script',
55
+ 'style',
56
+ 'textarea',
57
+ 'title',
58
+ 'xmp',
59
+ ]);
60
+ function findTagEnd(value, start) {
61
+ let quote = '';
62
+ for (let index = start + 1; index < value.length; index += 1) {
63
+ const character = value[index];
64
+ if (quote !== '') {
65
+ if (character === quote) {
66
+ quote = '';
67
+ }
68
+ }
69
+ else if (character === '"' || character === "'") {
70
+ quote = character;
71
+ }
72
+ else if (character === '>') {
73
+ return index + 1;
74
+ }
75
+ }
76
+ return value.length;
77
+ }
78
+ function parseAttributes(raw, offset) {
79
+ const attributes = [];
80
+ let index = offset;
81
+ while (index < raw.length) {
82
+ const attributeStart = index;
83
+ while (/\s/.test(raw[index] ?? '')) {
84
+ index += 1;
85
+ }
86
+ if (index >= raw.length || raw[index] === '>' || raw[index] === '/') {
87
+ break;
88
+ }
89
+ const nameStart = index;
90
+ while (index < raw.length && !/[\s"'=<>`/]/.test(raw[index] ?? '')) {
91
+ index += 1;
92
+ }
93
+ if (index === nameStart) {
94
+ index += 1;
95
+ continue;
96
+ }
97
+ const name = raw.slice(nameStart, index).toLowerCase();
98
+ while (/\s/.test(raw[index] ?? '')) {
99
+ index += 1;
100
+ }
101
+ if (raw[index] !== '=') {
102
+ attributes.push({ name, value: null, start: attributeStart, end: index });
103
+ continue;
104
+ }
105
+ index += 1;
106
+ while (/\s/.test(raw[index] ?? '')) {
107
+ index += 1;
108
+ }
109
+ const quote = raw[index];
110
+ if (quote === '"' || quote === "'") {
111
+ index += 1;
112
+ const valueStart = index;
113
+ while (index < raw.length && raw[index] !== quote) {
114
+ index += 1;
115
+ }
116
+ const value = raw.slice(valueStart, index);
117
+ if (raw[index] === quote) {
118
+ index += 1;
119
+ }
120
+ attributes.push({ name, value, start: attributeStart, end: index });
121
+ continue;
122
+ }
123
+ const valueStart = index;
124
+ while (index < raw.length && !/[\s>]/.test(raw[index] ?? '')) {
125
+ index += 1;
126
+ }
127
+ attributes.push({
128
+ name,
129
+ value: raw.slice(valueStart, index),
130
+ start: attributeStart,
131
+ end: index,
132
+ });
133
+ }
134
+ return attributes;
135
+ }
136
+ function scanTags(value) {
137
+ const tags = [];
138
+ let searchFrom = 0;
139
+ while (searchFrom < value.length) {
140
+ const start = value.indexOf('<', searchFrom);
141
+ if (start === -1) {
142
+ break;
143
+ }
144
+ const end = findTagEnd(value, start);
145
+ const raw = value.slice(start, end);
146
+ const match = /^<\s*(\/?)\s*([A-Za-z][A-Za-z0-9-]*)/.exec(raw);
147
+ if (match === null) {
148
+ if (/^<\s*[!?]/.test(raw)) {
149
+ tags.push({ start, end, closing: false, name: null, attributes: [] });
150
+ }
151
+ searchFrom = Math.max(end, start + 1);
152
+ continue;
153
+ }
154
+ const name = match[2]?.toLowerCase();
155
+ if (name !== undefined) {
156
+ tags.push({
157
+ start,
158
+ end,
159
+ closing: match[1] === '/',
160
+ name,
161
+ attributes: match[1] === '/' ? [] : parseAttributes(raw, match[0].length),
162
+ });
163
+ }
164
+ searchFrom = Math.max(end, start + 1);
165
+ }
166
+ return tags;
167
+ }
168
+ /** Adds valueless attributes to app-mode raw HTML start tags without changing raw text. */
169
+ export function addAttributesToRawHtml(value, attributeNames) {
170
+ if (attributeNames.length === 0) {
171
+ return value;
172
+ }
173
+ const attributes = attributeNames.map((name) => ` ${name}`).join('');
174
+ const tags = scanTags(value);
175
+ let output = '';
176
+ let cursor = 0;
177
+ let rawTextElement;
178
+ for (const tag of tags) {
179
+ if (rawTextElement !== undefined) {
180
+ if (tag.closing && tag.name === rawTextElement) {
181
+ rawTextElement = undefined;
182
+ }
183
+ continue;
184
+ }
185
+ if (tag.closing || tag.name === null) {
186
+ continue;
187
+ }
188
+ const raw = value.slice(tag.start, tag.end);
189
+ let insertion = raw.length - 1;
190
+ while (insertion > 0 && /\s/.test(raw[insertion - 1] ?? '')) {
191
+ insertion -= 1;
192
+ }
193
+ if (raw[insertion - 1] === '/') {
194
+ insertion -= 1;
195
+ }
196
+ output += value.slice(cursor, tag.start);
197
+ output += `${raw.slice(0, insertion)}${attributes}${raw.slice(insertion)}`;
198
+ cursor = tag.end;
199
+ if (RAW_TEXT_ELEMENTS.has(tag.name)) {
200
+ rawTextElement = tag.name;
201
+ }
202
+ }
203
+ return `${output}${value.slice(cursor)}`;
204
+ }
205
+ function insertionOffset(raw) {
206
+ let insertion = raw.length - 1;
207
+ while (insertion > 0 && /\s/.test(raw[insertion - 1] ?? '')) {
208
+ insertion -= 1;
209
+ }
210
+ return raw[insertion - 1] === '/' ? insertion - 1 : insertion;
211
+ }
212
+ /** Applies universal component attributes to the first emitted element. */
213
+ export function addUniversalAttributesToFirstElement(value, attributes) {
214
+ const tag = scanTags(value).find((candidate) => !candidate.closing && candidate.name !== null);
215
+ if (tag === undefined) {
216
+ return undefined;
217
+ }
218
+ const authorClass = typeof attributes.class === 'string' ? attributes.class : undefined;
219
+ const existingClasses = tag.attributes
220
+ .filter((attribute) => attribute.name === 'class' && attribute.value !== null)
221
+ .flatMap((attribute) => (attribute.value ?? '').split(/\s+/));
222
+ const mergedClasses = [...existingClasses, ...(authorClass?.split(/\s+/) ?? [])].filter((name, index, all) => name !== '' && all.indexOf(name) === index);
223
+ const replacements = {
224
+ ...(mergedClasses.length === 0 ? {} : { class: mergedClasses.join(' ') }),
225
+ ...(typeof attributes.id === 'string' ? { id: attributes.id } : {}),
226
+ ...(typeof attributes.title === 'string' ? { title: attributes.title } : {}),
227
+ };
228
+ if (Object.keys(replacements).length === 0) {
229
+ return value;
230
+ }
231
+ const raw = value.slice(tag.start, tag.end);
232
+ const replacedNames = new Set(Object.keys(replacements));
233
+ let cleaned = '';
234
+ let cursor = 0;
235
+ for (const attribute of tag.attributes) {
236
+ if (!replacedNames.has(attribute.name)) {
237
+ continue;
238
+ }
239
+ cleaned += raw.slice(cursor, attribute.start);
240
+ cursor = attribute.end;
241
+ }
242
+ cleaned += raw.slice(cursor);
243
+ const insertion = insertionOffset(cleaned);
244
+ const serialized = Object.entries(replacements)
245
+ .map(([name, replacement]) => ` ${name}="${escapeHtml(replacement)}"`)
246
+ .join('');
247
+ const opening = `${cleaned.slice(0, insertion)}${serialized}${cleaned.slice(insertion)}`;
248
+ return `${value.slice(0, tag.start)}${opening}${value.slice(tag.end)}`;
249
+ }
250
+ function decodeSchemeEntities(value) {
251
+ return value
252
+ .replace(/&#(?:x([0-9a-f]+)|(\d+));?/gi, (entity, hexadecimal, decimal) => {
253
+ const parsed = Number.parseInt(hexadecimal === undefined ? decimal : hexadecimal, hexadecimal === undefined ? 10 : 16);
254
+ if (!Number.isFinite(parsed) || parsed <= 0 || parsed > 0x10ffff) {
255
+ return '\ufffd';
256
+ }
257
+ return String.fromCodePoint(parsed);
258
+ })
259
+ .replace(/&colon;?/gi, ':')
260
+ .replace(/&tab;?/gi, '\t')
261
+ .replace(/&newline;?/gi, '\n');
262
+ }
263
+ /** Reports whether a URL uses a document-mode scheme or a relative reference. */
264
+ export function isAllowedDocumentUrl(value) {
265
+ let normalized = '';
266
+ for (const character of decodeSchemeEntities(value)) {
267
+ const codePoint = character.codePointAt(0) ?? 0;
268
+ if (codePoint > 0x20 && codePoint !== 0x7f) {
269
+ normalized += character;
270
+ }
271
+ }
272
+ const colon = normalized.indexOf(':');
273
+ if (colon === -1) {
274
+ return true;
275
+ }
276
+ const scheme = normalized.slice(0, colon).toLowerCase();
277
+ if (!/^[a-z][a-z0-9+.-]*$/.test(scheme)) {
278
+ return true;
279
+ }
280
+ return scheme === 'http' || scheme === 'https' || scheme === 'mailto';
281
+ }
282
+ function diagnostic(code, message, span) {
283
+ return createDiagnostic({ code, severity: 'error', message, span });
284
+ }
285
+ /** Reports phase-5 script, style, and event constructs forbidden in authored components. */
286
+ export function componentHtmlDiagnostics(value, span) {
287
+ if (/<\s*script\b/i.test(value)) {
288
+ return [
289
+ diagnostic('HMX3001', 'Authored components cannot contain script markup at this phase.', span),
290
+ ];
291
+ }
292
+ const tags = scanTags(value);
293
+ const prohibited = tags.find((tag) => tag.name !== null && (tag.name === 'script' || tag.name === 'style'));
294
+ if (prohibited?.name !== undefined && prohibited.name !== null) {
295
+ return [
296
+ diagnostic('HMX3001', `Authored components cannot contain <${prohibited.name}> elements at this phase.`, span),
297
+ ];
298
+ }
299
+ for (const tag of tags) {
300
+ if (tag.attributes.some((attribute) => attribute.name.startsWith('on'))) {
301
+ return [
302
+ diagnostic('HMX3002', 'Authored components cannot contain event-handler attributes at this phase.', span),
303
+ ];
304
+ }
305
+ if (tag.attributes.some((attribute) => attribute.name === 'srcdoc')) {
306
+ return [
307
+ diagnostic('HMX3001', 'Authored components cannot contain embedded srcdoc markup at this phase.', span),
308
+ ];
309
+ }
310
+ const unsafeUrl = tag.attributes.find((attribute) => URL_ATTRIBUTES.has(attribute.name) &&
311
+ attribute.value !== null &&
312
+ !isAllowedDocumentUrl(attribute.value));
313
+ if (unsafeUrl !== undefined) {
314
+ return [
315
+ diagnostic('HMX3003', `URL in ${unsafeUrl.name} uses a scheme that is not allowed in authored components.`, span),
316
+ ];
317
+ }
318
+ }
319
+ return [];
320
+ }
321
+ function sanitizeTag(tag, span, diagnostics) {
322
+ const name = tag.name;
323
+ if (name === null || !Object.hasOwn(HTML_ALLOWLIST, name)) {
324
+ return '';
325
+ }
326
+ if (tag.closing) {
327
+ return VOID_ELEMENTS.has(name) ? '' : `</${name}>`;
328
+ }
329
+ const allowed = new Set([...(HTML_ALLOWLIST['*'] ?? []), ...(HTML_ALLOWLIST[name] ?? [])]);
330
+ const seen = new Set();
331
+ let output = `<${name}`;
332
+ for (const attribute of tag.attributes) {
333
+ if (seen.has(attribute.name) || !allowed.has(attribute.name)) {
334
+ continue;
335
+ }
336
+ seen.add(attribute.name);
337
+ if (URL_ATTRIBUTES.has(attribute.name) &&
338
+ attribute.value !== null &&
339
+ !isAllowedDocumentUrl(attribute.value)) {
340
+ diagnostics.push(diagnostic('HMX3003', `URL in ${attribute.name} uses a scheme that is not allowed in document mode.`, span));
341
+ continue;
342
+ }
343
+ const value = attribute.value === null
344
+ ? ''
345
+ : URL_ATTRIBUTES.has(attribute.name)
346
+ ? encodeUrl(attribute.value)
347
+ : attribute.value;
348
+ output += ` ${attribute.name}="${escapeHtml(value)}"`;
349
+ }
350
+ return VOID_ELEMENTS.has(name) ? `${output} />` : `${output}>`;
351
+ }
352
+ /** Sanitizes a raw-HTML node and reports every trust-boundary violation. */
353
+ export function sanitizeRawHtml(value, span) {
354
+ const tags = scanTags(value);
355
+ const prohibited = tags.find((tag) => tag.name !== null && PROHIBITED_ELEMENTS.has(tag.name));
356
+ if (prohibited?.name !== undefined && prohibited.name !== null) {
357
+ return {
358
+ html: '',
359
+ diagnostics: [
360
+ diagnostic('HMX3001', `Raw HTML contains the prohibited <${prohibited.name}> element and was removed.`, span),
361
+ ],
362
+ };
363
+ }
364
+ if (tags.some((tag) => tag.attributes.some((attribute) => attribute.name.startsWith('on')))) {
365
+ return {
366
+ html: '',
367
+ diagnostics: [
368
+ diagnostic('HMX3002', 'Raw HTML contains an event-handler attribute and was removed.', span),
369
+ ],
370
+ };
371
+ }
372
+ const diagnostics = [];
373
+ let html = '';
374
+ let cursor = 0;
375
+ for (const tag of tags) {
376
+ html += value.slice(cursor, tag.start);
377
+ html += sanitizeTag(tag, span, diagnostics);
378
+ cursor = tag.end;
379
+ }
380
+ html += value.slice(cursor);
381
+ return { html, diagnostics };
382
+ }
383
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/emit/sanitize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Event names accepted by HMX handler attributes. */
2
+ export declare const eventNames: readonly ['click', 'input', 'change', 'submit', 'focus', 'blur', 'keydown'];
3
+ /** Browser event name represented by one allowlisted HMX handler attribute. */
4
+ export type EventName = (typeof eventNames)[number];
5
+ /** Returns whether an attribute is one of the seven allowlisted event handlers. */
6
+ export declare function isAllowedEventAttribute(name: string): boolean;
7
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,eAAO,MAAM,UAAU,YACrB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,SAAS,CACD,CAAA;AAEV,+EAA+E;AAC/E,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAInD,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D"}
package/dist/events.js ADDED
@@ -0,0 +1,16 @@
1
+ /** Event names accepted by HMX handler attributes. */
2
+ export const eventNames = [
3
+ 'click',
4
+ 'input',
5
+ 'change',
6
+ 'submit',
7
+ 'focus',
8
+ 'blur',
9
+ 'keydown',
10
+ ];
11
+ const allowedAttributes = new Set(eventNames.map((name) => `on-${name}`));
12
+ /** Returns whether an attribute is one of the seven allowlisted event handlers. */
13
+ export function isAllowedEventAttribute(name) {
14
+ return allowedAttributes.has(name);
15
+ }
16
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;CACD,CAAA;AAKV,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAA;AAEzE,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,133 @@
1
+ import type { Diagnostic } from '@hymarkx/ast';
2
+ import type { FrontmatterValue } from './types.js';
3
+ /** A value that can be produced by the restricted expression evaluator. */
4
+ export type ExpressionValue = string | number | boolean | null | readonly ExpressionValue[] | {
5
+ readonly [key: string]: ExpressionValue;
6
+ };
7
+ /** Compact, JSON-serializable instruction interpreted by the browser runtime. */
8
+ export type ExpressionInstruction = readonly ['l', string | number | boolean | null] | readonly ['i', string] | readonly ['i', number, string] | readonly ['u', UnaryExpression['operator'], ExpressionInstruction] | readonly ['b', BinaryExpression['operator'], ExpressionInstruction, ExpressionInstruction] | readonly ['c', ExpressionInstruction, ExpressionInstruction, ExpressionInstruction] | readonly ['m', ExpressionInstruction, string | ExpressionInstruction, 0 | 1, 0 | 1] | readonly ['r', readonly ExpressionInstruction[]] | readonly ['o', readonly (readonly [string, ExpressionInstruction])[]] | readonly ['a', string, AssignmentOperator, ExpressionInstruction];
9
+ /** Source context used to turn expression-relative offsets into document spans. */
10
+ export interface ExpressionSourceContext {
11
+ readonly documentSource: string;
12
+ readonly startOffset: number;
13
+ /** Names considered for HMX2040 suggestions when scope contains only resolved values. */
14
+ readonly identifierNames?: readonly string[];
15
+ /** Check every syntactic read, including initially unreachable reactive branches. */
16
+ readonly strictScope?: boolean;
17
+ }
18
+ /** Total result of parsing and evaluating one restricted expression. */
19
+ export type ExpressionEvaluation = {
20
+ readonly ok: true;
21
+ readonly value: ExpressionValue;
22
+ readonly instruction: ExpressionInstruction;
23
+ readonly identifiers: readonly string[];
24
+ readonly diagnostics: readonly [];
25
+ } | {
26
+ readonly ok: false;
27
+ readonly diagnostics: readonly [Diagnostic];
28
+ };
29
+ /** Result of compiling one event-handler expression without executing it. */
30
+ export type HandlerExpressionCompilation = {
31
+ readonly ok: true;
32
+ readonly instruction: ExpressionInstruction;
33
+ readonly identifiers: readonly string[];
34
+ readonly assignments: readonly string[];
35
+ readonly diagnostics: readonly [];
36
+ } | {
37
+ readonly ok: false;
38
+ readonly diagnostics: readonly [Diagnostic];
39
+ };
40
+ type PrimitiveValue = string | number | boolean | null;
41
+ interface LiteralExpression {
42
+ readonly type: 'literal';
43
+ readonly value: PrimitiveValue;
44
+ readonly start: number;
45
+ readonly end: number;
46
+ }
47
+ interface IdentifierExpression {
48
+ readonly type: 'identifier';
49
+ readonly name: string;
50
+ readonly start: number;
51
+ readonly end: number;
52
+ }
53
+ interface UnaryExpression {
54
+ readonly type: 'unary';
55
+ readonly operator: '!' | '-' | '+';
56
+ readonly argument: Expression;
57
+ readonly start: number;
58
+ readonly end: number;
59
+ }
60
+ interface BinaryExpression {
61
+ readonly type: 'binary';
62
+ readonly operator: '+' | '-' | '*' | '/' | '%' | '==' | '!=' | '<' | '<=' | '>' | '>=' | '&&' | '||' | '??';
63
+ readonly left: Expression;
64
+ readonly right: Expression;
65
+ readonly operatorStart: number;
66
+ readonly start: number;
67
+ readonly end: number;
68
+ }
69
+ interface ConditionalExpression {
70
+ readonly type: 'conditional';
71
+ readonly test: Expression;
72
+ readonly consequent: Expression;
73
+ readonly alternate: Expression;
74
+ readonly start: number;
75
+ readonly end: number;
76
+ }
77
+ interface MemberExpression {
78
+ readonly type: 'member';
79
+ readonly object: Expression;
80
+ readonly property: string | Expression;
81
+ readonly computed: boolean;
82
+ readonly optional: boolean;
83
+ readonly propertyStart: number;
84
+ readonly propertyEnd: number;
85
+ readonly start: number;
86
+ readonly end: number;
87
+ }
88
+ interface ArrayExpression {
89
+ readonly type: 'array';
90
+ readonly elements: readonly Expression[];
91
+ readonly start: number;
92
+ readonly end: number;
93
+ }
94
+ interface ObjectProperty {
95
+ readonly key: string;
96
+ readonly value: Expression;
97
+ }
98
+ interface ObjectExpression {
99
+ readonly type: 'object';
100
+ readonly properties: readonly ObjectProperty[];
101
+ readonly start: number;
102
+ readonly end: number;
103
+ }
104
+ interface GroupExpression {
105
+ readonly type: 'group';
106
+ readonly expression: Expression;
107
+ readonly start: number;
108
+ readonly end: number;
109
+ }
110
+ type AssignmentOperator = '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&&=' | '||=' | '??=';
111
+ interface AssignmentExpression {
112
+ readonly type: 'assignment';
113
+ readonly name: string;
114
+ readonly operator: AssignmentOperator;
115
+ readonly value: Expression;
116
+ readonly start: number;
117
+ readonly end: number;
118
+ }
119
+ type Expression = LiteralExpression | IdentifierExpression | UnaryExpression | BinaryExpression | ConditionalExpression | MemberExpression | ArrayExpression | ObjectExpression | GroupExpression | AssignmentExpression;
120
+ /**
121
+ * Parses and evaluates one expression without host evaluation. Every input returns either
122
+ * a value or one source-located diagnostic; no expression failure escapes as an exception.
123
+ */
124
+ export declare function evaluateExpression(source: string, scope: FrontmatterValue, context?: ExpressionSourceContext): ExpressionEvaluation;
125
+ /**
126
+ * Parses one event handler through the shared expression parser and restricts every read and
127
+ * assignment to the component-local state names supplied by the compiler.
128
+ */
129
+ export declare function compileHandlerExpression(source: string, stateNames: ReadonlySet<string>, context?: ExpressionSourceContext): HandlerExpressionCompilation;
130
+ /** Returns whether a declaration name can be referenced by the expression grammar. */
131
+ export declare function isExpressionIdentifier(name: string): boolean;
132
+ export {};
133
+ //# sourceMappingURL=expression.d.ts.map