@emberkit/core 0.2.0 → 0.2.1

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 (125) hide show
  1. package/LICENSE +199 -0
  2. package/dist/boundaries/error-boundary.d.ts +29 -0
  3. package/dist/boundaries/error-boundary.d.ts.map +1 -0
  4. package/dist/boundaries/errors.d.ts +39 -0
  5. package/dist/boundaries/errors.d.ts.map +1 -0
  6. package/dist/boundaries/index.d.ts +5 -0
  7. package/dist/boundaries/index.d.ts.map +1 -0
  8. package/dist/boundaries/loading-boundary.d.ts +42 -0
  9. package/dist/boundaries/loading-boundary.d.ts.map +1 -0
  10. package/dist/cache/index.d.ts +60 -0
  11. package/dist/cache/index.d.ts.map +1 -0
  12. package/dist/compiler/compiler.d.ts +6 -0
  13. package/dist/compiler/compiler.d.ts.map +1 -0
  14. package/dist/compiler/helpers/attributes.d.ts +4 -0
  15. package/dist/compiler/helpers/attributes.d.ts.map +1 -0
  16. package/dist/compiler/helpers/utils.d.ts +10 -0
  17. package/dist/compiler/helpers/utils.d.ts.map +1 -0
  18. package/dist/compiler/index.d.ts +5 -0
  19. package/dist/compiler/index.d.ts.map +1 -0
  20. package/dist/compiler/types.d.ts +40 -0
  21. package/dist/compiler/types.d.ts.map +1 -0
  22. package/dist/context/index.d.ts +34 -0
  23. package/dist/context/index.d.ts.map +1 -0
  24. package/dist/context/types.d.ts +10 -0
  25. package/dist/context/types.d.ts.map +1 -0
  26. package/dist/dev-server/index.d.ts +30 -0
  27. package/dist/dev-server/index.d.ts.map +1 -0
  28. package/dist/forms/index.d.ts +58 -0
  29. package/dist/forms/index.d.ts.map +1 -0
  30. package/dist/forms/mutations.d.ts +48 -0
  31. package/dist/forms/mutations.d.ts.map +1 -0
  32. package/dist/hmr/client.d.ts +18 -0
  33. package/dist/hmr/client.d.ts.map +1 -0
  34. package/dist/hmr/index.d.ts +3 -0
  35. package/dist/hmr/index.d.ts.map +1 -0
  36. package/dist/hmr/types.d.ts +42 -0
  37. package/dist/hmr/types.d.ts.map +1 -0
  38. package/dist/hydration/helpers/analyzer.d.ts +9 -0
  39. package/dist/hydration/helpers/analyzer.d.ts.map +1 -0
  40. package/dist/hydration/helpers/hydration.d.ts +19 -0
  41. package/dist/hydration/helpers/hydration.d.ts.map +1 -0
  42. package/dist/hydration/index.d.ts +4 -0
  43. package/dist/hydration/index.d.ts.map +1 -0
  44. package/dist/hydration/types.d.ts +27 -0
  45. package/dist/hydration/types.d.ts.map +1 -0
  46. package/dist/image/index.d.ts +9 -0
  47. package/dist/image/index.d.ts.map +1 -0
  48. package/dist/image/processor.d.ts +57 -0
  49. package/dist/image/processor.d.ts.map +1 -0
  50. package/dist/index.d.ts +20 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/jsx-dev-runtime.d.ts +11 -0
  53. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  54. package/dist/jsx-runtime.d.ts +11 -0
  55. package/dist/jsx-runtime.d.ts.map +1 -0
  56. package/dist/loader/helpers/loader.d.ts +6 -0
  57. package/dist/loader/helpers/loader.d.ts.map +1 -0
  58. package/dist/loader/index.d.ts +3 -0
  59. package/dist/loader/index.d.ts.map +1 -0
  60. package/dist/loader/types.d.ts +34 -0
  61. package/dist/loader/types.d.ts.map +1 -0
  62. package/dist/markdown/index.d.ts +77 -0
  63. package/dist/markdown/index.d.ts.map +1 -0
  64. package/dist/mdx/index.d.ts +43 -0
  65. package/dist/mdx/index.d.ts.map +1 -0
  66. package/dist/mdx/loader.d.ts +3 -0
  67. package/dist/mdx/loader.d.ts.map +1 -0
  68. package/dist/meta/head-registry.d.ts +5 -0
  69. package/dist/meta/head-registry.d.ts.map +1 -0
  70. package/dist/meta/head.d.ts +29 -0
  71. package/dist/meta/head.d.ts.map +1 -0
  72. package/dist/meta/index.d.ts +91 -0
  73. package/dist/meta/index.d.ts.map +1 -0
  74. package/dist/navigation/helpers/navigation.d.ts +15 -0
  75. package/dist/navigation/helpers/navigation.d.ts.map +1 -0
  76. package/dist/navigation/helpers/useNavigate.d.ts +6 -0
  77. package/dist/navigation/helpers/useNavigate.d.ts.map +1 -0
  78. package/dist/navigation/index.d.ts +5 -0
  79. package/dist/navigation/index.d.ts.map +1 -0
  80. package/dist/navigation/types.d.ts +24 -0
  81. package/dist/navigation/types.d.ts.map +1 -0
  82. package/dist/plugin/index.d.ts +73 -0
  83. package/dist/plugin/index.d.ts.map +1 -0
  84. package/dist/router/helpers/path.d.ts +15 -0
  85. package/dist/router/helpers/path.d.ts.map +1 -0
  86. package/dist/router/helpers/route.d.ts +6 -0
  87. package/dist/router/helpers/route.d.ts.map +1 -0
  88. package/dist/router/index.d.ts +35 -0
  89. package/dist/router/index.d.ts.map +1 -0
  90. package/dist/router/types.d.ts +30 -0
  91. package/dist/router/types.d.ts.map +1 -0
  92. package/dist/runtime/helpers/element.d.ts +7 -0
  93. package/dist/runtime/helpers/element.d.ts.map +1 -0
  94. package/dist/runtime/helpers/render.d.ts +8 -0
  95. package/dist/runtime/helpers/render.d.ts.map +1 -0
  96. package/dist/runtime/helpers/render.js +17 -2
  97. package/dist/runtime/index.d.ts +16 -0
  98. package/dist/runtime/index.d.ts.map +1 -0
  99. package/dist/runtime/index.js +53 -0
  100. package/dist/runtime/types.d.ts +65 -0
  101. package/dist/runtime/types.d.ts.map +1 -0
  102. package/dist/signals/helpers/core.d.ts +11 -0
  103. package/dist/signals/helpers/core.d.ts.map +1 -0
  104. package/dist/signals/helpers/core.js +32 -12
  105. package/dist/signals/helpers/utils.d.ts +7 -0
  106. package/dist/signals/helpers/utils.d.ts.map +1 -0
  107. package/dist/signals/index.d.ts +4 -0
  108. package/dist/signals/index.d.ts.map +1 -0
  109. package/dist/signals/types.d.ts +23 -0
  110. package/dist/signals/types.d.ts.map +1 -0
  111. package/dist/ssg/index.d.ts +38 -0
  112. package/dist/ssg/index.d.ts.map +1 -0
  113. package/dist/ssr/helpers/render-html.d.ts +16 -0
  114. package/dist/ssr/helpers/render-html.d.ts.map +1 -0
  115. package/dist/ssr/helpers/ssr.d.ts +14 -0
  116. package/dist/ssr/helpers/ssr.d.ts.map +1 -0
  117. package/dist/ssr/index.d.ts +4 -0
  118. package/dist/ssr/index.d.ts.map +1 -0
  119. package/dist/ssr/types.d.ts +29 -0
  120. package/dist/ssr/types.d.ts.map +1 -0
  121. package/dist/vite-plugin/index.d.ts +5 -0
  122. package/dist/vite-plugin/index.d.ts.map +1 -0
  123. package/dist/vite-plugin/types.d.ts +36 -0
  124. package/dist/vite-plugin/types.d.ts.map +1 -0
  125. package/package.json +10 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC;IACrD,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAEpC,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACzE,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,GAAG,CAAC;QACZ,UAAU,OAAQ,SAAQ,UAAU;SAAG;QACvC,UAAU,iBAAiB;YACzB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC;SACrC;KACF;CACF;AAGD,MAAM,WAAW,EAAE,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IAC7D,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACpF,MAAM,EAAE,CAAC,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Signal, SignalOptions } from '../types.js';
2
+ export declare function resetSigIndex(): void;
3
+ export declare function getSignalByIndex(idx: number): {
4
+ subscribe: (fn: (v: unknown) => void) => () => void;
5
+ } | undefined;
6
+ export declare function createSignal<T>(initialValue: T, options?: SignalOptions<T>): [() => T, (newValue: T | ((prev: T) => T)) => void] & Signal<T>;
7
+ export declare function createMemo<T>(computation: () => T, _options?: SignalOptions<T>): Signal<T>;
8
+ export declare function createEffect(callback: () => void | (() => void)): () => void;
9
+ export declare function batch<T>(fn: () => T): T;
10
+ export declare function untrack<T>(fn: () => T): T;
11
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/signals/helpers/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKzD,wBAAgB,aAAa,IAAI,IAAI,CAAkB;AAEvD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;CAAE,GAAG,SAAS,CAEjH;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,YAAY,EAAE,CAAC,EACf,OAAO,GAAE,aAAa,CAAC,CAAC,CAAM,GAC7B,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAmEjE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,WAAW,EAAE,MAAM,CAAC,EACpB,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAC1B,MAAM,CAAC,CAAC,CAAC,CAqBX;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,IAAI,CAqB5E;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvC;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEzC"}
@@ -1,32 +1,52 @@
1
- import { DEFAULT_EQUALS } from '../types.js';
1
+ let sigIndex = 0;
2
+ const sigRegistry = new Map();
3
+ export function resetSigIndex() { sigIndex = 0; }
4
+ export function getSignalByIndex(idx) {
5
+ return sigRegistry.get(idx);
6
+ }
2
7
  export function createSignal(initialValue, options = {}) {
3
- const { equals = DEFAULT_EQUALS } = options;
4
8
  let value = initialValue;
5
- function notify() {
6
- void equals;
7
- }
9
+ const subs = new Set();
10
+ const idx = sigIndex++;
8
11
  function getter() {
9
12
  return value;
10
13
  }
14
+ getter.__idx = idx;
11
15
  function setter(newValue) {
12
- if (!equals(value, newValue)) {
13
- value = newValue;
14
- notify();
16
+ const next = typeof newValue === 'function' ? newValue(value) : newValue;
17
+ if (value === next)
18
+ return;
19
+ value = next;
20
+ if (subs.size > 0) {
21
+ const fns = [...subs];
22
+ for (let i = 0; i < fns.length; i++)
23
+ fns[i](value);
15
24
  }
16
25
  }
26
+ function subscribe(fn) {
27
+ subs.add(fn);
28
+ return () => subs.delete(fn);
29
+ }
30
+ sigRegistry.set(idx, { subscribe: subscribe });
17
31
  const signal = {
18
32
  get value() {
19
33
  return value;
20
34
  },
21
35
  set value(newValue) {
22
- if (!equals(value, newValue)) {
23
- value = newValue;
24
- notify();
36
+ const next = typeof newValue === 'function' ? newValue(value) : newValue;
37
+ if (value === next)
38
+ return;
39
+ value = next;
40
+ if (subs.size > 0) {
41
+ const fns = [...subs];
42
+ for (let i = 0; i < fns.length; i++)
43
+ fns[i](value);
25
44
  }
26
45
  },
27
46
  peek() {
28
47
  return value;
29
48
  },
49
+ subscribe,
30
50
  [Symbol.iterator]() {
31
51
  let index = 0;
32
52
  const methods = [getter, setter];
@@ -43,7 +63,6 @@ export function createSignal(initialValue, options = {}) {
43
63
  };
44
64
  },
45
65
  };
46
- // Make it array-like for tuple destructuring: [getter, setter]
47
66
  signal[0] = getter;
48
67
  signal[1] = setter;
49
68
  signal.length = 2;
@@ -67,6 +86,7 @@ export function createMemo(computation, _options) {
67
86
  }
68
87
  return value;
69
88
  },
89
+ subscribe: () => (() => { }),
70
90
  };
71
91
  }
72
92
  export function createEffect(callback) {
@@ -0,0 +1,7 @@
1
+ import type { Signal, ReadonlySignal } from '../types.js';
2
+ export declare function isSignal(value: unknown): value is Signal<unknown>;
3
+ export declare function isReadonlySignal<T>(signal: Signal<T>): signal is ReadonlySignal<T>;
4
+ export declare function getSignalValue<T>(signal: Signal<T>): T;
5
+ export declare function setSignalValue<T>(signal: Signal<T>, value: T): void;
6
+ export declare function readSignal<T>(signal: Signal<T>): T;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/signals/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE1D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAGjE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAChB,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAE7B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAEtD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAOnE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAElD"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './helpers/core.js';
3
+ export * from './helpers/utils.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,23 @@
1
+ export interface SignalOptions<T> {
2
+ equals?: (prev: T, next: T) => boolean;
3
+ }
4
+ export interface Signal<T> {
5
+ value: T;
6
+ readonly peek: () => T;
7
+ subscribe: (fn: (v: T) => void) => () => void;
8
+ }
9
+ export interface ReadonlySignal<T> {
10
+ readonly value: T;
11
+ readonly peek: () => T;
12
+ subscribe: (fn: (v: T) => void) => () => void;
13
+ }
14
+ export interface WritableSignal<T> extends Signal<T> {
15
+ value: T;
16
+ }
17
+ export interface EffectCleanup {
18
+ readonly: () => void;
19
+ }
20
+ export type EffectCallback = () => void | (() => void);
21
+ export type EqualityFn<T> = (prev: T, next: T) => boolean;
22
+ export declare const DEFAULT_EQUALS: <T>(prev: T, next: T) => boolean;
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/signals/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAEvD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;AAE1D,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,YAAkB,CAAC"}
@@ -0,0 +1,38 @@
1
+ export interface SSGConfig {
2
+ outDir: string;
3
+ routes: string[];
4
+ prerender?: boolean;
5
+ cacheControl?: string;
6
+ }
7
+ export interface SSGManifest {
8
+ pages: Map<string, string>;
9
+ errors: Map<string, Error>;
10
+ buildTime: number;
11
+ }
12
+ export interface StaticPage {
13
+ path: string;
14
+ html: string;
15
+ status: number;
16
+ headers: Record<string, string>;
17
+ }
18
+ export declare class SSGBuilder {
19
+ private config;
20
+ private manifest;
21
+ constructor(config: SSGConfig);
22
+ build(renderFn: (path: string) => Promise<string>): Promise<SSGManifest>;
23
+ getManifest(): SSGManifest;
24
+ getBuildStats(): {
25
+ pages: number;
26
+ errors: number;
27
+ time: number;
28
+ };
29
+ }
30
+ export declare function generateStaticPages(routes: string[], renderFn: (path: string) => Promise<string>, options?: Partial<SSGConfig>): Promise<SSGManifest>;
31
+ export declare function createSSGManifest(pages: StaticPage[]): SSGManifest;
32
+ export declare function serializeManifest(manifest: SSGManifest): string;
33
+ export declare function deserializeManifest(json: string): SSGManifest;
34
+ export declare const STATIC_ROUTE_PATTERNS: string[];
35
+ export declare function isStaticRoute(path: string): boolean;
36
+ export declare function crawlRoutes(startPath: string, shouldCrawl: (path: string) => Promise<boolean>, getLinks: (html: string) => string[]): Promise<string[]>;
37
+ export declare function estimateBuildTime(pages: number): number;
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssg/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAc;gBAElB,MAAM,EAAE,SAAS;IAcvB,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC9E,WAAW,IAAI,WAAW;IAI1B,aAAa,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAOjE;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3C,OAAO,GAAE,OAAO,CAAC,SAAS,CAAM,GAC/B,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,WAAW,CAMlE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAM/D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQ7D;AAED,eAAO,MAAM,qBAAqB,UAMjC,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC/C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,GACnC,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,16 @@
1
+ import type { JSXNode } from '../../runtime/types.js';
2
+ export declare function renderToHTMLString(element: JSXNode | null): string;
3
+ export declare function renderChildrenToHTML(children: (string | number | JSXNode)[]): string;
4
+ export declare function createHtmlDocument(html: string, options?: {
5
+ title?: string;
6
+ lang?: string;
7
+ doctype?: string;
8
+ baseUrl?: string;
9
+ headExtra?: string;
10
+ }): string;
11
+ export declare function escapeHtml(text: string): string;
12
+ export declare function createMetaTags(meta: Record<string, string>): string;
13
+ export declare function createLinkTags(links: Record<string, string>): string;
14
+ export declare function createScriptTags(scripts: string[]): string;
15
+ export declare function createStyleTags(styles: string[]): string;
16
+ //# sourceMappingURL=render-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-html.d.ts","sourceRoot":"","sources":["../../../src/ssr/helpers/render-html.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,wBAAwB,CAAC;AAElE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAQlE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,MAAM,CAEpF;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,MAAM,CAgBR;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAInE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIpE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAExD"}
@@ -0,0 +1,14 @@
1
+ import type { JSXNode } from '../../runtime/types.js';
2
+ import type { LoaderResult } from '../../loader/types.js';
3
+ import type { SSRRenderOptions, SSRRenderResult } from '../types.js';
4
+ export declare function renderSSR(element: JSXNode | null, options?: SSRRenderOptions): SSRRenderResult;
5
+ export declare function renderSSRWithError(element: JSXNode | null, error: LoaderResult<unknown> | null, options?: SSRRenderOptions): SSRRenderResult;
6
+ export declare function renderSSRWithHeaders(element: JSXNode | null, headers: Record<string, string>, options?: SSRRenderOptions): SSRRenderResult;
7
+ export declare function createStreamingRenderer(): {
8
+ write(html: string): void;
9
+ writeChunk(type: "html" | "status" | "error", content: string): void;
10
+ end(): string;
11
+ reset(): void;
12
+ };
13
+ export declare function injectScripts(html: string, scripts: string[]): string;
14
+ //# sourceMappingURL=ssr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../../src/ssr/helpers/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGrE,wBAAgB,SAAS,CACvB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAsBjB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,EACnC,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAuBjB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAQjB;AAED,wBAAgB,uBAAuB;gBAIvB,MAAM,GAAG,IAAI;qBAIR,MAAM,GAAG,QAAQ,GAAG,OAAO,WAAW,MAAM,GAAG,IAAI;WAU7D,MAAM;aAIJ,IAAI;EAIhB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAWrE"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './helpers/render-html.js';
3
+ export * from './helpers/ssr.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssr/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { LoaderResult } from '../loader/types.js';
2
+ export interface SSRContext {
3
+ request: Request;
4
+ params: Record<string, string>;
5
+ query: Record<string, string | string[]>;
6
+ loaderData: Record<string, LoaderResult<unknown>>;
7
+ }
8
+ export interface SSRRenderOptions {
9
+ doctype?: string;
10
+ title?: string;
11
+ lang?: string;
12
+ baseUrl?: string;
13
+ streaming?: boolean;
14
+ headExtra?: string;
15
+ }
16
+ export interface SSRRenderResult {
17
+ html: string;
18
+ status: number;
19
+ headers: Headers;
20
+ }
21
+ export interface StreamChunk {
22
+ type: 'html' | 'error' | 'status';
23
+ content: string;
24
+ }
25
+ export declare const DEFAULT_DOCTYPE = "<!DOCTYPE html>";
26
+ export declare const DEFAULT_LANG = "en";
27
+ export declare const STATUS_CODES: Record<number, string>;
28
+ export declare function getStatusText(status: number): string;
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ssr/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkB/C,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,5 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { EmberKitPluginOptions, EmberKitMode } from './types.js';
3
+ export declare function emberkitVitePlugin(userOptions?: EmberKitPluginOptions): Plugin;
4
+ export type { EmberKitPluginOptions, EmberKitMode };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite-plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqBtE,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,qBAA0B,GAAG,MAAM,CA+ElF;AAwoBD,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Plugin } from 'vite';
2
+ export type EmberKitMode = 'static' | 'ssr' | 'spa' | 'hybrid';
3
+ export interface EmberKitPluginOptions {
4
+ mode?: EmberKitMode;
5
+ routeDir?: string;
6
+ outputDir?: string;
7
+ jsx?: 'automatic' | 'classic';
8
+ markdown?: Partial<MarkdownConfig>;
9
+ mdx?: MDXConfig;
10
+ }
11
+ export interface MarkdownConfig {
12
+ gfm: boolean;
13
+ breaks: boolean;
14
+ html: boolean;
15
+ tables: boolean;
16
+ }
17
+ export interface MDXConfig {
18
+ components?: Record<string, string>;
19
+ scope?: Record<string, unknown>;
20
+ }
21
+ export type EmberKitPlugin = (options?: EmberKitPluginOptions) => Plugin;
22
+ export declare const DEFAULT_CONFIG: {
23
+ readonly mode: "hybrid";
24
+ readonly routeDir: "src/routes";
25
+ readonly outputDir: "dist";
26
+ readonly jsx: "automatic";
27
+ readonly markdown: {
28
+ readonly gfm: true;
29
+ readonly breaks: false;
30
+ readonly html: true;
31
+ readonly tables: true;
32
+ };
33
+ readonly mdx: {};
34
+ };
35
+ export type ResolvedConfig = typeof DEFAULT_CONFIG & EmberKitPluginOptions;
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emberkit/core",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "description": "Lightweight TypeScript-first JSX framework core",
6
6
  "license": "Apache-2.0",
@@ -45,14 +45,6 @@
45
45
  "types": "./dist/jsx-dev-runtime.d.ts"
46
46
  }
47
47
  },
48
- "scripts": {
49
- "build": "tsc --build",
50
- "dev": "tsc --build --watch",
51
- "lint": "eslint src --ext .ts,.tsx",
52
- "format": "prettier --write \"src/**/*.{ts,tsx}\"",
53
- "test": "vitest",
54
- "typecheck": "tsc --noEmit"
55
- },
56
48
  "dependencies": {
57
49
  "@mdx-js/mdx": "^3.1.1",
58
50
  "remark-gfm": "^4.0.0",
@@ -67,5 +59,13 @@
67
59
  "jsdom": "^29.1.1",
68
60
  "typescript-eslint": "^8.59.3",
69
61
  "vitest": "^3.0.0"
62
+ },
63
+ "scripts": {
64
+ "build": "tsc --build",
65
+ "dev": "tsc --build --watch",
66
+ "lint": "eslint src --ext .ts,.tsx",
67
+ "format": "prettier --write \"src/**/*.{ts,tsx}\"",
68
+ "test": "vitest",
69
+ "typecheck": "tsc --noEmit"
70
70
  }
71
- }
71
+ }