@emberkit/core 0.2.1 → 0.2.4-alpha.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.
Files changed (78) hide show
  1. package/dist/boundaries/error-boundary.d.ts.map +1 -1
  2. package/dist/cache/index.d.ts +5 -5
  3. package/dist/cache/index.d.ts.map +1 -1
  4. package/dist/cache/index.js +24 -22
  5. package/dist/compiler/compiler.d.ts.map +1 -1
  6. package/dist/compiler/helpers/utils.d.ts.map +1 -1
  7. package/dist/context/index.d.ts.map +1 -1
  8. package/dist/dev-server/index.d.ts +5 -5
  9. package/dist/dev-server/index.d.ts.map +1 -1
  10. package/dist/dev-server/index.js +27 -27
  11. package/dist/forms/index.d.ts.map +1 -1
  12. package/dist/forms/index.js +1 -1
  13. package/dist/forms/mutations.d.ts.map +1 -1
  14. package/dist/forms/mutations.js +4 -1
  15. package/dist/hmr/client.d.ts.map +1 -1
  16. package/dist/hmr/client.js +1 -1
  17. package/dist/hmr/types.d.ts +3 -3
  18. package/dist/hmr/types.d.ts.map +1 -1
  19. package/dist/hmr/types.js +7 -7
  20. package/dist/hydration/helpers/analyzer.d.ts.map +1 -1
  21. package/dist/hydration/helpers/hydration.d.ts.map +1 -1
  22. package/dist/hydration/helpers/hydration.js +1 -1
  23. package/dist/hydration/types.d.ts.map +1 -1
  24. package/dist/hydration/types.js +32 -8
  25. package/dist/image/index.d.ts +1 -1
  26. package/dist/image/index.d.ts.map +1 -1
  27. package/dist/image/index.js +1 -1
  28. package/dist/image/processor.d.ts +2 -2
  29. package/dist/image/processor.d.ts.map +1 -1
  30. package/dist/image/processor.js +20 -15
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -2
  34. package/dist/jsx-dev-runtime.d.ts.map +1 -1
  35. package/dist/jsx-runtime.d.ts.map +1 -1
  36. package/dist/loader/helpers/loader.d.ts.map +1 -1
  37. package/dist/markdown/index.d.ts +14 -14
  38. package/dist/markdown/index.d.ts.map +1 -1
  39. package/dist/markdown/index.js +178 -172
  40. package/dist/mdx/index.d.ts +6 -6
  41. package/dist/mdx/index.d.ts.map +1 -1
  42. package/dist/mdx/index.js +46 -40
  43. package/dist/mdx/loader.d.ts.map +1 -1
  44. package/dist/meta/head.d.ts.map +1 -1
  45. package/dist/meta/index.d.ts +3 -3
  46. package/dist/meta/index.d.ts.map +1 -1
  47. package/dist/meta/index.js +16 -16
  48. package/dist/navigation/helpers/navigation.d.ts.map +1 -1
  49. package/dist/navigation/helpers/navigation.js +4 -4
  50. package/dist/navigation/types.d.ts.map +1 -1
  51. package/dist/navigation/types.js +1 -2
  52. package/dist/plugin/index.d.ts +2 -2
  53. package/dist/plugin/index.d.ts.map +1 -1
  54. package/dist/plugin/index.js +4 -4
  55. package/dist/router/helpers/route.d.ts.map +1 -1
  56. package/dist/router/helpers/route.js +10 -3
  57. package/dist/router/types.d.ts.map +1 -1
  58. package/dist/router/types.js +1 -3
  59. package/dist/runtime/helpers/render.d.ts.map +1 -1
  60. package/dist/runtime/helpers/render.js +20 -6
  61. package/dist/runtime/index.d.ts.map +1 -1
  62. package/dist/runtime/index.js +17 -14
  63. package/dist/signals/helpers/core.d.ts.map +1 -1
  64. package/dist/signals/helpers/core.js +3 -1
  65. package/dist/signals/helpers/utils.d.ts.map +1 -1
  66. package/dist/ssg/index.d.ts +1 -1
  67. package/dist/ssg/index.d.ts.map +1 -1
  68. package/dist/ssg/index.js +8 -15
  69. package/dist/ssr/helpers/render-html.d.ts.map +1 -1
  70. package/dist/ssr/helpers/render-html.js +3 -2
  71. package/dist/ssr/helpers/ssr.d.ts.map +1 -1
  72. package/dist/ssr/helpers/ssr.js +3 -1
  73. package/dist/vite-plugin/index.d.ts.map +1 -1
  74. package/dist/vite-plugin/index.js +209 -29
  75. package/dist/vite-plugin/types.d.ts +8 -0
  76. package/dist/vite-plugin/types.d.ts.map +1 -1
  77. package/dist/vite-plugin/types.js +4 -0
  78. package/package.json +4 -2
@@ -1,5 +1,5 @@
1
1
  import { DEFAULT_CONFIG } from './types.js';
2
- import { readdirSync, statSync } from 'node:fs';
2
+ import { readdirSync, statSync, existsSync } from 'node:fs';
3
3
  import { join, relative, dirname, resolve } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { compile } from '@mdx-js/mdx';
@@ -20,14 +20,25 @@ export function emberkitVitePlugin(userOptions = {}) {
20
20
  return {
21
21
  name: 'emberkit:vite-plugin',
22
22
  enforce: 'pre',
23
- config() {
23
+ async config() {
24
24
  const pkgRoot = resolve(__dirname, '..', '..');
25
25
  const srcDir = join(pkgRoot, 'src');
26
+ const plugins = [];
27
+ if (options.compression?.gzip) {
28
+ const { compression } = await import('vite-plugin-compression2');
29
+ plugins.push(compression({ algorithm: 'gzip' }));
30
+ }
31
+ if (options.compression?.brotli) {
32
+ const { compression } = await import('vite-plugin-compression2');
33
+ plugins.push(compression({ algorithm: 'brotliCompress' }));
34
+ }
35
+ const isWorkspace = existsSync(join(pkgRoot, 'src', 'index.ts'));
26
36
  return {
37
+ plugins,
27
38
  resolve: {
28
- alias: {
39
+ alias: isWorkspace ? {
29
40
  '@emberkit/core': srcDir,
30
- },
41
+ } : {},
31
42
  },
32
43
  esbuild: {
33
44
  jsxImportSource: '@emberkit/core',
@@ -144,7 +155,7 @@ async function transformMDX(code, id) {
144
155
  }
145
156
  // Extract code blocks before MDX compilation to preserve syntax
146
157
  const codeBlocks = [];
147
- let processedContent = content.replace(/```(\w*)\n([\s\S]*?)```/g, (_match, lang, blockCode) => {
158
+ const processedContent = content.replace(/```(\w*)\n([\s\S]*?)```/g, (_match, lang, blockCode) => {
148
159
  const html = renderCodeBlock(lang, blockCode);
149
160
  codeBlocks.push({ html, index: codeBlocks.length });
150
161
  return `<CodeBlock_${codeBlocks.length - 1} />`;
@@ -188,7 +199,7 @@ async function transformMDX(code, id) {
188
199
  const componentsOverride = codeBlocks.length > 0
189
200
  ? `
190
201
  const _codeBlockComponents = {
191
- ${codeBlocks.map(b => `CodeBlock_${b.index}`).join(', ')}
202
+ ${codeBlocks.map((b) => `CodeBlock_${b.index}`).join(', ')}
192
203
  };
193
204
  `
194
205
  : '';
@@ -227,7 +238,7 @@ function _GfmSup(props) {
227
238
  export default function MDXComponent(props) {
228
239
  const components = {
229
240
  ...(props.components || {}),
230
- ${codeBlocks.map(b => `CodeBlock_${b.index}`).join(', ')}
241
+ ${codeBlocks.map((b) => `CodeBlock_${b.index}`).join(', ')}
231
242
  };
232
243
 
233
244
  return createElement('div', {
@@ -265,7 +276,10 @@ function parseFrontmatter(content) {
265
276
  else if (!isNaN(Number(value)))
266
277
  value = Number(value);
267
278
  else if (typeof value === 'string' && value.startsWith('[')) {
268
- value = value.replace(/[\[\]]/g, '').split(',').map((s) => s.trim());
279
+ value = value
280
+ .replace(/[\[\]]/g, '')
281
+ .split(',')
282
+ .map((s) => s.trim());
269
283
  }
270
284
  result[key] = value;
271
285
  }
@@ -300,7 +314,12 @@ function processHeadings(html) {
300
314
  }
301
315
  function renderCodeBlock(lang, code) {
302
316
  let highlighted = code.trim();
303
- if (lang === 'ts' || lang === 'tsx' || lang === 'js' || lang === 'jsx' || lang === 'typescript' || lang === 'javascript') {
317
+ if (lang === 'ts' ||
318
+ lang === 'tsx' ||
319
+ lang === 'js' ||
320
+ lang === 'jsx' ||
321
+ lang === 'typescript' ||
322
+ lang === 'javascript') {
304
323
  highlighted = highlightTS(highlighted);
305
324
  }
306
325
  else if (lang === 'bash' || lang === 'sh' || lang === 'shell') {
@@ -316,19 +335,109 @@ function renderCodeBlock(lang, code) {
316
335
  return `<pre${langAttr}><button class="copy-btn" onclick="(async()=>{await navigator.clipboard.writeText(this.closest('pre').querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',1500)})()"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg> Copy</button><code class="language-${lang}">${highlighted}</code></pre>`;
317
336
  }
318
337
  function escapeHtml(text) {
319
- return text
320
- .replace(/&/g, '&amp;')
321
- .replace(/</g, '&lt;')
322
- .replace(/>/g, '&gt;');
338
+ return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
323
339
  }
324
340
  function highlightTS(code) {
325
341
  const tokens = [];
326
342
  let remaining = code;
327
- const controlFlow = new Set(['if', 'else', 'for', 'while', 'do', 'switch', 'case', 'break', 'continue', 'return', 'throw', 'try', 'catch', 'finally']);
328
- const declarations = new Set(['import', 'export', 'from', 'const', 'let', 'var', 'function', 'class', 'extends', 'super', 'enum', 'type', 'interface', 'module', 'namespace', 'declare', 'new', 'delete', 'typeof', 'instanceof', 'in', 'of', 'default', 'as', 'satisfies', 'keyof', 'infer', 'is', 'asserts', 'abstract', 'implements']);
329
- const modifiers = new Set(['readonly', 'public', 'private', 'protected', 'static', 'abstract', 'async', 'override']);
343
+ const controlFlow = new Set([
344
+ 'if',
345
+ 'else',
346
+ 'for',
347
+ 'while',
348
+ 'do',
349
+ 'switch',
350
+ 'case',
351
+ 'break',
352
+ 'continue',
353
+ 'return',
354
+ 'throw',
355
+ 'try',
356
+ 'catch',
357
+ 'finally',
358
+ ]);
359
+ const declarations = new Set([
360
+ 'import',
361
+ 'export',
362
+ 'from',
363
+ 'const',
364
+ 'let',
365
+ 'var',
366
+ 'function',
367
+ 'class',
368
+ 'extends',
369
+ 'super',
370
+ 'enum',
371
+ 'type',
372
+ 'interface',
373
+ 'module',
374
+ 'namespace',
375
+ 'declare',
376
+ 'new',
377
+ 'delete',
378
+ 'typeof',
379
+ 'instanceof',
380
+ 'in',
381
+ 'of',
382
+ 'default',
383
+ 'as',
384
+ 'satisfies',
385
+ 'keyof',
386
+ 'infer',
387
+ 'is',
388
+ 'asserts',
389
+ 'abstract',
390
+ 'implements',
391
+ ]);
392
+ const modifiers = new Set([
393
+ 'readonly',
394
+ 'public',
395
+ 'private',
396
+ 'protected',
397
+ 'static',
398
+ 'abstract',
399
+ 'async',
400
+ 'override',
401
+ ]);
330
402
  const literals = new Set(['true', 'false', 'null', 'undefined', 'this']);
331
- const builtins = new Set(['console', 'document', 'window', 'Math', 'JSON', 'Array', 'Object', 'String', 'Number', 'Boolean', 'Promise', 'Map', 'Set', 'RegExp', 'Date', 'Error', 'Symbol', 'Record', 'Partial', 'Required', 'Pick', 'Omit', 'Exclude', 'Extract', 'ReturnType', 'Parameters', 'JSX', 'FC', 'Props', 'State', 'Effect', 'Memo', 'Signal', 'Ref', 'Context', 'React']);
403
+ const builtins = new Set([
404
+ 'console',
405
+ 'document',
406
+ 'window',
407
+ 'Math',
408
+ 'JSON',
409
+ 'Array',
410
+ 'Object',
411
+ 'String',
412
+ 'Number',
413
+ 'Boolean',
414
+ 'Promise',
415
+ 'Map',
416
+ 'Set',
417
+ 'RegExp',
418
+ 'Date',
419
+ 'Error',
420
+ 'Symbol',
421
+ 'Record',
422
+ 'Partial',
423
+ 'Required',
424
+ 'Pick',
425
+ 'Omit',
426
+ 'Exclude',
427
+ 'Extract',
428
+ 'ReturnType',
429
+ 'Parameters',
430
+ 'JSX',
431
+ 'FC',
432
+ 'Props',
433
+ 'State',
434
+ 'Effect',
435
+ 'Memo',
436
+ 'Signal',
437
+ 'Ref',
438
+ 'Context',
439
+ 'React',
440
+ ]);
332
441
  while (remaining.length > 0) {
333
442
  let m;
334
443
  // Multi-line comment
@@ -419,7 +528,33 @@ function highlightTS(code) {
419
528
  }
420
529
  // JSX prop name (word followed by =)
421
530
  m = remaining.match(/^([a-zA-Z_][\w.]*)\s*(?==)/);
422
- if (m && !['if', 'else', 'for', 'while', 'switch', 'case', 'return', 'import', 'export', 'from', 'const', 'let', 'var', 'function', 'class', 'new', 'typeof', 'instanceof', 'void', 'null', 'undefined', 'true', 'false', 'this'].includes(m[1])) {
531
+ if (m &&
532
+ ![
533
+ 'if',
534
+ 'else',
535
+ 'for',
536
+ 'while',
537
+ 'switch',
538
+ 'case',
539
+ 'return',
540
+ 'import',
541
+ 'export',
542
+ 'from',
543
+ 'const',
544
+ 'let',
545
+ 'var',
546
+ 'function',
547
+ 'class',
548
+ 'new',
549
+ 'typeof',
550
+ 'instanceof',
551
+ 'void',
552
+ 'null',
553
+ 'undefined',
554
+ 'true',
555
+ 'false',
556
+ 'this',
557
+ ].includes(m[1])) {
423
558
  tokens.push(`<span class="attr">${escapeHtml(m[1])}</span>`);
424
559
  remaining = remaining.slice(m[1].length);
425
560
  continue;
@@ -502,7 +637,8 @@ function highlightInlineExpr(code) {
502
637
  }
503
638
  function highlightBash(code) {
504
639
  const lines = code.split('\n');
505
- return lines.map(line => {
640
+ return lines
641
+ .map((line) => {
506
642
  const trimmed = line.trimStart();
507
643
  // Comment
508
644
  if (trimmed.startsWith('#')) {
@@ -537,7 +673,35 @@ function highlightBash(code) {
537
673
  // Word (potential command)
538
674
  m = remaining.match(/^([a-zA-Z][\w-]*)/);
539
675
  if (m) {
540
- const cmds = new Set(['sudo', 'cd', 'mkdir', 'rm', 'cp', 'mv', 'ls', 'cat', 'echo', 'npm', 'pnpm', 'yarn', 'git', 'curl', 'chmod', 'export', 'source', 'node', 'npx', 'bun', 'deno', 'grep', 'awk', 'sed', 'find', 'docker', 'kubectl']);
676
+ const cmds = new Set([
677
+ 'sudo',
678
+ 'cd',
679
+ 'mkdir',
680
+ 'rm',
681
+ 'cp',
682
+ 'mv',
683
+ 'ls',
684
+ 'cat',
685
+ 'echo',
686
+ 'npm',
687
+ 'pnpm',
688
+ 'yarn',
689
+ 'git',
690
+ 'curl',
691
+ 'chmod',
692
+ 'export',
693
+ 'source',
694
+ 'node',
695
+ 'npx',
696
+ 'bun',
697
+ 'deno',
698
+ 'grep',
699
+ 'awk',
700
+ 'sed',
701
+ 'find',
702
+ 'docker',
703
+ 'kubectl',
704
+ ]);
541
705
  tokens.push(cmds.has(m[1]) ? `<span class="kw">${m[1]}</span>` : m[1]);
542
706
  remaining = remaining.slice(m[1].length);
543
707
  continue;
@@ -547,7 +711,8 @@ function highlightBash(code) {
547
711
  remaining = remaining.slice(1);
548
712
  }
549
713
  return tokens.join('');
550
- }).join('\n');
714
+ })
715
+ .join('\n');
551
716
  }
552
717
  function highlightJSON(code) {
553
718
  let result = escapeHtml(code);
@@ -568,10 +733,14 @@ function processTables(html) {
568
733
  while (i < lines.length) {
569
734
  // Check if this line and the next look like a table
570
735
  if (i + 1 < lines.length &&
571
- lines[i].trim().startsWith('|') && lines[i].trim().endsWith('|') &&
736
+ lines[i].trim().startsWith('|') &&
737
+ lines[i].trim().endsWith('|') &&
572
738
  lines[i + 1].trim().match(/^\|[\s\-:|]+\|$/)) {
573
739
  // Parse header row
574
- const headerCells = lines[i].trim().split('|').filter(c => c.trim() !== '');
740
+ const headerCells = lines[i]
741
+ .trim()
742
+ .split('|')
743
+ .filter((c) => c.trim() !== '');
575
744
  result.push('<table>');
576
745
  result.push('<thead><tr>');
577
746
  for (const cell of headerCells) {
@@ -583,7 +752,10 @@ function processTables(html) {
583
752
  i += 2;
584
753
  // Parse data rows
585
754
  while (i < lines.length && lines[i].trim().startsWith('|') && lines[i].trim().endsWith('|')) {
586
- const cells = lines[i].trim().split('|').filter(c => c.trim() !== '');
755
+ const cells = lines[i]
756
+ .trim()
757
+ .split('|')
758
+ .filter((c) => c.trim() !== '');
587
759
  result.push('<tr>');
588
760
  for (const cell of cells) {
589
761
  result.push(`<td>${cell.trim()}</td>`);
@@ -690,7 +862,8 @@ function processEmphasis(html) {
690
862
  function processParagraphs(html, breaks) {
691
863
  // Split on pre blocks to avoid processing code content
692
864
  const parts = html.split(/(<pre[\s\S]*?<\/pre>)/);
693
- return parts.map((part) => {
865
+ return parts
866
+ .map((part) => {
694
867
  // Don't process content inside pre tags
695
868
  if (part.startsWith('<pre'))
696
869
  return part;
@@ -700,8 +873,12 @@ function processParagraphs(html, breaks) {
700
873
  p = p.trim();
701
874
  if (!p)
702
875
  return '';
703
- if (p.startsWith('<h') || p.startsWith('<ul') || p.startsWith('<ol') ||
704
- p.startsWith('<pre') || p.startsWith('<blockquote') || p.startsWith('<table') ||
876
+ if (p.startsWith('<h') ||
877
+ p.startsWith('<ul') ||
878
+ p.startsWith('<ol') ||
879
+ p.startsWith('<pre') ||
880
+ p.startsWith('<blockquote') ||
881
+ p.startsWith('<table') ||
705
882
  p.startsWith('<hr')) {
706
883
  return p;
707
884
  }
@@ -709,7 +886,8 @@ function processParagraphs(html, breaks) {
709
886
  return `<p>${p}</p>`;
710
887
  })
711
888
  .join('\n');
712
- }).join('');
889
+ })
890
+ .join('');
713
891
  }
714
892
  function scanRouteFiles(dir) {
715
893
  const files = [];
@@ -746,7 +924,9 @@ function generateRoutesCode(files, routeDir) {
746
924
  const ext = file.split('.').pop() ?? '';
747
925
  const isMarkdown = ext === 'md' || ext === 'mdx';
748
926
  // Skip special files
749
- if (relativePath.includes('_layout') || relativePath.includes('_error') || relativePath.includes('_loading')) {
927
+ if (relativePath.includes('_layout') ||
928
+ relativePath.includes('_error') ||
929
+ relativePath.includes('_loading')) {
750
930
  continue;
751
931
  }
752
932
  // Skip API routes
@@ -7,6 +7,10 @@ export interface EmberKitPluginOptions {
7
7
  jsx?: 'automatic' | 'classic';
8
8
  markdown?: Partial<MarkdownConfig>;
9
9
  mdx?: MDXConfig;
10
+ compression?: {
11
+ gzip?: boolean;
12
+ brotli?: boolean;
13
+ };
10
14
  }
11
15
  export interface MarkdownConfig {
12
16
  gfm: boolean;
@@ -31,6 +35,10 @@ export declare const DEFAULT_CONFIG: {
31
35
  readonly tables: true;
32
36
  };
33
37
  readonly mdx: {};
38
+ readonly compression: {
39
+ readonly gzip: true;
40
+ readonly brotli: true;
41
+ };
34
42
  };
35
43
  export type ResolvedConfig = typeof DEFAULT_CONFIG & EmberKitPluginOptions;
36
44
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vite-plugin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,MAAM,CAAC;AAEzE,eAAO,MAAM,cAAc;;;;;;;;;;;;CAYjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,GAAG,qBAAqB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vite-plugin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,MAAM,CAAC;AAEzE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;CAgBjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,GAAG,qBAAqB,CAAC"}
@@ -10,4 +10,8 @@ export const DEFAULT_CONFIG = {
10
10
  tables: true,
11
11
  },
12
12
  mdx: {},
13
+ compression: {
14
+ gzip: true,
15
+ brotli: true,
16
+ },
13
17
  };
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@emberkit/core",
3
- "version": "0.2.1",
3
+ "version": "0.2.4-alpha.0",
4
4
  "type": "module",
5
+ "private": false,
5
6
  "description": "Lightweight TypeScript-first JSX framework core",
6
7
  "license": "Apache-2.0",
7
8
  "repository": {
@@ -48,7 +49,8 @@
48
49
  "dependencies": {
49
50
  "@mdx-js/mdx": "^3.1.1",
50
51
  "remark-gfm": "^4.0.0",
51
- "vite": "^6.0.0"
52
+ "vite": "^6.0.0",
53
+ "vite-plugin-compression2": "^2.5.3"
52
54
  },
53
55
  "devDependencies": {
54
56
  "@eslint/js": "^10.0.1",