sinwan 0.1.0 → 1.1.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 (90) hide show
  1. package/README.md +66 -39
  2. package/dist/cjs/index.development.js +2373 -842
  3. package/dist/cjs/index.development.js.map +22 -18
  4. package/dist/cjs/index.production.min.js +2 -2
  5. package/dist/cjs/index.production.min.js.map +22 -18
  6. package/dist/cjs/jsx/jsx-dev-runtime.development.js +6 -16
  7. package/dist/cjs/jsx/jsx-dev-runtime.development.js.map +3 -3
  8. package/dist/cjs/jsx/jsx-dev-runtime.production.min.js +2 -2
  9. package/dist/cjs/jsx/jsx-dev-runtime.production.min.js.map +3 -3
  10. package/dist/cjs/jsx/jsx-runtime.development.js +6 -16
  11. package/dist/cjs/jsx/jsx-runtime.development.js.map +3 -3
  12. package/dist/cjs/jsx/jsx-runtime.production.min.js +2 -2
  13. package/dist/cjs/jsx/jsx-runtime.production.min.js.map +3 -3
  14. package/dist/cjs/renderer/index.development.js +1581 -0
  15. package/dist/cjs/renderer/index.development.js.map +25 -0
  16. package/dist/cjs/renderer/index.production.min.js +3 -0
  17. package/dist/cjs/renderer/index.production.min.js.map +25 -0
  18. package/dist/cjs/server/index.development.js +1210 -362
  19. package/dist/cjs/server/index.development.js.map +13 -10
  20. package/dist/cjs/server/index.production.min.js +2 -2
  21. package/dist/cjs/server/index.production.min.js.map +13 -10
  22. package/dist/component/control-flow.d.ts +71 -0
  23. package/dist/component/control-flow.d.ts.map +1 -0
  24. package/dist/component/index.d.ts +3 -1
  25. package/dist/component/index.d.ts.map +1 -1
  26. package/dist/component/instance.d.ts +7 -1
  27. package/dist/component/instance.d.ts.map +1 -1
  28. package/dist/component/lifecycle.d.ts +2 -1
  29. package/dist/component/lifecycle.d.ts.map +1 -1
  30. package/dist/component/provide-inject.d.ts +11 -5
  31. package/dist/component/provide-inject.d.ts.map +1 -1
  32. package/dist/esm/index.development.js +2253 -744
  33. package/dist/esm/index.development.js.map +22 -18
  34. package/dist/esm/index.production.min.js +2 -2
  35. package/dist/esm/index.production.min.js.map +22 -18
  36. package/dist/esm/jsx/jsx-dev-runtime.development.js +6 -16
  37. package/dist/esm/jsx/jsx-dev-runtime.development.js.map +3 -3
  38. package/dist/esm/jsx/jsx-dev-runtime.production.min.js +2 -2
  39. package/dist/esm/jsx/jsx-dev-runtime.production.min.js.map +3 -3
  40. package/dist/esm/jsx/jsx-runtime.development.js +6 -16
  41. package/dist/esm/jsx/jsx-runtime.development.js.map +3 -3
  42. package/dist/esm/jsx/jsx-runtime.production.min.js +2 -2
  43. package/dist/esm/jsx/jsx-runtime.production.min.js.map +3 -3
  44. package/dist/esm/renderer/index.development.js +1530 -0
  45. package/dist/esm/renderer/index.development.js.map +25 -0
  46. package/dist/esm/renderer/index.production.min.js +4 -0
  47. package/dist/esm/renderer/index.production.min.js.map +25 -0
  48. package/dist/esm/server/index.development.js +1210 -362
  49. package/dist/esm/server/index.development.js.map +13 -10
  50. package/dist/esm/server/index.production.min.js +2 -2
  51. package/dist/esm/server/index.production.min.js.map +13 -10
  52. package/dist/hydration/walk.d.ts.map +1 -1
  53. package/dist/index.d.ts +6 -6
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/jsx/jsx-runtime.d.ts +13 -0
  56. package/dist/jsx/jsx-runtime.d.ts.map +1 -1
  57. package/dist/jsx/jsx-types.d.ts +122 -57
  58. package/dist/jsx/jsx-types.d.ts.map +1 -1
  59. package/dist/renderer/attributes.d.ts +11 -0
  60. package/dist/renderer/attributes.d.ts.map +1 -1
  61. package/dist/renderer/dom-ops.d.ts +4 -1
  62. package/dist/renderer/dom-ops.d.ts.map +1 -1
  63. package/dist/renderer/index.d.ts +2 -2
  64. package/dist/renderer/index.d.ts.map +1 -1
  65. package/dist/renderer/mount.d.ts +2 -5
  66. package/dist/renderer/mount.d.ts.map +1 -1
  67. package/dist/renderer/render-children.d.ts +2 -2
  68. package/dist/renderer/render-children.d.ts.map +1 -1
  69. package/dist/renderer/render-control-flow.d.ts +13 -0
  70. package/dist/renderer/render-control-flow.d.ts.map +1 -0
  71. package/dist/renderer/render-element.d.ts +1 -1
  72. package/dist/renderer/render-element.d.ts.map +1 -1
  73. package/dist/renderer/types.d.ts +10 -1
  74. package/dist/renderer/types.d.ts.map +1 -1
  75. package/dist/renderer/unmount.d.ts +20 -0
  76. package/dist/renderer/unmount.d.ts.map +1 -0
  77. package/dist/renderer.d.ts +1 -0
  78. package/dist/renderer.js +7 -0
  79. package/dist/renderer.mjs +4 -0
  80. package/dist/server/attribute-utils.d.ts +2 -0
  81. package/dist/server/attribute-utils.d.ts.map +1 -0
  82. package/dist/server/hydration-markers.d.ts.map +1 -1
  83. package/dist/server/index.d.ts +1 -1
  84. package/dist/server/index.d.ts.map +1 -1
  85. package/dist/server/renderer.d.ts.map +1 -1
  86. package/dist/server/stream.d.ts +9 -1
  87. package/dist/server/stream.d.ts.map +1 -1
  88. package/dist/types.d.ts +8 -2
  89. package/dist/types.d.ts.map +1 -1
  90. package/package.json +19 -5
@@ -4,9 +4,17 @@
4
4
  * Progressive HTML streaming using Bun's native ReadableStream.
5
5
  * Streams chunks as they resolve without waiting for full tree.
6
6
  */
7
- import type { SinwanPage } from "../types.ts";
7
+ import type { SinwanNode, SinwanPage, SinwanComponent } from "../types.ts";
8
8
  /**
9
9
  * Stream a page to a ReadableStream.
10
10
  */
11
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>;
12
20
  //# sourceMappingURL=stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/server/stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAC;AAqBzE;;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"}
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;AAkErB;;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"}
package/dist/types.d.ts CHANGED
@@ -5,13 +5,19 @@
5
5
  * Mirrors React's FC model but compiles to optimized string builders.
6
6
  */
7
7
  import type { HtmlEscapedString } from "./jsx/jsx-runtime";
8
+ import type { Signal, Computed } from "./reactivity/index.ts";
8
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>;
9
15
  export interface SinwanElement {
10
- tag: string | SinwanComponent<any>;
16
+ tag: string | symbol | SinwanComponent<any>;
11
17
  props: Record<string, unknown>;
12
18
  children: SinwanNode[];
13
19
  }
14
- export type SinwanNode = SinwanPrimitive | SinwanElement | Promise<SinwanElement> | HtmlEscapedString | SinwanNode[];
20
+ export type SinwanNode = SinwanPrimitive | SinwanElement | Promise<SinwanElement> | HtmlEscapedString | Signal<unknown> | Computed<unknown> | SinwanNode[];
15
21
  export type SinwanSlots = Record<string, SinwanNode>;
16
22
  export interface SinwanComponent<P extends object = {}> {
17
23
  (props: P & {
@@ -1 +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;AAG3D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAG3E,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAGD,MAAM,MAAM,UAAU,GAClB,eAAe,GACf,aAAa,GACb,OAAO,CAAC,aAAa,CAAC,GACtB,iBAAiB,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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "sinwan",
3
- "version": "0.1.0",
3
+ "version": "1.1.0",
4
4
  "description": "Sinwan — Reactive UI library with SSR, hydration, and fine-grained reactivity",
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",
@@ -63,6 +63,20 @@
63
63
  },
64
64
  "default": "./dist/server.js"
65
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
+ },
66
80
  "./package.json": "./package.json"
67
81
  },
68
82
  "files": [
@@ -75,7 +89,7 @@
75
89
  "build": "bun run build.ts",
76
90
  "build:types": "tsc -p tsconfig.build.json",
77
91
  "clean": "rm -rf dist",
78
- "prepublishOnly": "bun run build",
92
+ "prepublishOnly": "bun run build && bun run build:types && bun run test && bun run typecheck",
79
93
  "test": "bun test",
80
94
  "typecheck": "tsc --noEmit"
81
95
  },
@@ -93,12 +107,12 @@
93
107
  ],
94
108
  "author": "Mohammed Ben Cheikh",
95
109
  "license": "MIT",
96
- "bugs": "https://github.com/sinwanjs/sinwan/issues",
110
+ "bugs": "https://github.com/sinwanjs/sinwan-ui/issues",
97
111
  "homepage": "https://sinwanjs.com",
98
112
  "repository": {
99
113
  "type": "git",
100
- "url": "https://github.com/sinwanjs/sinwan",
101
- "directory": "sinwan"
114
+ "url": "https://github.com/sinwanjs/sinwan-ui",
115
+ "directory": "sinwan-ui"
102
116
  },
103
117
  "devDependencies": {
104
118
  "@types/bun": "latest",