sinwan 0.0.0 → 1.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.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +94 -1
  3. package/dist/cjs/index.development.js +2288 -0
  4. package/dist/cjs/index.development.js.map +35 -0
  5. package/dist/cjs/index.production.min.js +3 -0
  6. package/dist/cjs/index.production.min.js.map +35 -0
  7. package/dist/cjs/jsx/jsx-dev-runtime.development.js +124 -0
  8. package/dist/cjs/jsx/jsx-dev-runtime.development.js.map +10 -0
  9. package/dist/cjs/jsx/jsx-dev-runtime.production.min.js +3 -0
  10. package/dist/cjs/jsx/jsx-dev-runtime.production.min.js.map +10 -0
  11. package/dist/cjs/jsx/jsx-runtime.development.js +116 -0
  12. package/dist/cjs/jsx/jsx-runtime.development.js.map +10 -0
  13. package/dist/cjs/jsx/jsx-runtime.production.min.js +3 -0
  14. package/dist/cjs/jsx/jsx-runtime.production.min.js.map +10 -0
  15. package/dist/cjs/package.json +4 -0
  16. package/dist/cjs/renderer/index.development.js +1175 -0
  17. package/dist/cjs/renderer/index.development.js.map +24 -0
  18. package/dist/cjs/renderer/index.production.min.js +3 -0
  19. package/dist/cjs/renderer/index.production.min.js.map +24 -0
  20. package/dist/cjs/server/index.development.js +1265 -0
  21. package/dist/cjs/server/index.development.js.map +23 -0
  22. package/dist/cjs/server/index.production.min.js +3 -0
  23. package/dist/cjs/server/index.production.min.js.map +23 -0
  24. package/dist/component/control-flow.d.ts +18 -0
  25. package/dist/component/control-flow.d.ts.map +1 -0
  26. package/dist/component/create.d.ts +75 -0
  27. package/dist/component/create.d.ts.map +1 -0
  28. package/dist/component/index.d.ts +12 -0
  29. package/dist/component/index.d.ts.map +1 -0
  30. package/dist/component/instance.d.ts +84 -0
  31. package/dist/component/instance.d.ts.map +1 -0
  32. package/dist/component/lifecycle.d.ts +41 -0
  33. package/dist/component/lifecycle.d.ts.map +1 -0
  34. package/dist/component/provide-inject.d.ts +45 -0
  35. package/dist/component/provide-inject.d.ts.map +1 -0
  36. package/dist/escaper.d.ts +26 -0
  37. package/dist/escaper.d.ts.map +1 -0
  38. package/dist/esm/index.development.js +2201 -0
  39. package/dist/esm/index.development.js.map +35 -0
  40. package/dist/esm/index.production.min.js +4 -0
  41. package/dist/esm/index.production.min.js.map +35 -0
  42. package/dist/esm/jsx/jsx-dev-runtime.development.js +73 -0
  43. package/dist/esm/jsx/jsx-dev-runtime.development.js.map +10 -0
  44. package/dist/esm/jsx/jsx-dev-runtime.production.min.js +4 -0
  45. package/dist/esm/jsx/jsx-dev-runtime.production.min.js.map +10 -0
  46. package/dist/esm/jsx/jsx-runtime.development.js +77 -0
  47. package/dist/esm/jsx/jsx-runtime.development.js.map +10 -0
  48. package/dist/esm/jsx/jsx-runtime.production.min.js +4 -0
  49. package/dist/esm/jsx/jsx-runtime.production.min.js.map +10 -0
  50. package/dist/esm/package.json +4 -0
  51. package/dist/esm/renderer/index.development.js +1124 -0
  52. package/dist/esm/renderer/index.development.js.map +24 -0
  53. package/dist/esm/renderer/index.production.min.js +4 -0
  54. package/dist/esm/renderer/index.production.min.js.map +24 -0
  55. package/dist/esm/server/index.development.js +1214 -0
  56. package/dist/esm/server/index.development.js.map +23 -0
  57. package/dist/esm/server/index.production.min.js +4 -0
  58. package/dist/esm/server/index.production.min.js.map +23 -0
  59. package/dist/hydration/hydrate.d.ts +29 -0
  60. package/dist/hydration/hydrate.d.ts.map +1 -0
  61. package/dist/hydration/index.d.ts +7 -0
  62. package/dist/hydration/index.d.ts.map +1 -0
  63. package/dist/hydration/markers.d.ts +48 -0
  64. package/dist/hydration/markers.d.ts.map +1 -0
  65. package/dist/hydration/walk.d.ts +32 -0
  66. package/dist/hydration/walk.d.ts.map +1 -0
  67. package/dist/index.d.ts +14 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +7 -0
  70. package/dist/index.mjs +4 -0
  71. package/dist/jsx/jsx-dev-runtime.d.ts +10 -0
  72. package/dist/jsx/jsx-dev-runtime.d.ts.map +1 -0
  73. package/dist/jsx/jsx-runtime.d.ts +67 -0
  74. package/dist/jsx/jsx-runtime.d.ts.map +1 -0
  75. package/dist/jsx/jsx-types.d.ts +702 -0
  76. package/dist/jsx/jsx-types.d.ts.map +1 -0
  77. package/dist/jsx-dev-runtime.d.ts +1 -0
  78. package/dist/jsx-dev-runtime.js +7 -0
  79. package/dist/jsx-dev-runtime.mjs +4 -0
  80. package/dist/jsx-runtime.d.ts +1 -0
  81. package/dist/jsx-runtime.js +7 -0
  82. package/dist/jsx-runtime.mjs +4 -0
  83. package/dist/reactivity/batch.d.ts +27 -0
  84. package/dist/reactivity/batch.d.ts.map +1 -0
  85. package/dist/reactivity/computed.d.ts +41 -0
  86. package/dist/reactivity/computed.d.ts.map +1 -0
  87. package/dist/reactivity/effect.d.ts +79 -0
  88. package/dist/reactivity/effect.d.ts.map +1 -0
  89. package/dist/reactivity/index.d.ts +15 -0
  90. package/dist/reactivity/index.d.ts.map +1 -0
  91. package/dist/reactivity/scheduler.d.ts +35 -0
  92. package/dist/reactivity/scheduler.d.ts.map +1 -0
  93. package/dist/reactivity/signal.d.ts +36 -0
  94. package/dist/reactivity/signal.d.ts.map +1 -0
  95. package/dist/renderer/attributes.d.ts +8 -0
  96. package/dist/renderer/attributes.d.ts.map +1 -0
  97. package/dist/renderer/dom-ops.d.ts +30 -0
  98. package/dist/renderer/dom-ops.d.ts.map +1 -0
  99. package/dist/renderer/events.d.ts +21 -0
  100. package/dist/renderer/events.d.ts.map +1 -0
  101. package/dist/renderer/index.d.ts +12 -0
  102. package/dist/renderer/index.d.ts.map +1 -0
  103. package/dist/renderer/mount.d.ts +27 -0
  104. package/dist/renderer/mount.d.ts.map +1 -0
  105. package/dist/renderer/render-children.d.ts +19 -0
  106. package/dist/renderer/render-children.d.ts.map +1 -0
  107. package/dist/renderer/render-control-flow.d.ts +13 -0
  108. package/dist/renderer/render-control-flow.d.ts.map +1 -0
  109. package/dist/renderer/render-element.d.ts +13 -0
  110. package/dist/renderer/render-element.d.ts.map +1 -0
  111. package/dist/renderer/types.d.ts +65 -0
  112. package/dist/renderer/types.d.ts.map +1 -0
  113. package/dist/renderer/unmount.d.ts +20 -0
  114. package/dist/renderer/unmount.d.ts.map +1 -0
  115. package/dist/renderer.d.ts +1 -0
  116. package/dist/renderer.js +7 -0
  117. package/dist/renderer.mjs +4 -0
  118. package/dist/server/hydration-markers.d.ts +23 -0
  119. package/dist/server/hydration-markers.d.ts.map +1 -0
  120. package/dist/server/index.d.ts +9 -0
  121. package/dist/server/index.d.ts.map +1 -0
  122. package/dist/server/renderer.d.ts +33 -0
  123. package/dist/server/renderer.d.ts.map +1 -0
  124. package/dist/server/stream.d.ts +20 -0
  125. package/dist/server/stream.d.ts.map +1 -0
  126. package/dist/server.d.ts +1 -0
  127. package/dist/server.js +7 -0
  128. package/dist/server.mjs +4 -0
  129. package/dist/types.d.ts +48 -0
  130. package/dist/types.d.ts.map +1 -0
  131. package/package.json +116 -4
  132. package/bun.lock +0 -26
  133. package/src/index.ts +0 -1
  134. package/tsconfig.json +0 -29
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unmount.d.ts","sourceRoot":"","sources":["../../src/renderer/unmount.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,CAyB5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAgDnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAQzD"}
@@ -0,0 +1 @@
1
+ export * from './renderer/index';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./cjs/renderer/index.production.min.js');
5
+ } else {
6
+ module.exports = require('./cjs/renderer/index.development.js');
7
+ }
@@ -0,0 +1,4 @@
1
+ // ESM consumers: Node/bundler resolves the proper variant via the
2
+ // "exports" field in package.json (development / production conditions).
3
+ // This file is a safe fallback that points at the production build.
4
+ export * from './esm/renderer/index.production.min.js';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * SinwanJS Server — Hydration-Aware SSR Renderer
3
+ *
4
+ * Enhanced `renderToString` that injects hydration markers:
5
+ *
6
+ * data-sinwan-id="c0" — component boundary
7
+ * <!--sinwan-t:0-->val<!--/sinwan-t--> — reactive text boundary
8
+ * data-sinwan-ev="click:0" — event binding reference
9
+ *
10
+ * Usage:
11
+ * const html = await renderToHydratableString(App, { name: "World" });
12
+ * // → '<div data-sinwan-id="c0"><p>Count: <!--sinwan-t:0-->5<!--/sinwan-t--></p>...</div>'
13
+ */
14
+ import type { SinwanNode, SinwanComponent } from "../types.ts";
15
+ /**
16
+ * Render a component to an HTML string with hydration markers.
17
+ */
18
+ export declare function renderToHydratableString(component: SinwanComponent<any>, props?: Record<string, unknown>): Promise<string>;
19
+ /**
20
+ * Render a raw SinwanNode tree with hydration markers.
21
+ */
22
+ export declare function renderNodeToHydratableString(node: SinwanNode): Promise<string>;
23
+ //# sourceMappingURL=hydration-markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydration-markers.d.ts","sourceRoot":"","sources":["../../src/server/hydration-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAiB,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiC9E;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,EAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Sinwan Server — Public API
3
+ *
4
+ * Server-side rendering, streaming, and hydration marker injection.
5
+ */
6
+ export { renderToString, renderPage, registerPage, getPage, hasPage, isSlots, } from "./renderer.ts";
7
+ export { streamPage, streamHydratablePage, streamHydratableNode, } from "./stream.ts";
8
+ export { renderToHydratableString, renderNodeToHydratableString, } from "./hydration-markers.ts";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,UAAU,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,GACR,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SinwanJS View Module — Renderer & Component Registry
3
+ *
4
+ * Renders Sinwan component trees to HTML strings.
5
+ * Supports async components, caching, and streaming.
6
+ */
7
+ import type { SinwanNode, SinwanPage, SinwanSlots } from "../types.ts";
8
+ /**
9
+ * Register a page renderer by name.
10
+ */
11
+ export declare function registerPage<D extends object = {}>(name: string, page: SinwanPage<D>): void;
12
+ /**
13
+ * Get a registered page by name.
14
+ */
15
+ export declare function getPage<D extends object = {}>(name: string): SinwanPage<D> | undefined;
16
+ /**
17
+ * Check if a page is registered.
18
+ */
19
+ export declare function hasPage(name: string): boolean;
20
+ /**
21
+ * Render a registered page to an HTML string.
22
+ */
23
+ export declare function renderPage<D extends object = {}>(name: string, data: D): Promise<string>;
24
+ /**
25
+ * Render a node tree to an HTML string.
26
+ * Handles primitives, elements, components, and arrays.
27
+ */
28
+ export declare function renderToString(node: SinwanNode): Promise<string>;
29
+ /**
30
+ * Check if children is a slots object (named slots).
31
+ */
32
+ export declare function isSlots(children: unknown): children is SinwanSlots;
33
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/server/renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EAGV,UAAU,EACV,WAAW,EACZ,MAAM,aAAa,CAAC;AAarB;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,EAChD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAClB,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,EAC3C,IAAI,EAAE,MAAM,GACX,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAE3B;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,EACpD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyCtE;AA4ID;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,WAAW,CAOlE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SinwanJS View Module — Streaming SSR
3
+ *
4
+ * Progressive HTML streaming using Bun's native ReadableStream.
5
+ * Streams chunks as they resolve without waiting for full tree.
6
+ */
7
+ import type { SinwanNode, SinwanPage, SinwanComponent } from "../types.ts";
8
+ /**
9
+ * Stream a page to a ReadableStream.
10
+ */
11
+ export declare function streamPage<D extends object = {}>(page: SinwanPage<D>, data: D): ReadableStream<Uint8Array>;
12
+ /**
13
+ * Stream a component with hydration markers.
14
+ */
15
+ export declare function streamHydratablePage(component: SinwanComponent<any>, props?: Record<string, unknown>): ReadableStream<Uint8Array>;
16
+ /**
17
+ * Stream a raw node tree with hydration markers.
18
+ */
19
+ export declare function streamHydratableNode(node: SinwanNode): ReadableStream<Uint8Array>;
20
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/server/stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EAEV,UAAU,EACV,eAAe,EAChB,MAAM,aAAa,CAAC;AAoDrB;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,EAC9C,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,CAAC,GACN,cAAc,CAAC,UAAU,CAAC,CAmB5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,EAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,cAAc,CAAC,UAAU,CAAC,CAqB5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAAC,UAAU,CAAC,CAc5B"}
@@ -0,0 +1 @@
1
+ export * from './server/index';
package/dist/server.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./cjs/server/index.production.min.js');
5
+ } else {
6
+ module.exports = require('./cjs/server/index.development.js');
7
+ }
@@ -0,0 +1,4 @@
1
+ // ESM consumers: Node/bundler resolves the proper variant via the
2
+ // "exports" field in package.json (development / production conditions).
3
+ // This file is a safe fallback that points at the production build.
4
+ export * from './esm/server/index.production.min.js';
@@ -0,0 +1,48 @@
1
+ /**
2
+ * SinwanJS View Module — Core Types
3
+ *
4
+ * Type definitions for the Sinwan component system.
5
+ * Mirrors React's FC model but compiles to optimized string builders.
6
+ */
7
+ import type { HtmlEscapedString } from "./jsx/jsx-runtime";
8
+ import type { Signal, Computed } from "./reactivity/index.ts";
9
+ export type SinwanPrimitive = string | number | boolean | null | undefined;
10
+ /**
11
+ * A value that may be plain `T` or a reactive container (`Signal<T>` /
12
+ * `Computed<T>`). Used by JSX attribute types so reactive props type-check.
13
+ */
14
+ export type Reactive<T> = T | Signal<T> | Computed<T>;
15
+ export interface SinwanElement {
16
+ tag: string | symbol | SinwanComponent<any>;
17
+ props: Record<string, unknown>;
18
+ children: SinwanNode[];
19
+ }
20
+ export type SinwanNode = SinwanPrimitive | SinwanElement | Promise<SinwanElement> | HtmlEscapedString | Signal<unknown> | Computed<unknown> | SinwanNode[];
21
+ export type SinwanSlots = Record<string, SinwanNode>;
22
+ export interface SinwanComponent<P extends object = {}> {
23
+ (props: P & {
24
+ children?: SinwanNode | SinwanSlots;
25
+ }): SinwanElement | Promise<SinwanElement>;
26
+ _SinwanComponent?: true;
27
+ _displayName?: string;
28
+ }
29
+ export interface SinwanPage<D extends object = {}> {
30
+ (data: D): SinwanElement | Promise<SinwanElement>;
31
+ _SinwanPage?: true;
32
+ _displayName?: string;
33
+ }
34
+ export type SinwanLayout<P extends object = {}> = SinwanComponent<P & {
35
+ children: SinwanNode;
36
+ }>;
37
+ export type RenderResult = SinwanElement | Promise<SinwanElement>;
38
+ export type PropsWithChildren<P = {}> = P & {
39
+ children?: SinwanNode;
40
+ };
41
+ export type PropsWithSlots<P = {}> = P & {
42
+ children?: SinwanSlots;
43
+ };
44
+ export interface PageEntry<D extends object = {}> {
45
+ name: string;
46
+ page: SinwanPage<D>;
47
+ }
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAGtD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAID,MAAM,MAAM,UAAU,GAClB,eAAe,GACf,aAAa,GACb,OAAO,CAAC,aAAa,CAAC,GACtB,iBAAiB,GACjB,MAAM,CAAC,OAAO,CAAC,GACf,QAAQ,CAAC,OAAO,CAAC,GACjB,UAAU,EAAE,CAAC;AAGjB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAGrD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE;IACpD,CACE,KAAK,EAAE,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,CAAA;KAAE,GACjD,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE;IAC/C,CAAC,IAAI,EAAE,CAAC,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,IAAI,eAAe,CAC/D,CAAC,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAE,CAC7B,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAGlE,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAGtE,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAGpE,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,10 +1,122 @@
1
1
  {
2
2
  "name": "sinwan",
3
- "version": "0.0.0",
4
- "module": "src/index.ts",
5
- "type": "module",
3
+ "version": "1.0.0",
4
+ "description": "Sinwan — Reactive UI library with SSR, hydration, and fine-grained reactivity",
5
+ "type": "commonjs",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": {
13
+ "development": "./dist/esm/index.development.js",
14
+ "production": "./dist/esm/index.production.min.js",
15
+ "default": "./dist/esm/index.production.min.js"
16
+ },
17
+ "require": {
18
+ "development": "./dist/cjs/index.development.js",
19
+ "production": "./dist/cjs/index.production.min.js",
20
+ "default": "./dist/index.js"
21
+ },
22
+ "default": "./dist/index.js"
23
+ },
24
+ "./jsx-runtime": {
25
+ "types": "./dist/jsx-runtime.d.ts",
26
+ "import": {
27
+ "development": "./dist/esm/jsx/jsx-runtime.development.js",
28
+ "production": "./dist/esm/jsx/jsx-runtime.production.min.js",
29
+ "default": "./dist/esm/jsx/jsx-runtime.production.min.js"
30
+ },
31
+ "require": {
32
+ "development": "./dist/cjs/jsx/jsx-runtime.development.js",
33
+ "production": "./dist/cjs/jsx/jsx-runtime.production.min.js",
34
+ "default": "./dist/jsx-runtime.js"
35
+ },
36
+ "default": "./dist/jsx-runtime.js"
37
+ },
38
+ "./jsx-dev-runtime": {
39
+ "types": "./dist/jsx-dev-runtime.d.ts",
40
+ "import": {
41
+ "development": "./dist/esm/jsx/jsx-dev-runtime.development.js",
42
+ "production": "./dist/esm/jsx/jsx-dev-runtime.production.min.js",
43
+ "default": "./dist/esm/jsx/jsx-dev-runtime.production.min.js"
44
+ },
45
+ "require": {
46
+ "development": "./dist/cjs/jsx/jsx-dev-runtime.development.js",
47
+ "production": "./dist/cjs/jsx/jsx-dev-runtime.production.min.js",
48
+ "default": "./dist/jsx-dev-runtime.js"
49
+ },
50
+ "default": "./dist/jsx-dev-runtime.js"
51
+ },
52
+ "./server": {
53
+ "types": "./dist/server.d.ts",
54
+ "import": {
55
+ "development": "./dist/esm/server/index.development.js",
56
+ "production": "./dist/esm/server/index.production.min.js",
57
+ "default": "./dist/esm/server/index.production.min.js"
58
+ },
59
+ "require": {
60
+ "development": "./dist/cjs/server/index.development.js",
61
+ "production": "./dist/cjs/server/index.production.min.js",
62
+ "default": "./dist/server.js"
63
+ },
64
+ "default": "./dist/server.js"
65
+ },
66
+ "./renderer": {
67
+ "types": "./dist/renderer.d.ts",
68
+ "import": {
69
+ "development": "./dist/esm/renderer/index.development.js",
70
+ "production": "./dist/esm/renderer/index.production.min.js",
71
+ "default": "./dist/esm/renderer/index.production.min.js"
72
+ },
73
+ "require": {
74
+ "development": "./dist/cjs/renderer/index.development.js",
75
+ "production": "./dist/cjs/renderer/index.production.min.js",
76
+ "default": "./dist/renderer.js"
77
+ },
78
+ "default": "./dist/renderer.js"
79
+ },
80
+ "./package.json": "./package.json"
81
+ },
82
+ "files": [
83
+ "dist",
84
+ "README.md",
85
+ "LICENSE"
86
+ ],
87
+ "sideEffects": false,
88
+ "scripts": {
89
+ "build": "bun run build.ts",
90
+ "build:types": "tsc -p tsconfig.build.json",
91
+ "clean": "rm -rf dist",
92
+ "prepublishOnly": "bun run build",
93
+ "test": "bun test",
94
+ "typecheck": "tsc --noEmit"
95
+ },
96
+ "keywords": [
97
+ "sinwan",
98
+ "reactive",
99
+ "ui",
100
+ "ssr",
101
+ "hydration",
102
+ "jsx",
103
+ "signals",
104
+ "components",
105
+ "framework",
106
+ "bun"
107
+ ],
108
+ "author": "Mohammed Ben Cheikh",
109
+ "license": "MIT",
110
+ "bugs": "https://github.com/sinwanjs/sinwan/issues",
111
+ "homepage": "https://sinwanjs.com",
112
+ "repository": {
113
+ "type": "git",
114
+ "url": "https://github.com/sinwanjs/sinwan",
115
+ "directory": "sinwan"
116
+ },
6
117
  "devDependencies": {
7
- "@types/bun": "latest"
118
+ "@types/bun": "latest",
119
+ "happy-dom": "^20.9.0"
8
120
  },
9
121
  "peerDependencies": {
10
122
  "typescript": "^5"
package/bun.lock DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "lockfileVersion": 1,
3
- "configVersion": 1,
4
- "workspaces": {
5
- "": {
6
- "name": "sinwan",
7
- "devDependencies": {
8
- "@types/bun": "latest",
9
- },
10
- "peerDependencies": {
11
- "typescript": "^5",
12
- },
13
- },
14
- },
15
- "packages": {
16
- "@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
17
-
18
- "@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="],
19
-
20
- "bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
21
-
22
- "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
23
-
24
- "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
25
- }
26
- }
package/src/index.ts DELETED
@@ -1 +0,0 @@
1
- console.log("Hello via Bun!");
package/tsconfig.json DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- // Environment setup & latest features
4
- "lib": ["ESNext"],
5
- "target": "ESNext",
6
- "module": "Preserve",
7
- "moduleDetection": "force",
8
- "jsx": "react-jsx",
9
- "allowJs": true,
10
-
11
- // Bundler mode
12
- "moduleResolution": "bundler",
13
- "allowImportingTsExtensions": true,
14
- "verbatimModuleSyntax": true,
15
- "noEmit": true,
16
-
17
- // Best practices
18
- "strict": true,
19
- "skipLibCheck": true,
20
- "noFallthroughCasesInSwitch": true,
21
- "noUncheckedIndexedAccess": true,
22
- "noImplicitOverride": true,
23
-
24
- // Some stricter flags (disabled by default)
25
- "noUnusedLocals": false,
26
- "noUnusedParameters": false,
27
- "noPropertyAccessFromIndexSignature": false
28
- }
29
- }