flint-compiler 4.0.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.
@@ -0,0 +1,566 @@
1
+ // Flint Compiler — JSX Transformer v4
2
+ // Transforms JSX AST into Flint runtime calls with fine-grained reactivity
3
+ // Supports source maps, auto-imports, and simplified syntax
4
+ // ─── Source Map Generator ────────────────────────────────────────
5
+ class SourceMapGenerator {
6
+ mappings = [];
7
+ names = [];
8
+ sources = [];
9
+ sourcesContent = [];
10
+ constructor(source, filename) {
11
+ if (source) {
12
+ this.sources.push(filename || 'input.jsx');
13
+ this.sourcesContent.push(source);
14
+ }
15
+ }
16
+ addMapping(generatedLine, generatedColumn, originalLine, originalColumn, sourceIndex = 0) {
17
+ this.mappings.push([
18
+ generatedColumn,
19
+ sourceIndex,
20
+ originalLine - 1,
21
+ originalColumn,
22
+ ]);
23
+ }
24
+ generate() {
25
+ return {
26
+ version: 3,
27
+ file: 'output.js',
28
+ sources: this.sources,
29
+ sourcesContent: this.sourcesContent,
30
+ names: this.names,
31
+ mappings: this.encodeMappings(),
32
+ };
33
+ }
34
+ encodeMappings() {
35
+ if (this.mappings.length === 0)
36
+ return '';
37
+ const lines = [];
38
+ let lastGeneratedColumn = 0;
39
+ let lastSourceIndex = 0;
40
+ let lastOriginalLine = 0;
41
+ let lastOriginalColumn = 0;
42
+ for (const mapping of this.mappings) {
43
+ const [generatedCol, sourceIdx, origLine, origCol] = mapping;
44
+ const encoded = this.encodeVLQ(generatedCol - lastGeneratedColumn);
45
+ encoded.push(...this.encodeVLQ(sourceIdx - lastSourceIndex));
46
+ encoded.push(...this.encodeVLQ(origLine - lastOriginalLine));
47
+ encoded.push(...this.encodeVLQ(origCol - lastOriginalColumn));
48
+ lines.push(encoded);
49
+ lastGeneratedColumn = generatedCol;
50
+ lastSourceIndex = sourceIdx;
51
+ lastOriginalLine = origLine;
52
+ lastOriginalColumn = origCol;
53
+ }
54
+ return lines.map(line => line.join('')).join(';');
55
+ }
56
+ encodeVLQ(value) {
57
+ const result = [];
58
+ let vlq = (value < 0 ? (-value << 1) | 1 : value << 1);
59
+ while (vlq > 31) {
60
+ result.push(this.encodeBase64(vlq & 31 | 32));
61
+ vlq >>= 5;
62
+ }
63
+ result.push(this.encodeBase64(vlq & 31));
64
+ return result;
65
+ }
66
+ encodeBase64(value) {
67
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
68
+ return chars[value] || '';
69
+ }
70
+ }
71
+ function walk(node, parent, ctx) {
72
+ if (!node || typeof node !== 'object')
73
+ return;
74
+ if (node.type) {
75
+ const skip = ctx.enter(node, parent);
76
+ if (skip === false)
77
+ return;
78
+ const keys = getNodeKeys(node);
79
+ for (const key of keys) {
80
+ const child = node[key];
81
+ if (Array.isArray(child)) {
82
+ for (const item of child) {
83
+ if (item && typeof item === 'object' && item.type) {
84
+ walk(item, node, ctx);
85
+ }
86
+ }
87
+ }
88
+ else if (child && typeof child === 'object' && child.type) {
89
+ walk(child, node, ctx);
90
+ }
91
+ }
92
+ ctx.leave(node, parent);
93
+ }
94
+ }
95
+ function getNodeKeys(node) {
96
+ const keys = [];
97
+ if (node.type) {
98
+ switch (node.type) {
99
+ case 'Program':
100
+ case 'BlockStatement':
101
+ keys.push('body');
102
+ break;
103
+ case 'ExpressionStatement':
104
+ keys.push('expression');
105
+ break;
106
+ case 'CallExpression':
107
+ keys.push('callee', 'arguments');
108
+ break;
109
+ case 'MemberExpression':
110
+ keys.push('object', 'property');
111
+ break;
112
+ case 'BinaryExpression':
113
+ case 'LogicalExpression':
114
+ keys.push('left', 'right');
115
+ break;
116
+ case 'UnaryExpression':
117
+ case 'UpdateExpression':
118
+ keys.push('argument');
119
+ break;
120
+ case 'AssignmentExpression':
121
+ keys.push('left', 'right');
122
+ break;
123
+ case 'ConditionalExpression':
124
+ keys.push('test', 'consequent', 'alternate');
125
+ break;
126
+ case 'ArrowFunctionExpression':
127
+ case 'FunctionExpression':
128
+ keys.push('params', 'body');
129
+ break;
130
+ case 'FunctionDeclaration':
131
+ keys.push('id', 'params', 'body');
132
+ break;
133
+ case 'VariableDeclaration':
134
+ keys.push('declarations');
135
+ break;
136
+ case 'VariableDeclarator':
137
+ keys.push('id', 'init');
138
+ break;
139
+ case 'Identifier':
140
+ case 'Literal':
141
+ case 'ThisExpression':
142
+ case 'Super':
143
+ break;
144
+ case 'Property':
145
+ keys.push('key', 'value');
146
+ break;
147
+ case 'ObjectExpression':
148
+ keys.push('properties');
149
+ break;
150
+ case 'ArrayExpression':
151
+ keys.push('elements');
152
+ break;
153
+ case 'SpreadElement':
154
+ keys.push('argument');
155
+ break;
156
+ case 'TemplateLiteral':
157
+ keys.push('quasis', 'expressions');
158
+ break;
159
+ case 'TemplateElement':
160
+ break;
161
+ case 'TaggedTemplateExpression':
162
+ keys.push('tag', 'quasi');
163
+ break;
164
+ case 'SequenceExpression':
165
+ keys.push('expressions');
166
+ break;
167
+ case 'ImportDeclaration':
168
+ keys.push('specifiers', 'source');
169
+ break;
170
+ case 'ImportSpecifier':
171
+ case 'ImportDefaultSpecifier':
172
+ case 'ImportNamespaceSpecifier':
173
+ keys.push('imported', 'local');
174
+ break;
175
+ case 'ExportNamedDeclaration':
176
+ keys.push('declaration', 'specifiers', 'source');
177
+ break;
178
+ case 'ExportDefaultDeclaration':
179
+ keys.push('declaration');
180
+ break;
181
+ case 'ExportAllDeclaration':
182
+ keys.push('source');
183
+ break;
184
+ case 'ReturnStatement':
185
+ keys.push('argument');
186
+ break;
187
+ case 'IfStatement':
188
+ keys.push('test', 'consequent', 'alternate');
189
+ break;
190
+ case 'ForStatement':
191
+ keys.push('init', 'test', 'update', 'body');
192
+ break;
193
+ case 'WhileStatement':
194
+ case 'DoWhileStatement':
195
+ keys.push('test', 'body');
196
+ break;
197
+ case 'ForInStatement':
198
+ case 'ForOfStatement':
199
+ keys.push('left', 'right', 'body');
200
+ break;
201
+ case 'TryStatement':
202
+ keys.push('block', 'handler', 'finalizer');
203
+ break;
204
+ case 'CatchClause':
205
+ keys.push('param', 'body');
206
+ break;
207
+ case 'ThrowStatement':
208
+ keys.push('argument');
209
+ break;
210
+ case 'NewExpression':
211
+ keys.push('callee', 'arguments');
212
+ break;
213
+ case 'AwaitExpression':
214
+ case 'YieldExpression':
215
+ keys.push('argument');
216
+ break;
217
+ case 'ClassDeclaration':
218
+ case 'ClassExpression':
219
+ keys.push('id', 'superClass', 'body');
220
+ break;
221
+ case 'ClassBody':
222
+ keys.push('body');
223
+ break;
224
+ case 'MethodDefinition':
225
+ case 'PropertyDefinition':
226
+ keys.push('key', 'value');
227
+ break;
228
+ // JSX types
229
+ case 'JSXElement':
230
+ keys.push('openingElement', 'children', 'closingElement');
231
+ break;
232
+ case 'JSXOpeningElement':
233
+ keys.push('name', 'attributes');
234
+ break;
235
+ case 'JSXClosingElement':
236
+ keys.push('name');
237
+ break;
238
+ case 'JSXAttribute':
239
+ keys.push('name', 'value');
240
+ break;
241
+ case 'JSXSpreadAttribute':
242
+ keys.push('argument');
243
+ break;
244
+ case 'JSXIdentifier':
245
+ break;
246
+ case 'JSXMemberExpression':
247
+ keys.push('object', 'property');
248
+ break;
249
+ case 'JSXText':
250
+ break;
251
+ case 'JSXExpressionContainer':
252
+ keys.push('expression');
253
+ break;
254
+ case 'JSXFragment':
255
+ keys.push('openingFragment', 'children', 'closingFragment');
256
+ break;
257
+ case 'JSXOpeningFragment':
258
+ case 'JSXClosingFragment':
259
+ break;
260
+ case 'JSXEmptyExpression':
261
+ break;
262
+ }
263
+ }
264
+ return keys;
265
+ }
266
+ // ─── Code Generator ─────────────────────────────────────────────
267
+ function generate(node, code) {
268
+ if (!node || typeof node !== 'object')
269
+ return '';
270
+ if (!node.type)
271
+ return '';
272
+ switch (node.type) {
273
+ case 'JSXElement':
274
+ return generateJSXElement(node, code);
275
+ case 'JSXFragment':
276
+ return generateJSXFragment(node, code);
277
+ default:
278
+ return code.slice(node.start ?? 0, node.end ?? code.length);
279
+ }
280
+ }
281
+ function isLikelyReactive(exprNode, code) {
282
+ if (!exprNode || typeof exprNode !== 'object')
283
+ return false;
284
+ if (exprNode.type === 'CallExpression')
285
+ return true;
286
+ if (exprNode.type === 'MemberExpression')
287
+ return true;
288
+ if (exprNode.type === 'Identifier')
289
+ return true;
290
+ if (exprNode.type === 'BinaryExpression' || exprNode.type === 'LogicalExpression') {
291
+ return isLikelyReactive(exprNode.left, code) || isLikelyReactive(exprNode.right, code);
292
+ }
293
+ if (exprNode.type === 'ConditionalExpression') {
294
+ return isLikelyReactive(exprNode.consequent, code) || isLikelyReactive(exprNode.alternate, code);
295
+ }
296
+ if (exprNode.type === 'TemplateLiteral') {
297
+ return exprNode.expressions.some((e) => isLikelyReactive(e, code));
298
+ }
299
+ if (exprNode.type === 'ArrowFunctionExpression' || exprNode.type === 'FunctionExpression') {
300
+ return false;
301
+ }
302
+ if (exprNode.type === 'AssignmentExpression')
303
+ return true;
304
+ return false;
305
+ }
306
+ function generateJSXElement(node, code) {
307
+ const tag = getJSXTagName(node.openingElement.name, code);
308
+ const isComponent = isJSXComponent(node.openingElement.name);
309
+ const { staticProps, reactiveCalls } = separateAttributes(node.openingElement.attributes, code, isComponent);
310
+ const children = generateJSXChildren(node.children, code);
311
+ const attrs = staticProps.length > 0
312
+ ? `{ ${staticProps.join(', ')} }`
313
+ : 'null';
314
+ let result = `h(${tag}, ${attrs}`;
315
+ if (children) {
316
+ result += `, ${children}`;
317
+ }
318
+ result += ')';
319
+ // For DOM elements, add reactive tracking calls after h()
320
+ if (!isComponent && reactiveCalls.length > 0) {
321
+ result = `(() => { const __el = ${result}; ${reactiveCalls.join('; ')}; return __el })()`;
322
+ }
323
+ return result;
324
+ }
325
+ function separateAttributes(attributes, code, isComponent) {
326
+ const staticProps = [];
327
+ const reactiveCalls = [];
328
+ if (!attributes || attributes.length === 0) {
329
+ return { staticProps, reactiveCalls };
330
+ }
331
+ for (const attr of attributes) {
332
+ if (attr.type === 'JSXSpreadAttribute') {
333
+ const arg = generate(attr.argument, code);
334
+ staticProps.push(`...(${arg} || {})`);
335
+ }
336
+ else if (attr.type === 'JSXAttribute') {
337
+ const name = attr.name.name;
338
+ if (attr.value === null) {
339
+ staticProps.push(`${name}: true`);
340
+ }
341
+ else if (attr.value.type === 'Literal') {
342
+ staticProps.push(`${name}: ${JSON.stringify(attr.value.value)}`);
343
+ }
344
+ else if (attr.value.type === 'JSXExpressionContainer') {
345
+ const expr = generate(attr.value.expression, code);
346
+ const isReactive = isLikelyReactive(attr.value.expression, code);
347
+ if (isComponent) {
348
+ staticProps.push(`${name}: ${expr}`);
349
+ }
350
+ else if (isReactive) {
351
+ if (/^on[A-Z]/.test(name)) {
352
+ const eventName = name.slice(2).toLowerCase();
353
+ reactiveCalls.push(`trackEvent(__el, '${eventName}', () => ${expr})`);
354
+ }
355
+ else {
356
+ reactiveCalls.push(`trackAttribute(__el, '${name}', () => ${expr})`);
357
+ }
358
+ }
359
+ else {
360
+ staticProps.push(`${name}: ${expr}`);
361
+ }
362
+ }
363
+ }
364
+ }
365
+ return { staticProps, reactiveCalls };
366
+ }
367
+ function generateJSXFragment(node, code) {
368
+ const children = generateJSXChildren(node.children, code);
369
+ let result = 'h(null';
370
+ if (children) {
371
+ result += `, ${children}`;
372
+ }
373
+ result += ')';
374
+ return result;
375
+ }
376
+ function getJSXTagName(name, code) {
377
+ if (name.type === 'JSXIdentifier') {
378
+ return isJSXComponent(name) ? name.name : `"${name.name}"`;
379
+ }
380
+ if (name.type === 'JSXMemberExpression') {
381
+ return `${getJSXTagName(name.object, code)}.${name.property.name}`;
382
+ }
383
+ return code.slice(name.start, name.end);
384
+ }
385
+ function isJSXComponent(name) {
386
+ if (name.type === 'JSXIdentifier') {
387
+ return name.name[0] === name.name[0].toUpperCase();
388
+ }
389
+ return name.type === 'JSXMemberExpression';
390
+ }
391
+ function generateJSXChildren(children, code) {
392
+ if (!children || children.length === 0)
393
+ return '';
394
+ const parts = [];
395
+ for (const child of children) {
396
+ if (child.type === 'JSXText') {
397
+ const text = child.value.replace(/\n\s*/g, ' ').trim();
398
+ if (text) {
399
+ parts.push(JSON.stringify(text));
400
+ }
401
+ }
402
+ else if (child.type === 'JSXExpressionContainer') {
403
+ if (child.expression.type !== 'JSXEmptyExpression') {
404
+ const expr = generate(child.expression, code);
405
+ if (isLikelyReactive(child.expression, code)) {
406
+ parts.push(`track(() => ${expr})`);
407
+ }
408
+ else {
409
+ parts.push(expr);
410
+ }
411
+ }
412
+ }
413
+ else if (child.type === 'JSXElement' || child.type === 'JSXFragment') {
414
+ parts.push(generate(child, code));
415
+ }
416
+ }
417
+ if (parts.length === 0)
418
+ return '';
419
+ if (parts.length === 1)
420
+ return parts[0];
421
+ return `[${parts.join(', ')}]`;
422
+ }
423
+ // ─── Auto-Import Detection ──────────────────────────────────────
424
+ const FLINT_SYMBOLS = [
425
+ 'state', 'computed', 'effect', 'watch', 'batch', 'flushSync',
426
+ 'reactive', 'model', 'bind', 'createRef', 'shallowRef', 'derive',
427
+ 'signals', 'poll', 'watchDebounced', 'watchThrottled',
428
+ 'Show', 'For', 'ForEach', 'Index', 'Switch', 'Match',
429
+ 'Portal', 'Suspense', 'ErrorBoundary', 'Activity', 'KeepAlive',
430
+ 'memo', 'lazy', 'createMemo', 'createEffect', 'trackPromise',
431
+ 'ref', 'useSignal', 'cn', 'createStyles', 'cx',
432
+ 'onMount', 'onUpdate', 'onDestroy',
433
+ 'render', 'h', 'track', 'trackAttribute', 'trackEvent',
434
+ 'createRouter', 'navigate', 'Link', 'Outlet',
435
+ 'createForm', 'validators',
436
+ 'useTransition', 'useDeferredValue', 'useId',
437
+ 'useOptimistic', 'useOptimisticAction',
438
+ 'useEffectEvent', 'useEffectEventDebounced', 'useEffectEventThrottled',
439
+ 'useFocusTrap', 'useKeyboard', 'useAriaLive', 'useReducedMotion',
440
+ 'useSEO', 'useStructuredData',
441
+ 'preload', 'preinit', 'prefetchDNS', 'preconnect',
442
+ 'escapeHtml', 'sanitizeInput', 'safeUrl',
443
+ 'createServerAction', 'createServerComponent',
444
+ // Beginner-friendly DX helpers
445
+ '$form', '$load', '$modal', '$toast', '$storage',
446
+ '$debounce', '$throttle', '$time', '$ref', '$reactive',
447
+ '$store', '$computed', '$effect', '$watch', '$event',
448
+ '$class', '$style', '$if', '$map', '$await', '$immerStore',
449
+ '$log', '$inspect', '$perf', 'component', 'memo',
450
+ 'hc',
451
+ ];
452
+ function detectUsedSymbols(code) {
453
+ const used = [];
454
+ for (const sym of FLINT_SYMBOLS) {
455
+ // Check if symbol is used as identifier (word boundary)
456
+ const regex = new RegExp(`\\b${sym}\\b`);
457
+ if (regex.test(code)) {
458
+ used.push(sym);
459
+ }
460
+ }
461
+ return used;
462
+ }
463
+ function detectExistingImports(code) {
464
+ const imported = new Set();
465
+ const regex = /import\s+{([^}]+)}\s+from\s+['"][^'"]+['"]/g;
466
+ let match;
467
+ while ((match = regex.exec(code)) !== null) {
468
+ const specs = match[1].split(',').map(s => s.trim().split(/\s+as\s+/)[0].trim());
469
+ for (const spec of specs) {
470
+ if (spec)
471
+ imported.add(spec);
472
+ }
473
+ }
474
+ return imported;
475
+ }
476
+ // ─── Transformer ────────────────────────────────────────────────
477
+ export function transform(ast, code, options = {}) {
478
+ const hImport = `import { h, track, trackAttribute, trackEvent } from 'flint'`;
479
+ const imports = [];
480
+ let hasFlintImport = false;
481
+ let hasJSX = false;
482
+ // First pass: detect JSX and check for existing flint imports
483
+ walk(ast, null, {
484
+ enter(node) {
485
+ if (node.type === 'JSXElement' || node.type === 'JSXFragment') {
486
+ hasJSX = true;
487
+ }
488
+ if (node.type === 'ImportDeclaration' && node.source?.value === 'flint') {
489
+ hasFlintImport = true;
490
+ }
491
+ },
492
+ leave() { },
493
+ });
494
+ if (!hasJSX) {
495
+ return { code, ast };
496
+ }
497
+ // Second pass: transform JSX in-place
498
+ let transformedCode = code;
499
+ const replacements = [];
500
+ walk(ast, null, {
501
+ enter(node, parent) {
502
+ if (node.type === 'JSXElement' || node.type === 'JSXFragment') {
503
+ const replacement = generate(node, code);
504
+ replacements.push({
505
+ start: node.start,
506
+ end: node.end,
507
+ replacement,
508
+ });
509
+ }
510
+ },
511
+ leave() { },
512
+ });
513
+ // Apply replacements in reverse order to maintain positions
514
+ for (let i = replacements.length - 1; i >= 0; i--) {
515
+ const r = replacements[i];
516
+ transformedCode = transformedCode.slice(0, r.start) + r.replacement + transformedCode.slice(r.end);
517
+ }
518
+ // Auto-import flint symbols if enabled
519
+ if (options.autoImport !== false && hasJSX && !hasFlintImport) {
520
+ const usedSymbols = detectUsedSymbols(transformedCode);
521
+ const existingImports = detectExistingImports(transformedCode);
522
+ // Core h/track imports always needed
523
+ const coreImports = ['h', 'track', 'trackAttribute', 'trackEvent'];
524
+ const additionalImports = usedSymbols.filter(s => !coreImports.includes(s) && !existingImports.has(s));
525
+ if (additionalImports.length > 0) {
526
+ transformedCode = `import { ${coreImports.join(', ')}, ${additionalImports.join(', ')} } from 'flint'\n` + transformedCode;
527
+ imports.push(...coreImports, ...additionalImports);
528
+ }
529
+ else {
530
+ transformedCode = hImport + '\n' + transformedCode;
531
+ imports.push(...coreImports);
532
+ }
533
+ }
534
+ else if (hasJSX && !hasFlintImport) {
535
+ transformedCode = hImport + '\n' + transformedCode;
536
+ imports.push('h', 'track', 'trackAttribute', 'trackEvent');
537
+ }
538
+ // Generate source map if requested
539
+ let sourceMap;
540
+ if (options.sourceMaps !== false) {
541
+ const generator = new SourceMapGenerator(code, options.filename);
542
+ for (const r of replacements) {
543
+ const originalStart = getOriginalPosition(code, r.start);
544
+ const generatedLine = transformedCode.slice(0, transformedCode.indexOf(r.replacement)).split('\n').length;
545
+ const generatedColumn = transformedCode.indexOf(r.replacement) % (transformedCode.split('\n')[generatedLine - 1]?.length || 1);
546
+ generator.addMapping(generatedLine, generatedColumn, originalStart.line, originalStart.column);
547
+ }
548
+ sourceMap = generator.generate();
549
+ }
550
+ return { code: transformedCode, ast, map: sourceMap, imports };
551
+ }
552
+ function getOriginalPosition(code, offset) {
553
+ let line = 1;
554
+ let column = 0;
555
+ for (let i = 0; i < offset && i < code.length; i++) {
556
+ if (code[i] === '\n') {
557
+ line++;
558
+ column = 0;
559
+ }
560
+ else {
561
+ column++;
562
+ }
563
+ }
564
+ return { line, column };
565
+ }
566
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformer/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "flint-compiler",
3
+ "version": "4.0.0",
4
+ "description": "Flint compiler — JSX with auto-imports, tree-shaking and optimizations",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "typecheck": "tsc --noEmit"
19
+ },
20
+ "dependencies": {
21
+ "acorn": "^8.14.1",
22
+ "acorn-jsx": "^5.3.2",
23
+ "esbuild": "^0.28.2"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "^22.12.0",
27
+ "typescript": "^5.7.3"
28
+ },
29
+ "files": [
30
+ "dist"
31
+ ],
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/salzcill-cmd/flint.git",
35
+ "directory": "packages/compiler"
36
+ },
37
+ "bugs": {
38
+ "url": "https://github.com/salzcill-cmd/flint/issues"
39
+ },
40
+ "homepage": "https://github.com/salzcill-cmd/flint#readme",
41
+ "engines": {
42
+ "node": ">=20.0.0"
43
+ },
44
+ "license": "MIT",
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "keywords": [
49
+ "compiler",
50
+ "jsx",
51
+ "tree-shaking",
52
+ "flint"
53
+ ]
54
+ }