@flight-framework/core 0.3.1 → 0.3.2

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 (142) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +541 -541
  3. package/dist/actions/index.js +1 -1
  4. package/dist/adapters/index.js +1 -1
  5. package/dist/cache/index.js +1 -1
  6. package/dist/{chunk-FSJNOPYE.js → chunk-2JVEH76V.js} +3 -3
  7. package/dist/chunk-2JVEH76V.js.map +1 -0
  8. package/dist/{chunk-VPFMHGEV.js → chunk-3N5ZBVZJ.js} +2 -2
  9. package/dist/chunk-3N5ZBVZJ.js.map +1 -0
  10. package/dist/{chunk-2F2QU6RC.js → chunk-3UQJE3XZ.js} +2 -2
  11. package/dist/chunk-3UQJE3XZ.js.map +1 -0
  12. package/dist/{chunk-3KRBRSRJ.js → chunk-4U7CJVNQ.js} +2 -2
  13. package/dist/chunk-4U7CJVNQ.js.map +1 -0
  14. package/dist/{chunk-PDW5WCMW.js → chunk-5XHOLZBJ.js} +2 -2
  15. package/dist/chunk-5XHOLZBJ.js.map +1 -0
  16. package/dist/{chunk-MDQNNIHH.js → chunk-65JYF3DJ.js} +2 -2
  17. package/dist/chunk-65JYF3DJ.js.map +1 -0
  18. package/dist/{chunk-K2CQZPCG.js → chunk-6GI6HFSQ.js} +2 -2
  19. package/dist/chunk-6GI6HFSQ.js.map +1 -0
  20. package/dist/{chunk-3ZSSRE6M.js → chunk-6IG6XIXU.js} +29 -3
  21. package/dist/chunk-6IG6XIXU.js.map +1 -0
  22. package/dist/{chunk-PVUMB632.js → chunk-A2QRUBVE.js} +2 -2
  23. package/dist/chunk-A2QRUBVE.js.map +1 -0
  24. package/dist/{chunk-W6D62JCI.js → chunk-A4TKWQBU.js} +2 -2
  25. package/dist/chunk-A4TKWQBU.js.map +1 -0
  26. package/dist/{chunk-GCQZ4FHI.js → chunk-ARBKF6VI.js} +2 -2
  27. package/dist/{chunk-GCQZ4FHI.js.map → chunk-ARBKF6VI.js.map} +1 -1
  28. package/dist/{chunk-ZVC3ZWLM.js → chunk-B2LPSCES.js} +2 -2
  29. package/dist/chunk-B2LPSCES.js.map +1 -0
  30. package/dist/{chunk-62C7LX2E.js → chunk-CKJHJPKQ.js} +2 -2
  31. package/dist/chunk-CKJHJPKQ.js.map +1 -0
  32. package/dist/{chunk-RSVA2EYO.js → chunk-CNY3ZUVG.js} +2 -2
  33. package/dist/chunk-CNY3ZUVG.js.map +1 -0
  34. package/dist/{chunk-IXMD5QH2.js → chunk-EHVUAFNH.js} +2 -2
  35. package/dist/chunk-EHVUAFNH.js.map +1 -0
  36. package/dist/{chunk-P6WSBVDT.js → chunk-FRAH5QNY.js} +4 -4
  37. package/dist/chunk-FRAH5QNY.js.map +1 -0
  38. package/dist/{chunk-MQQLYWZZ.js → chunk-GNS2FGPC.js} +2 -2
  39. package/dist/chunk-GNS2FGPC.js.map +1 -0
  40. package/dist/{chunk-TASAT7KB.js → chunk-HNPO6LFW.js} +2 -2
  41. package/dist/chunk-HNPO6LFW.js.map +1 -0
  42. package/dist/{chunk-ROJFQCGV.js → chunk-KDEA64UX.js} +5 -5
  43. package/dist/chunk-KDEA64UX.js.map +1 -0
  44. package/dist/{chunk-NWMJYTMB.js → chunk-LAKHYTHL.js} +3 -3
  45. package/dist/chunk-LAKHYTHL.js.map +1 -0
  46. package/dist/{chunk-R7SQAREQ.js → chunk-LKOPJ3GS.js} +2 -2
  47. package/dist/chunk-LKOPJ3GS.js.map +1 -0
  48. package/dist/{chunk-WOEIJWGJ.js → chunk-NZS2YJ43.js} +2 -2
  49. package/dist/chunk-NZS2YJ43.js.map +1 -0
  50. package/dist/{chunk-3QP3E7HS.js → chunk-OZ3EXPLE.js} +2 -2
  51. package/dist/chunk-OZ3EXPLE.js.map +1 -0
  52. package/dist/{chunk-YHEVHRLH.js → chunk-OZBPR27I.js} +2 -2
  53. package/dist/chunk-OZBPR27I.js.map +1 -0
  54. package/dist/{chunk-T4Z4HM4W.js → chunk-PAVI5W6M.js} +3 -3
  55. package/dist/chunk-PAVI5W6M.js.map +1 -0
  56. package/dist/{chunk-XSY5AAXT.js → chunk-PO7IHPFF.js} +2 -2
  57. package/dist/chunk-PO7IHPFF.js.map +1 -0
  58. package/dist/{chunk-SUILH4ID.js → chunk-QK6UEQ75.js} +2 -2
  59. package/dist/chunk-QK6UEQ75.js.map +1 -0
  60. package/dist/{chunk-OYF2OAKS.js → chunk-R7MEVVA4.js} +2 -2
  61. package/dist/chunk-R7MEVVA4.js.map +1 -0
  62. package/dist/{chunk-WFAWAHJH.js → chunk-UFWGOJL7.js} +2 -2
  63. package/dist/chunk-UFWGOJL7.js.map +1 -0
  64. package/dist/{chunk-XOIYNY4I.js → chunk-VNO2YUVD.js} +2 -2
  65. package/dist/chunk-VNO2YUVD.js.map +1 -0
  66. package/dist/{chunk-ZIE56LCA.js → chunk-XU6MRYG2.js} +3 -3
  67. package/dist/chunk-XU6MRYG2.js.map +1 -0
  68. package/dist/{chunk-6BDCTUQY.js → chunk-YNTMYL36.js} +3 -3
  69. package/dist/chunk-YNTMYL36.js.map +1 -0
  70. package/dist/client.d.ts +25 -0
  71. package/dist/client.js +16 -0
  72. package/dist/client.js.map +1 -0
  73. package/dist/config/index.js +1 -1
  74. package/dist/errors/index.js +2 -2
  75. package/dist/file-router/index.js +1 -1
  76. package/dist/file-router/streaming-hints.js +1 -1
  77. package/dist/handlers/index.js +1 -1
  78. package/dist/index.js +30 -30
  79. package/dist/index.js.map +1 -1
  80. package/dist/islands/index.js +1 -1
  81. package/dist/middleware/index.js +1 -1
  82. package/dist/react/index.js +2 -2
  83. package/dist/react/index.js.map +1 -1
  84. package/dist/render/index.js +1 -1
  85. package/dist/router/index.js +1 -1
  86. package/dist/rsc/adapters/index.js +4 -4
  87. package/dist/rsc/adapters/preact.js +1 -1
  88. package/dist/rsc/adapters/react.js +1 -1
  89. package/dist/rsc/adapters/solid.js +1 -1
  90. package/dist/rsc/adapters/vue.js +1 -1
  91. package/dist/rsc/boundaries.js +1 -1
  92. package/dist/rsc/context.js +1 -1
  93. package/dist/rsc/index.d.ts +211 -6
  94. package/dist/rsc/index.js +11 -11
  95. package/dist/rsc/legacy.d.ts +26 -2
  96. package/dist/rsc/legacy.js +1 -1
  97. package/dist/rsc/payload.js +1 -1
  98. package/dist/rsc/plugins/esbuild.js +2 -2
  99. package/dist/rsc/plugins/index.js +4 -4
  100. package/dist/rsc/plugins/rollup.js +2 -2
  101. package/dist/rsc/renderer.js +3 -3
  102. package/dist/rsc/stream.js +1 -1
  103. package/dist/rsc/vite-plugin.js +2 -2
  104. package/dist/server/index.js +4 -4
  105. package/dist/streaming/adapters/index.js +1 -1
  106. package/dist/streaming/conditional.js +1 -1
  107. package/dist/streaming/index.js +1 -1
  108. package/dist/streaming/observability.js +2 -2
  109. package/dist/streaming/priority.js +1 -1
  110. package/dist/utils/index.js +1 -1
  111. package/package.json +228 -222
  112. package/dist/chunk-2F2QU6RC.js.map +0 -1
  113. package/dist/chunk-3KRBRSRJ.js.map +0 -1
  114. package/dist/chunk-3QP3E7HS.js.map +0 -1
  115. package/dist/chunk-3ZSSRE6M.js.map +0 -1
  116. package/dist/chunk-62C7LX2E.js.map +0 -1
  117. package/dist/chunk-6BDCTUQY.js.map +0 -1
  118. package/dist/chunk-FSJNOPYE.js.map +0 -1
  119. package/dist/chunk-IXMD5QH2.js.map +0 -1
  120. package/dist/chunk-K2CQZPCG.js.map +0 -1
  121. package/dist/chunk-MDQNNIHH.js.map +0 -1
  122. package/dist/chunk-MQQLYWZZ.js.map +0 -1
  123. package/dist/chunk-NWMJYTMB.js.map +0 -1
  124. package/dist/chunk-OYF2OAKS.js.map +0 -1
  125. package/dist/chunk-P6WSBVDT.js.map +0 -1
  126. package/dist/chunk-PDW5WCMW.js.map +0 -1
  127. package/dist/chunk-PVUMB632.js.map +0 -1
  128. package/dist/chunk-R7SQAREQ.js.map +0 -1
  129. package/dist/chunk-ROJFQCGV.js.map +0 -1
  130. package/dist/chunk-RSVA2EYO.js.map +0 -1
  131. package/dist/chunk-SUILH4ID.js.map +0 -1
  132. package/dist/chunk-T4Z4HM4W.js.map +0 -1
  133. package/dist/chunk-TASAT7KB.js.map +0 -1
  134. package/dist/chunk-VPFMHGEV.js.map +0 -1
  135. package/dist/chunk-W6D62JCI.js.map +0 -1
  136. package/dist/chunk-WFAWAHJH.js.map +0 -1
  137. package/dist/chunk-WOEIJWGJ.js.map +0 -1
  138. package/dist/chunk-XOIYNY4I.js.map +0 -1
  139. package/dist/chunk-XSY5AAXT.js.map +0 -1
  140. package/dist/chunk-YHEVHRLH.js.map +0 -1
  141. package/dist/chunk-ZIE56LCA.js.map +0 -1
  142. package/dist/chunk-ZVC3ZWLM.js.map +0 -1
package/package.json CHANGED
@@ -1,222 +1,228 @@
1
- {
2
- "name": "@flight-framework/core",
3
- "version": "0.3.1",
4
- "description": "Core primitives for Flight Framework - routing, rendering, caching",
5
- "keywords": [
6
- "flight",
7
- "framework",
8
- "core",
9
- "ssr",
10
- "routing"
11
- ],
12
- "license": "MIT",
13
- "author": "Flight Contributors",
14
- "type": "module",
15
- "exports": {
16
- ".": {
17
- "types": "./dist/index.d.ts",
18
- "import": "./dist/index.js"
19
- },
20
- "./errors": {
21
- "types": "./dist/errors/index.d.ts",
22
- "import": "./dist/errors/index.js"
23
- },
24
- "./react": {
25
- "types": "./dist/react/index.d.ts",
26
- "import": "./dist/react/index.js"
27
- },
28
- "./utils": {
29
- "types": "./dist/utils/index.d.ts",
30
- "import": "./dist/utils/index.js"
31
- },
32
- "./router": {
33
- "types": "./dist/router/index.d.ts",
34
- "import": "./dist/router/index.js"
35
- },
36
- "./render": {
37
- "types": "./dist/render/index.d.ts",
38
- "import": "./dist/render/index.js"
39
- },
40
- "./cache": {
41
- "types": "./dist/cache/index.d.ts",
42
- "import": "./dist/cache/index.js"
43
- },
44
- "./middleware": {
45
- "types": "./dist/middleware/index.d.ts",
46
- "import": "./dist/middleware/index.js"
47
- },
48
- "./config": {
49
- "types": "./dist/config/index.d.ts",
50
- "import": "./dist/config/index.js"
51
- },
52
- "./adapters": {
53
- "types": "./dist/adapters/index.d.ts",
54
- "import": "./dist/adapters/index.js"
55
- },
56
- "./server": {
57
- "types": "./dist/server/index.d.ts",
58
- "import": "./dist/server/index.js"
59
- },
60
- "./file-router": {
61
- "types": "./dist/file-router/index.d.ts",
62
- "import": "./dist/file-router/index.js"
63
- },
64
- "./actions": {
65
- "types": "./dist/actions/index.d.ts",
66
- "import": "./dist/actions/index.js"
67
- },
68
- "./actions/middleware": {
69
- "types": "./dist/actions/middleware.d.ts",
70
- "import": "./dist/actions/middleware.js"
71
- },
72
- "./actions/streaming": {
73
- "types": "./dist/actions/streaming.d.ts",
74
- "import": "./dist/actions/streaming.js"
75
- },
76
- "./actions/queue": {
77
- "types": "./dist/actions/queue.d.ts",
78
- "import": "./dist/actions/queue.js"
79
- },
80
- "./handlers": {
81
- "types": "./dist/handlers/index.d.ts",
82
- "import": "./dist/handlers/index.js"
83
- },
84
- "./streaming": {
85
- "types": "./dist/streaming/index.d.ts",
86
- "import": "./dist/streaming/index.js"
87
- },
88
- "./streaming/priority": {
89
- "types": "./dist/streaming/priority.d.ts",
90
- "import": "./dist/streaming/priority.js"
91
- },
92
- "./streaming/observability": {
93
- "types": "./dist/streaming/observability.d.ts",
94
- "import": "./dist/streaming/observability.js"
95
- },
96
- "./streaming/conditional": {
97
- "types": "./dist/streaming/conditional.d.ts",
98
- "import": "./dist/streaming/conditional.js"
99
- },
100
- "./streaming/adapters": {
101
- "types": "./dist/streaming/adapters/index.d.ts",
102
- "import": "./dist/streaming/adapters/index.js"
103
- },
104
- "./islands": {
105
- "types": "./dist/islands/index.d.ts",
106
- "import": "./dist/islands/index.js"
107
- },
108
- "./file-router/streaming-hints": {
109
- "types": "./dist/file-router/streaming-hints.d.ts",
110
- "import": "./dist/file-router/streaming-hints.js"
111
- },
112
- "./rsc": {
113
- "types": "./dist/rsc/index.d.ts",
114
- "import": "./dist/rsc/index.js"
115
- },
116
- "./rsc/payload": {
117
- "types": "./dist/rsc/payload.d.ts",
118
- "import": "./dist/rsc/payload.js"
119
- },
120
- "./rsc/boundaries": {
121
- "types": "./dist/rsc/boundaries.d.ts",
122
- "import": "./dist/rsc/boundaries.js"
123
- },
124
- "./rsc/context": {
125
- "types": "./dist/rsc/context.d.ts",
126
- "import": "./dist/rsc/context.js"
127
- },
128
- "./rsc/stream": {
129
- "types": "./dist/rsc/stream.d.ts",
130
- "import": "./dist/rsc/stream.js"
131
- },
132
- "./rsc/renderer": {
133
- "types": "./dist/rsc/renderer.d.ts",
134
- "import": "./dist/rsc/renderer.js"
135
- },
136
- "./rsc/vite-plugin": {
137
- "types": "./dist/rsc/vite-plugin.d.ts",
138
- "import": "./dist/rsc/vite-plugin.js"
139
- },
140
- "./rsc/adapters": {
141
- "types": "./dist/rsc/adapters/index.d.ts",
142
- "import": "./dist/rsc/adapters/index.js"
143
- },
144
- "./rsc/adapters/react": {
145
- "types": "./dist/rsc/adapters/react.d.ts",
146
- "import": "./dist/rsc/adapters/react.js"
147
- },
148
- "./rsc/adapters/vue": {
149
- "types": "./dist/rsc/adapters/vue.d.ts",
150
- "import": "./dist/rsc/adapters/vue.js"
151
- },
152
- "./rsc/adapters/solid": {
153
- "types": "./dist/rsc/adapters/solid.d.ts",
154
- "import": "./dist/rsc/adapters/solid.js"
155
- },
156
- "./rsc/adapters/preact": {
157
- "types": "./dist/rsc/adapters/preact.d.ts",
158
- "import": "./dist/rsc/adapters/preact.js"
159
- },
160
- "./rsc/plugins": {
161
- "types": "./dist/rsc/plugins/index.d.ts",
162
- "import": "./dist/rsc/plugins/index.js"
163
- },
164
- "./rsc/plugins/esbuild": {
165
- "types": "./dist/rsc/plugins/esbuild.d.ts",
166
- "import": "./dist/rsc/plugins/esbuild.js"
167
- },
168
- "./rsc/plugins/rollup": {
169
- "types": "./dist/rsc/plugins/rollup.d.ts",
170
- "import": "./dist/rsc/plugins/rollup.js"
171
- },
172
- "./plugins": {
173
- "types": "./dist/plugins/index.d.ts",
174
- "import": "./dist/plugins/index.js"
175
- },
176
- "./plugins/critical-css": {
177
- "types": "./dist/plugins/critical-css.d.ts",
178
- "import": "./dist/plugins/critical-css.js"
179
- }
180
- },
181
- "main": "./dist/index.js",
182
- "types": "./dist/index.d.ts",
183
- "files": [
184
- "dist"
185
- ],
186
- "scripts": {
187
- "build": "tsup",
188
- "dev": "tsup --watch",
189
- "test": "vitest run",
190
- "test:watch": "vitest",
191
- "lint": "eslint src/",
192
- "clean": "rimraf dist",
193
- "typecheck": "tsc --noEmit"
194
- },
195
- "dependencies": {
196
- "radix3": "^1.1.0"
197
- },
198
- "devDependencies": {
199
- "@types/node": "^22.0.0",
200
- "@types/react": "^19.0.0",
201
- "rimraf": "^6.0.0",
202
- "tsup": "^8.0.0",
203
- "typescript": "^5.7.0",
204
- "vitest": "^2.0.0"
205
- },
206
- "peerDependencies": {
207
- "react": "^18.0.0 || ^19.0.0",
208
- "vite": "^6.0.0 || ^7.0.0",
209
- "critters": ">=0.0.20"
210
- },
211
- "peerDependenciesMeta": {
212
- "react": {
213
- "optional": true
214
- },
215
- "vite": {
216
- "optional": true
217
- },
218
- "critters": {
219
- "optional": true
220
- }
221
- }
222
- }
1
+ {
2
+ "name": "@flight-framework/core",
3
+ "version": "0.3.2",
4
+ "description": "Core primitives for Flight Framework - routing, rendering, caching",
5
+ "keywords": [
6
+ "flight",
7
+ "framework",
8
+ "core",
9
+ "ssr",
10
+ "routing"
11
+ ],
12
+ "license": "MIT",
13
+ "author": "Flight Contributors",
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "node": "./dist/index.js",
19
+ "default": "./dist/client.js"
20
+ },
21
+ "./client": {
22
+ "types": "./dist/client.d.ts",
23
+ "browser": "./dist/client.js",
24
+ "import": "./dist/client.js"
25
+ },
26
+ "./errors": {
27
+ "types": "./dist/errors/index.d.ts",
28
+ "import": "./dist/errors/index.js"
29
+ },
30
+ "./react": {
31
+ "types": "./dist/react/index.d.ts",
32
+ "import": "./dist/react/index.js"
33
+ },
34
+ "./utils": {
35
+ "types": "./dist/utils/index.d.ts",
36
+ "import": "./dist/utils/index.js"
37
+ },
38
+ "./router": {
39
+ "types": "./dist/router/index.d.ts",
40
+ "import": "./dist/router/index.js"
41
+ },
42
+ "./render": {
43
+ "types": "./dist/render/index.d.ts",
44
+ "import": "./dist/render/index.js"
45
+ },
46
+ "./cache": {
47
+ "types": "./dist/cache/index.d.ts",
48
+ "import": "./dist/cache/index.js"
49
+ },
50
+ "./middleware": {
51
+ "types": "./dist/middleware/index.d.ts",
52
+ "import": "./dist/middleware/index.js"
53
+ },
54
+ "./config": {
55
+ "types": "./dist/config/index.d.ts",
56
+ "import": "./dist/config/index.js"
57
+ },
58
+ "./adapters": {
59
+ "types": "./dist/adapters/index.d.ts",
60
+ "import": "./dist/adapters/index.js"
61
+ },
62
+ "./server": {
63
+ "types": "./dist/server/index.d.ts",
64
+ "import": "./dist/server/index.js"
65
+ },
66
+ "./file-router": {
67
+ "types": "./dist/file-router/index.d.ts",
68
+ "import": "./dist/file-router/index.js"
69
+ },
70
+ "./actions": {
71
+ "types": "./dist/actions/index.d.ts",
72
+ "import": "./dist/actions/index.js"
73
+ },
74
+ "./actions/middleware": {
75
+ "types": "./dist/actions/middleware.d.ts",
76
+ "import": "./dist/actions/middleware.js"
77
+ },
78
+ "./actions/streaming": {
79
+ "types": "./dist/actions/streaming.d.ts",
80
+ "import": "./dist/actions/streaming.js"
81
+ },
82
+ "./actions/queue": {
83
+ "types": "./dist/actions/queue.d.ts",
84
+ "import": "./dist/actions/queue.js"
85
+ },
86
+ "./handlers": {
87
+ "types": "./dist/handlers/index.d.ts",
88
+ "import": "./dist/handlers/index.js"
89
+ },
90
+ "./streaming": {
91
+ "types": "./dist/streaming/index.d.ts",
92
+ "import": "./dist/streaming/index.js"
93
+ },
94
+ "./streaming/priority": {
95
+ "types": "./dist/streaming/priority.d.ts",
96
+ "import": "./dist/streaming/priority.js"
97
+ },
98
+ "./streaming/observability": {
99
+ "types": "./dist/streaming/observability.d.ts",
100
+ "import": "./dist/streaming/observability.js"
101
+ },
102
+ "./streaming/conditional": {
103
+ "types": "./dist/streaming/conditional.d.ts",
104
+ "import": "./dist/streaming/conditional.js"
105
+ },
106
+ "./streaming/adapters": {
107
+ "types": "./dist/streaming/adapters/index.d.ts",
108
+ "import": "./dist/streaming/adapters/index.js"
109
+ },
110
+ "./islands": {
111
+ "types": "./dist/islands/index.d.ts",
112
+ "import": "./dist/islands/index.js"
113
+ },
114
+ "./file-router/streaming-hints": {
115
+ "types": "./dist/file-router/streaming-hints.d.ts",
116
+ "import": "./dist/file-router/streaming-hints.js"
117
+ },
118
+ "./rsc": {
119
+ "types": "./dist/rsc/index.d.ts",
120
+ "import": "./dist/rsc/index.js"
121
+ },
122
+ "./rsc/payload": {
123
+ "types": "./dist/rsc/payload.d.ts",
124
+ "import": "./dist/rsc/payload.js"
125
+ },
126
+ "./rsc/boundaries": {
127
+ "types": "./dist/rsc/boundaries.d.ts",
128
+ "import": "./dist/rsc/boundaries.js"
129
+ },
130
+ "./rsc/context": {
131
+ "types": "./dist/rsc/context.d.ts",
132
+ "import": "./dist/rsc/context.js"
133
+ },
134
+ "./rsc/stream": {
135
+ "types": "./dist/rsc/stream.d.ts",
136
+ "import": "./dist/rsc/stream.js"
137
+ },
138
+ "./rsc/renderer": {
139
+ "types": "./dist/rsc/renderer.d.ts",
140
+ "import": "./dist/rsc/renderer.js"
141
+ },
142
+ "./rsc/vite-plugin": {
143
+ "types": "./dist/rsc/vite-plugin.d.ts",
144
+ "import": "./dist/rsc/vite-plugin.js"
145
+ },
146
+ "./rsc/adapters": {
147
+ "types": "./dist/rsc/adapters/index.d.ts",
148
+ "import": "./dist/rsc/adapters/index.js"
149
+ },
150
+ "./rsc/adapters/react": {
151
+ "types": "./dist/rsc/adapters/react.d.ts",
152
+ "import": "./dist/rsc/adapters/react.js"
153
+ },
154
+ "./rsc/adapters/vue": {
155
+ "types": "./dist/rsc/adapters/vue.d.ts",
156
+ "import": "./dist/rsc/adapters/vue.js"
157
+ },
158
+ "./rsc/adapters/solid": {
159
+ "types": "./dist/rsc/adapters/solid.d.ts",
160
+ "import": "./dist/rsc/adapters/solid.js"
161
+ },
162
+ "./rsc/adapters/preact": {
163
+ "types": "./dist/rsc/adapters/preact.d.ts",
164
+ "import": "./dist/rsc/adapters/preact.js"
165
+ },
166
+ "./rsc/plugins": {
167
+ "types": "./dist/rsc/plugins/index.d.ts",
168
+ "import": "./dist/rsc/plugins/index.js"
169
+ },
170
+ "./rsc/plugins/esbuild": {
171
+ "types": "./dist/rsc/plugins/esbuild.d.ts",
172
+ "import": "./dist/rsc/plugins/esbuild.js"
173
+ },
174
+ "./rsc/plugins/rollup": {
175
+ "types": "./dist/rsc/plugins/rollup.d.ts",
176
+ "import": "./dist/rsc/plugins/rollup.js"
177
+ },
178
+ "./plugins": {
179
+ "types": "./dist/plugins/index.d.ts",
180
+ "import": "./dist/plugins/index.js"
181
+ },
182
+ "./plugins/critical-css": {
183
+ "types": "./dist/plugins/critical-css.d.ts",
184
+ "import": "./dist/plugins/critical-css.js"
185
+ }
186
+ },
187
+ "main": "./dist/index.js",
188
+ "types": "./dist/index.d.ts",
189
+ "files": [
190
+ "dist"
191
+ ],
192
+ "dependencies": {
193
+ "radix3": "^1.1.0"
194
+ },
195
+ "devDependencies": {
196
+ "@types/node": "^22.0.0",
197
+ "@types/react": "^19.0.0",
198
+ "rimraf": "^6.0.0",
199
+ "tsup": "^8.0.0",
200
+ "typescript": "^5.7.0",
201
+ "vitest": "^2.0.0"
202
+ },
203
+ "peerDependencies": {
204
+ "react": "^18.0.0 || ^19.0.0",
205
+ "vite": "^6.0.0 || ^7.0.0",
206
+ "critters": ">=0.0.20"
207
+ },
208
+ "peerDependenciesMeta": {
209
+ "react": {
210
+ "optional": true
211
+ },
212
+ "vite": {
213
+ "optional": true
214
+ },
215
+ "critters": {
216
+ "optional": true
217
+ }
218
+ },
219
+ "scripts": {
220
+ "build": "tsup",
221
+ "dev": "tsup --watch",
222
+ "test": "vitest run",
223
+ "test:watch": "vitest",
224
+ "lint": "eslint src/",
225
+ "clean": "rimraf dist",
226
+ "typecheck": "tsc --noEmit"
227
+ }
228
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/rsc/adapters/vue.ts"],"names":["children"],"mappings":"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","file":"chunk-2F2QU6RC.js","sourcesContent":["/**\r\n * @flight-framework/core - Vue UI Adapter\r\n * \r\n * Adapter for using Vue 3 with Flight Server Components.\r\n * Enables Flight to render Vue components without tight coupling.\r\n * \r\n * Philosophy: Zero lock-in - Vue is optional, user decides.\r\n * \r\n * @module @flight-framework/core/rsc/adapters/vue\r\n */\r\n\r\nimport type { UIAdapter, ElementTypeInfo } from '../renderer.js';\r\n\r\n// ============================================================================\r\n// Vue Symbols (Vue 3 internal markers)\r\n// ============================================================================\r\n\r\nconst VUE_FRAGMENT = Symbol.for('v-fgt');\r\nconst VUE_TEXT = Symbol.for('v-txt');\r\nconst VUE_COMMENT = Symbol.for('v-cmt');\r\nconst VUE_SUSPENSE = Symbol.for('v-sus');\r\nconst VUE_TELEPORT = Symbol.for('v-tel');\r\n\r\n// Flight reference symbols\r\nconst CLIENT_REFERENCE = Symbol.for('flight.client.reference');\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\n/**\r\n * Minimal Vue VNode interface\r\n */\r\ninterface VueVNode {\r\n __v_isVNode?: boolean;\r\n type: unknown;\r\n props: Record<string, unknown> | null;\r\n children: unknown;\r\n key: string | number | null;\r\n component?: unknown;\r\n shapeFlag?: number;\r\n}\r\n\r\n/**\r\n * Vue dependencies (user provides these)\r\n */\r\nexport interface VueDependencies {\r\n /** Vue module */\r\n Vue: {\r\n h: (type: unknown, props?: unknown, children?: unknown) => VueVNode;\r\n isVNode: (value: unknown) => boolean;\r\n createSSRApp?: (rootComponent: unknown) => unknown;\r\n Fragment?: symbol;\r\n Suspense?: unknown;\r\n Text?: symbol;\r\n };\r\n /** renderToString from vue/server-renderer (optional - for SSR) */\r\n renderToString?: (app: unknown) => Promise<string>;\r\n}\r\n\r\n// ============================================================================\r\n// Adapter Implementation\r\n// ============================================================================\r\n\r\n/**\r\n * Create Vue UI Adapter\r\n * \r\n * @example\r\n * ```typescript\r\n * import { createVueAdapter } from '@flight-framework/core/rsc/adapters/vue';\r\n * import * as Vue from 'vue';\r\n * import { renderToString } from 'vue/server-renderer';\r\n * \r\n * const adapter = createVueAdapter({\r\n * Vue,\r\n * renderToString,\r\n * });\r\n * \r\n * const renderer = createRenderer(adapter);\r\n * ```\r\n */\r\nexport function createVueAdapter(deps?: VueDependencies): UIAdapter {\r\n const { Vue, renderToString } = deps || {};\r\n\r\n return {\r\n name: 'vue',\r\n\r\n isElement(value: unknown): boolean {\r\n if (Vue?.isVNode) {\r\n return Vue.isVNode(value);\r\n }\r\n // Fallback: check for __v_isVNode marker\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n (value as VueVNode).__v_isVNode === true\r\n );\r\n },\r\n\r\n getElementType(element: unknown): ElementTypeInfo {\r\n const vnode = element as VueVNode;\r\n const type = vnode.type;\r\n\r\n // String = host element (div, span, etc.)\r\n if (typeof type === 'string') {\r\n return { kind: 'host', tag: type };\r\n }\r\n\r\n // Symbol types\r\n if (typeof type === 'symbol') {\r\n // Fragment\r\n if (type === VUE_FRAGMENT || type === Vue?.Fragment) {\r\n return { kind: 'fragment' };\r\n }\r\n\r\n // Text\r\n if (type === VUE_TEXT || type === Vue?.Text) {\r\n const children = vnode.children;\r\n return {\r\n kind: 'text',\r\n value: String(children ?? '')\r\n };\r\n }\r\n\r\n // Comment\r\n if (type === VUE_COMMENT) {\r\n return { kind: 'null' };\r\n }\r\n\r\n // Suspense\r\n if (type === VUE_SUSPENSE) {\r\n return {\r\n kind: 'suspense',\r\n fallback: vnode.props?.fallback\r\n };\r\n }\r\n\r\n // Teleport (treat as fragment for RSC)\r\n if (type === VUE_TELEPORT) {\r\n return { kind: 'fragment' };\r\n }\r\n\r\n return { kind: 'null' };\r\n }\r\n\r\n // Object component (Options API or async component)\r\n if (typeof type === 'object' && type !== null) {\r\n const comp = type as {\r\n name?: string;\r\n setup?: unknown;\r\n render?: unknown;\r\n __asyncLoader?: unknown;\r\n };\r\n\r\n // Async component\r\n if (comp.__asyncLoader) {\r\n return {\r\n kind: 'component',\r\n fn: () => null,\r\n name: comp.name || 'AsyncComponent'\r\n };\r\n }\r\n\r\n // Options API component\r\n if (comp.setup || comp.render) {\r\n return {\r\n kind: 'component',\r\n fn: (_props) => {\r\n // Vue components need to be rendered differently\r\n // This is a placeholder - actual rendering uses renderToString\r\n return null;\r\n },\r\n name: comp.name || 'VueComponent',\r\n };\r\n }\r\n }\r\n\r\n // Function component (Composition API)\r\n if (typeof type === 'function') {\r\n const fn = type as ((props: Record<string, unknown>) => unknown) & {\r\n displayName?: string;\r\n name?: string;\r\n __name?: string;\r\n };\r\n return {\r\n kind: 'component',\r\n fn,\r\n name: fn.displayName || fn.__name || fn.name || 'Component'\r\n };\r\n }\r\n\r\n return { kind: 'null' };\r\n },\r\n\r\n getProps(element: unknown): Record<string, unknown> {\r\n const vnode = element as VueVNode;\r\n return vnode.props || {};\r\n },\r\n\r\n getChildren(element: unknown): unknown[] {\r\n const vnode = element as VueVNode;\r\n const children = vnode.children;\r\n\r\n if (children === undefined || children === null) {\r\n return [];\r\n }\r\n\r\n // String children\r\n if (typeof children === 'string' || typeof children === 'number') {\r\n return [children];\r\n }\r\n\r\n // Array children\r\n if (Array.isArray(children)) {\r\n return children.flat();\r\n }\r\n\r\n // Slots object\r\n if (typeof children === 'object' && children !== null) {\r\n const slots = children as Record<string, () => unknown[]>;\r\n if (typeof slots.default === 'function') {\r\n return slots.default();\r\n }\r\n }\r\n\r\n return [children];\r\n },\r\n\r\n getKey(element: unknown): string | number | undefined {\r\n const key = (element as VueVNode).key;\r\n return key !== null ? key : undefined;\r\n },\r\n\r\n isClientBoundary(component: unknown): boolean {\r\n if (typeof component !== 'function' && typeof component !== 'object') {\r\n return false;\r\n }\r\n\r\n const comp = component as {\r\n $$typeof?: symbol;\r\n __flight_client?: boolean;\r\n };\r\n\r\n // Check for Flight client marker\r\n if (comp.__flight_client === true) return true;\r\n\r\n // Check for client reference symbol\r\n if (comp.$$typeof === CLIENT_REFERENCE) return true;\r\n\r\n return false;\r\n },\r\n\r\n createElement(\r\n component: (props: Record<string, unknown>) => unknown,\r\n props: Record<string, unknown>\r\n ): unknown {\r\n // Create a Vue VNode using h() if available\r\n if (Vue?.h) {\r\n return Vue.h(component, props);\r\n }\r\n\r\n // Fallback: create VNode structure directly\r\n return {\r\n __v_isVNode: true,\r\n type: component,\r\n props,\r\n key: null,\r\n children: props.children ?? null,\r\n } as VueVNode;\r\n },\r\n\r\n async renderToString(element: unknown): Promise<string> {\r\n if (renderToString && Vue?.createSSRApp) {\r\n // Create SSR app wrapper\r\n const app = Vue.createSSRApp({\r\n render: () => element\r\n });\r\n return renderToString(app);\r\n }\r\n throw new Error(\r\n 'renderToString not provided. Pass Vue and renderToString when creating the adapter: ' +\r\n 'createVueAdapter({ Vue, renderToString })'\r\n );\r\n },\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// Vue Client Consumer\r\n// ============================================================================\r\n\r\n/**\r\n * Options for Vue consumer\r\n */\r\nexport interface VueConsumerOptions {\r\n /** Registry of client components */\r\n registry?: Map<string, () => Promise<unknown>>;\r\n}\r\n\r\n/**\r\n * Create a Vue client-side consumer for Flight payloads\r\n */\r\nexport function createVueConsumer(deps: VueDependencies, options: VueConsumerOptions = {}) {\r\n const { Vue } = deps;\r\n const { registry = new Map() } = options;\r\n\r\n return {\r\n /**\r\n * Register a client component\r\n */\r\n register(id: string, loader: () => Promise<unknown>): void {\r\n registry.set(id, loader);\r\n },\r\n\r\n /**\r\n * Convert Flight elements to Vue VNodes\r\n */\r\n toVueElement(element: import('../payload.js').FlightElement): unknown {\r\n switch (element.$$type) {\r\n case 'null':\r\n return null;\r\n\r\n case 'text':\r\n return element.value;\r\n\r\n case 'host': {\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(\r\n element.tag,\r\n { ...element.props, key: element.key },\r\n children\r\n );\r\n }\r\n\r\n case 'fragment': {\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(Vue.Fragment!, null, children);\r\n }\r\n\r\n case 'suspense': {\r\n if (Vue.Suspense) {\r\n const fallback = this.toVueElement(element.fallback);\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(Vue.Suspense, null, {\r\n default: () => children,\r\n fallback: () => fallback,\r\n });\r\n }\r\n // Fallback: render children directly\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(Vue.Fragment!, null, children);\r\n }\r\n\r\n case 'client': {\r\n const loader = registry.get(element.ref);\r\n if (!loader) {\r\n console.warn(`[Flight] Client component not registered: ${element.ref}`);\r\n if (element.ssr) {\r\n return Vue.h('div', {\r\n innerHTML: element.ssr\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n // Create async component\r\n const AsyncComponent = {\r\n async setup() {\r\n const mod = await loader() as { default?: unknown };\r\n return () => Vue.h(mod.default ?? mod as unknown);\r\n }\r\n };\r\n\r\n return Vue.h(AsyncComponent);\r\n }\r\n\r\n case 'lazy': {\r\n if (element.fallback) {\r\n return this.toVueElement(element.fallback);\r\n }\r\n return Vue.h('div', { 'data-flight-pending': element.id });\r\n }\r\n\r\n default:\r\n return null;\r\n }\r\n },\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// Utility Types\r\n// ============================================================================\r\n\r\n/**\r\n * Type helper for Vue Server Component\r\n */\r\nexport type VueServerComponent<P = Record<string, unknown>> = (\r\n props: P,\r\n ctx: import('../context.js').ServerContext\r\n) => Promise<VueVNode> | VueVNode;\r\n\r\n/**\r\n * Mark a Vue component as a client component\r\n */\r\nexport function markAsVueClientComponent<T extends object>(\r\n component: T,\r\n moduleId: string,\r\n exportName = 'default'\r\n): T {\r\n const marked = component as T & {\r\n $$typeof: symbol;\r\n __flight_client: boolean;\r\n __flight_module: string;\r\n __flight_export: string;\r\n };\r\n\r\n marked.$$typeof = CLIENT_REFERENCE;\r\n marked.__flight_client = true;\r\n marked.__flight_module = moduleId;\r\n marked.__flight_export = exportName;\r\n\r\n return marked;\r\n}\r\n"]}