@rainfw/core 0.1.2 → 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 (63) hide show
  1. package/dist/client/dom.d.ts +4 -0
  2. package/dist/client/dom.d.ts.map +1 -0
  3. package/dist/client/dom.js +130 -0
  4. package/dist/client/dom.js.map +1 -0
  5. package/dist/client/hooks.d.ts +58 -0
  6. package/dist/client/hooks.d.ts.map +1 -0
  7. package/dist/client/hooks.js +173 -0
  8. package/dist/client/hooks.js.map +1 -0
  9. package/dist/client/hydrate.d.ts +14 -0
  10. package/dist/client/hydrate.d.ts.map +1 -0
  11. package/dist/client/hydrate.js +167 -0
  12. package/dist/client/hydrate.js.map +1 -0
  13. package/dist/client/jsx-runtime.d.ts +6 -0
  14. package/dist/client/jsx-runtime.d.ts.map +1 -0
  15. package/dist/client/jsx-runtime.js +20 -0
  16. package/dist/client/jsx-runtime.js.map +1 -0
  17. package/dist/client/reconciler.d.ts +4 -0
  18. package/dist/client/reconciler.d.ts.map +1 -0
  19. package/dist/client/reconciler.js +238 -0
  20. package/dist/client/reconciler.js.map +1 -0
  21. package/dist/client/runtime.d.ts +6 -0
  22. package/dist/client/runtime.d.ts.map +1 -0
  23. package/dist/client/runtime.js +17 -0
  24. package/dist/client/runtime.js.map +1 -0
  25. package/dist/client/scheduler.d.ts +4 -0
  26. package/dist/client/scheduler.d.ts.map +1 -0
  27. package/dist/client/scheduler.js +44 -0
  28. package/dist/client/scheduler.js.map +1 -0
  29. package/dist/compiler/inject.d.ts +6 -0
  30. package/dist/compiler/inject.d.ts.map +1 -0
  31. package/dist/compiler/inject.js +19 -0
  32. package/dist/compiler/inject.js.map +1 -0
  33. package/dist/compiler/server-action.d.ts +9 -0
  34. package/dist/compiler/server-action.d.ts.map +1 -0
  35. package/dist/compiler/server-action.js +98 -0
  36. package/dist/compiler/server-action.js.map +1 -0
  37. package/dist/context.js +1 -1
  38. package/dist/context.js.map +1 -1
  39. package/dist/index.d.ts +5 -3
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/jsx/index.d.ts +3 -2
  44. package/dist/jsx/index.d.ts.map +1 -1
  45. package/dist/jsx/index.js +2 -2
  46. package/dist/jsx/index.js.map +1 -1
  47. package/dist/jsx/render.d.ts +7 -1
  48. package/dist/jsx/render.d.ts.map +1 -1
  49. package/dist/jsx/render.js +96 -14
  50. package/dist/jsx/render.js.map +1 -1
  51. package/dist/jsx/types.d.ts +4 -0
  52. package/dist/jsx/types.d.ts.map +1 -1
  53. package/dist/jsx/types.js +10 -0
  54. package/dist/jsx/types.js.map +1 -1
  55. package/dist/router.d.ts +7 -1
  56. package/dist/router.d.ts.map +1 -1
  57. package/dist/router.js +84 -3
  58. package/dist/router.js.map +1 -1
  59. package/dist/types.d.ts +2 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +7 -2
  62. package/scripts/dev.js +28 -1
  63. package/scripts/generate.js +228 -10
@@ -1,4 +1,10 @@
1
1
  import { type RainElement } from "./types";
2
2
  export declare function isRainElement(value: unknown): value is RainElement;
3
- export declare function renderToString(element: RainElement): string;
3
+ export interface RenderResult {
4
+ html: string;
5
+ csrfUsed: boolean;
6
+ }
7
+ export declare function renderToString(element: RainElement, options?: {
8
+ csrfToken?: string;
9
+ }): RenderResult;
4
10
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/framework/jsx/render.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,WAAW,EAAiB,MAAM,SAAS,CAAC;AA0FxE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAMlE;AA4ED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE3D"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/framework/jsx/render.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AA0FjB,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAMlE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AA6LD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,YAAY,CAOd"}
@@ -1,6 +1,6 @@
1
1
  import { Fragment } from "./createElement";
2
2
  import { escapeHtml } from "./escape";
3
- import { RAIN_ELEMENT } from "./types";
3
+ import { RAIN_ELEMENT, RAIN_ISLAND, RAIN_SERVER_ACTION, } from "./types";
4
4
  const RAW_TEXT_ELEMENTS = new Set(["script", "style"]);
5
5
  const VOID_ELEMENTS = new Set([
6
6
  "area",
@@ -85,7 +85,51 @@ export function isRainElement(value) {
85
85
  value !== null &&
86
86
  value.$$typeof === RAIN_ELEMENT);
87
87
  }
88
- function renderRawChildren(tag, children) {
88
+ function serializeIslandProps(props) {
89
+ const safe = {};
90
+ for (const key of Object.keys(props)) {
91
+ if (key === "children")
92
+ continue;
93
+ const value = props[key];
94
+ if (typeof value === "function")
95
+ continue;
96
+ if (typeof value === "symbol")
97
+ continue;
98
+ safe[key] = value;
99
+ }
100
+ return JSON.stringify(safe);
101
+ }
102
+ function escapeScriptJson(json) {
103
+ return json.replace(/<\/(script)/gi, "<\\/$1");
104
+ }
105
+ function renderIsland(tag, props, children, islandId, ctx) {
106
+ const index = ctx.islandCounter++;
107
+ const result = tag({ ...props, children });
108
+ const innerHtml = result === null
109
+ ? ""
110
+ : typeof result === "string"
111
+ ? escapeHtml(result)
112
+ : renderElement(result, ctx);
113
+ let json;
114
+ try {
115
+ json = escapeScriptJson(serializeIslandProps(props));
116
+ }
117
+ catch (cause) {
118
+ throw new Error(`[Rain] Island "${islandId}" の props を` +
119
+ "シリアライズできませんでした。" +
120
+ "循環参照や BigInt を含む props は" +
121
+ "渡せません。該当する props を確認して" +
122
+ "ください。", { cause });
123
+ }
124
+ return (`<!--$rain-island:${index}:${islandId}-->` +
125
+ innerHtml +
126
+ `<script type="application/json"` +
127
+ ` data-rain-props="${index}">` +
128
+ json +
129
+ `</script>` +
130
+ `<!--/$rain-island:${index}-->`);
131
+ }
132
+ function renderRawChildren(tag, children, ctx) {
89
133
  const parts = [];
90
134
  const closeRe = new RegExp(`</${tag}`, "gi");
91
135
  for (const child of children) {
@@ -94,18 +138,18 @@ function renderRawChildren(tag, children) {
94
138
  if (typeof child === "boolean")
95
139
  continue;
96
140
  if (Array.isArray(child)) {
97
- parts.push(renderRawChildren(tag, child));
141
+ parts.push(renderRawChildren(tag, child, ctx));
98
142
  continue;
99
143
  }
100
144
  if (isRainElement(child)) {
101
- parts.push(renderElement(child));
145
+ parts.push(renderElement(child, ctx));
102
146
  continue;
103
147
  }
104
148
  parts.push(String(child).replace(closeRe, `<\\/${tag}`));
105
149
  }
106
150
  return parts.join("");
107
151
  }
108
- function renderChildren(children) {
152
+ function renderChildren(children, ctx) {
109
153
  const parts = [];
110
154
  for (const child of children) {
111
155
  if (child === null || child === undefined)
@@ -113,29 +157,62 @@ function renderChildren(children) {
113
157
  if (typeof child === "boolean")
114
158
  continue;
115
159
  if (Array.isArray(child)) {
116
- parts.push(renderChildren(child));
160
+ parts.push(renderChildren(child, ctx));
117
161
  continue;
118
162
  }
119
163
  if (isRainElement(child)) {
120
- parts.push(renderElement(child));
164
+ parts.push(renderElement(child, ctx));
121
165
  continue;
122
166
  }
123
167
  parts.push(escapeHtml(String(child)));
124
168
  }
125
169
  return parts.join("");
126
170
  }
127
- function renderElement(element) {
171
+ function isServerActionFn(value) {
172
+ return typeof value === "function" && RAIN_SERVER_ACTION in value;
173
+ }
174
+ function renderServerActionForm(props, children, ctx) {
175
+ const actionId = props["action"][RAIN_SERVER_ACTION];
176
+ const formProps = {};
177
+ for (const key of Object.keys(props)) {
178
+ if (key === "action")
179
+ continue;
180
+ formProps[key] = props[key];
181
+ }
182
+ formProps["action"] = `/_rain/action/${actionId}`;
183
+ if (!formProps["method"]) {
184
+ formProps["method"] = "POST";
185
+ }
186
+ const attrs = renderAttrs(formProps);
187
+ let csrfHidden = "";
188
+ if (ctx.csrf) {
189
+ ctx.csrf.used = true;
190
+ csrfHidden =
191
+ `<input type="hidden" name="_rain_csrf"` +
192
+ ` value="${escapeHtml(ctx.csrf.token)}">`;
193
+ }
194
+ const inner = renderChildren(children, ctx);
195
+ return `<form${attrs}>${csrfHidden}${inner}</form>`;
196
+ }
197
+ function renderElement(element, ctx) {
128
198
  const { tag, props, children } = element;
129
199
  if (typeof tag === "function") {
130
200
  if (tag === Fragment) {
131
- return renderChildren(children);
201
+ return renderChildren(children, ctx);
202
+ }
203
+ const islandId = tag[RAIN_ISLAND];
204
+ if (islandId !== undefined) {
205
+ return renderIsland(tag, props, children, islandId, ctx);
132
206
  }
133
207
  const result = tag({ ...props, children });
134
208
  if (result === null)
135
209
  return "";
136
210
  if (typeof result === "string")
137
211
  return escapeHtml(result);
138
- return renderElement(result);
212
+ return renderElement(result, ctx);
213
+ }
214
+ if (tag === "form" && isServerActionFn(props["action"])) {
215
+ return renderServerActionForm(props, children, ctx);
139
216
  }
140
217
  const attrs = renderAttrs(props);
141
218
  const isVoid = VOID_ELEMENTS.has(tag);
@@ -147,13 +224,18 @@ function renderElement(element) {
147
224
  return `<${tag}${attrs}>${dangerousHtml.__html}</${tag}>`;
148
225
  }
149
226
  if (RAW_TEXT_ELEMENTS.has(tag)) {
150
- const raw = renderRawChildren(tag, children);
227
+ const raw = renderRawChildren(tag, children, ctx);
151
228
  return `<${tag}${attrs}>${raw}</${tag}>`;
152
229
  }
153
- const inner = renderChildren(children);
230
+ const inner = renderChildren(children, ctx);
154
231
  return `<${tag}${attrs}>${inner}</${tag}>`;
155
232
  }
156
- export function renderToString(element) {
157
- return renderElement(element);
233
+ export function renderToString(element, options) {
234
+ const ctx = {
235
+ islandCounter: 0,
236
+ csrf: options?.csrfToken ? { token: options.csrfToken, used: false } : null,
237
+ };
238
+ const html = renderElement(element, ctx);
239
+ return { html, csrfUsed: ctx.csrf?.used ?? false };
158
240
  }
159
241
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/framework/jsx/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAmC,MAAM,SAAS,CAAC;AAExE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;IACP,IAAI;IACJ,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,iBAAiB;IACjB,OAAO;IACP,WAAW;IACX,UAAU;IACV,SAAS;IACT,UAAU;IACV,SAAS;IACT,OAAO;IACP,UAAU;IACV,gBAAgB;IAChB,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,UAAU;IACV,OAAO;IACP,UAAU;IACV,YAAY;IACZ,MAAM;IACN,aAAa;IACb,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACX,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,KAAsC;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QACpD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,yBAAyB,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC7D,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAErD,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAwC,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAqB,CAAC,QAAQ,KAAK,YAAY,CACjD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,QAAoB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACpD,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,SAAS;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,cAAc,CAAC,QAAoB;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACpD,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,SAAS;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,OAAoB;IACzC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAEzC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,yBAAyB,CAExC,CAAC;IAEd,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,GAAG,KAAK,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC;IAC5D,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,KAAK,GAAG,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/framework/jsx/render.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export declare const RAIN_ELEMENT: unique symbol;
2
+ export declare const RAIN_ISLAND: unique symbol;
3
+ export declare const RAIN_SERVER_ACTION: unique symbol;
2
4
  export interface RainElement {
3
5
  readonly $$typeof: typeof RAIN_ELEMENT;
4
6
  readonly tag: string | RainComponent;
@@ -8,4 +10,6 @@ export interface RainElement {
8
10
  export type RainComponent = (props: Record<string, unknown>) => RainElement | string | null;
9
11
  export type RainChild = RainElement | string | number | boolean | null | undefined;
10
12
  export type RainNode = RainChild | RainChild[];
13
+ export declare function markAsIsland<T extends RainComponent>(id: string, component: T): T;
14
+ export declare function markAsServerAction<T extends (...args: never[]) => unknown>(id: string, fn: T): T;
11
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/framework/jsx/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAA6B,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,YAAY,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;AAEjC,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/framework/jsx/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAA6B,CAAC;AACvD,eAAO,MAAM,WAAW,eAA4B,CAAC;AACrD,eAAO,MAAM,kBAAkB,eAAmC,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,YAAY,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;AAEjC,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;AAE/C,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,GACX,CAAC,CAGH;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,EACxE,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,GACJ,CAAC,CAGH"}
package/dist/jsx/types.js CHANGED
@@ -1,2 +1,12 @@
1
1
  export const RAIN_ELEMENT = Symbol.for("rain.element");
2
+ export const RAIN_ISLAND = Symbol.for("rain.island");
3
+ export const RAIN_SERVER_ACTION = Symbol.for("rain.server_action");
4
+ export function markAsIsland(id, component) {
5
+ component[RAIN_ISLAND] = id;
6
+ return component;
7
+ }
8
+ export function markAsServerAction(id, fn) {
9
+ fn[RAIN_SERVER_ACTION] = id;
10
+ return fn;
11
+ }
2
12
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/framework/jsx/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/framework/jsx/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAuBnE,MAAM,UAAU,YAAY,CAC1B,EAAU,EACV,SAAY;IAEX,SAAqC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAU,EACV,EAAK;IAEJ,EAA8B,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;IACzD,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/dist/router.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- import type { ErrorHandler, Handler, LayoutHandler, Middleware, PageHandler, RainConfig, RainOptions } from "./types";
1
+ import type { ErrorHandler, Handler, LayoutHandler, Middleware, PageHandler, RainConfig, RainOptions, ServerActionHandler } from "./types";
2
2
  export declare class Rain {
3
3
  private routes;
4
4
  private globalMiddlewares;
5
5
  private errorHandler;
6
6
  private csrfProtection;
7
7
  private securityHeaders;
8
+ private clientScriptDescriptors;
9
+ private actionHandlers;
8
10
  constructor(options?: RainConfig | RainOptions);
9
11
  use(...middlewares: Middleware[]): void;
10
12
  private addRoute;
@@ -16,6 +18,8 @@ export declare class Rain {
16
18
  patch(path: string, handler: Handler, middlewares?: Middleware[]): void;
17
19
  head(path: string, handler: Handler, middlewares?: Middleware[]): void;
18
20
  options(path: string, handler: Handler, middlewares?: Middleware[]): void;
21
+ registerAction(id: string, handler: ServerActionHandler): void;
22
+ registerActions(actions: Record<string, ServerActionHandler>): void;
19
23
  page(path: string, handler: PageHandler, layouts?: LayoutHandler[], middlewares?: Middleware[], doctype?: boolean): void;
20
24
  private composeMiddlewares;
21
25
  fetch(request: Request, env?: Env, executionCtx?: ExecutionContext): Promise<Response>;
@@ -24,6 +28,8 @@ export declare class Rain {
24
28
  private matchRoute;
25
29
  private executeHeadFallback;
26
30
  private executeRoute;
31
+ private handleServerAction;
32
+ private validateActionCsrf;
27
33
  private buildMethodNotAllowed;
28
34
  private applySecurityHeaders;
29
35
  private applyCookies;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/framework/router.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACZ,MAAM,SAAS,CAAC;AAmCjB,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAA2C;gBAEtD,OAAO,CAAC,EAAE,UAAU,GAAG,WAAW;IAW9C,GAAG,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAIvC,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIpC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIrE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAItE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIrE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIxE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIvE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAItE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIzE,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,aAAa,EAAO,EAC7B,WAAW,GAAE,UAAU,EAAO,EAC9B,OAAO,UAAQ,GACd,IAAI;IA2BP,OAAO,CAAC,kBAAkB;IA0B1B,KAAK,CACH,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,GAAG,EACT,YAAY,CAAC,EAAE,gBAAgB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAYpB,OAAO,CAAC,gBAAgB;YASV,aAAa;IAuD3B,OAAO,CAAC,UAAU;YA0CJ,mBAAmB;YAwBnB,YAAY;YAsCZ,qBAAqB;IAqBnC,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,qBAAqB;YAiBf,WAAW;YA0BX,mBAAmB;CAsBlC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/framework/router.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAmCjB,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,cAAc,CAA+C;gBAEzD,OAAO,CAAC,EAAE,UAAU,GAAG,WAAW;IAe9C,GAAG,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAIvC,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIpC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIrE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAItE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIrE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIxE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIvE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAItE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAIzE,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI9D,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI;IAMnE,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,aAAa,EAAO,EAC7B,WAAW,GAAE,UAAU,EAAO,EAC9B,OAAO,UAAQ,GACd,IAAI;IAqCP,OAAO,CAAC,kBAAkB;IA0B1B,KAAK,CACH,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,GAAG,EACT,YAAY,CAAC,EAAE,gBAAgB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAYpB,OAAO,CAAC,gBAAgB;YASV,aAAa;IA2D3B,OAAO,CAAC,UAAU;YA0CJ,mBAAmB;YAwBnB,YAAY;YAsCZ,kBAAkB;IAkDhC,OAAO,CAAC,kBAAkB;YAyBZ,qBAAqB;IAqBnC,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,qBAAqB;YAiBf,WAAW;YA0BX,mBAAmB;CAsBlC"}
package/dist/router.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { runWithBindings } from "./bindings";
2
+ import { injectScripts } from "./compiler/inject";
2
3
  import { Context } from "./context";
3
4
  import { HttpError } from "./errors";
4
- import { renderToString } from "./jsx";
5
+ import { escapeHtml, renderToString } from "./jsx";
5
6
  import { escapeRegExp } from "./utils/regexp";
6
7
  import { safeDecodeURIComponent } from "./utils/url";
7
8
  const DEFAULT_SECURITY_HEADERS = [
@@ -28,12 +29,18 @@ export class Rain {
28
29
  errorHandler;
29
30
  csrfProtection;
30
31
  securityHeaders;
32
+ clientScriptDescriptors;
33
+ actionHandlers = new Map();
31
34
  constructor(options) {
32
35
  const csrf = options?.csrf ??
33
36
  options?.csrfProtection ??
34
37
  true;
35
38
  this.csrfProtection = csrf;
36
39
  this.securityHeaders = resolveSecurityHeaders(options?.securityHeaders);
40
+ const scripts = options?.clientScripts ?? [];
41
+ this.clientScriptDescriptors = scripts.map((src) => ({
42
+ src,
43
+ }));
37
44
  }
38
45
  use(...middlewares) {
39
46
  this.globalMiddlewares.push(...middlewares);
@@ -90,6 +97,14 @@ export class Rain {
90
97
  options(path, handler, middlewares) {
91
98
  this.addRoute("OPTIONS", path, handler, middlewares);
92
99
  }
100
+ registerAction(id, handler) {
101
+ this.actionHandlers.set(id, handler);
102
+ }
103
+ registerActions(actions) {
104
+ for (const [id, handler] of Object.entries(actions)) {
105
+ this.actionHandlers.set(id, handler);
106
+ }
107
+ }
93
108
  page(path, handler, layouts = [], middlewares = [], doctype = false) {
94
109
  const wrappedHandler = async (ctx) => {
95
110
  let content = await handler(ctx);
@@ -105,8 +120,18 @@ export class Rain {
105
120
  " Check your layout.tsx files for this route.", { cause });
106
121
  }
107
122
  }
108
- const html = renderToString(content);
109
- const body = doctype ? `<!DOCTYPE html>\n${html}` : html;
123
+ const csrfToken = crypto.randomUUID();
124
+ const { html, csrfUsed } = renderToString(content, { csrfToken });
125
+ const raw = doctype ? `<!DOCTYPE html>\n${html}` : html;
126
+ const body = injectScripts(raw, this.clientScriptDescriptors);
127
+ if (csrfUsed) {
128
+ ctx.setCookie("_rain_csrf", csrfToken, {
129
+ httpOnly: true,
130
+ secure: true,
131
+ sameSite: "Strict",
132
+ path: "/",
133
+ });
134
+ }
110
135
  return new Response(body, {
111
136
  status: 200,
112
137
  headers: { "content-type": "text/html; charset=UTF-8" },
@@ -155,6 +180,9 @@ export class Rain {
155
180
  return csrfResponse;
156
181
  const { pathname } = new URL(request.url);
157
182
  const method = request.method;
183
+ if (method === "POST" && pathname.startsWith("/_rain/action/")) {
184
+ return this.handleServerAction(pathname, request, env, executionCtx);
185
+ }
158
186
  try {
159
187
  const result = this.matchRoute(method, pathname);
160
188
  if (result.route) {
@@ -235,6 +263,59 @@ export class Rain {
235
263
  }
236
264
  return this.applyCookies(response, ctx);
237
265
  }
266
+ async handleServerAction(pathname, request, env, executionCtx) {
267
+ const actionId = decodeURIComponent(pathname.slice("/_rain/action/".length));
268
+ const handler = this.actionHandlers.get(actionId);
269
+ if (!handler) {
270
+ return new Response("[Rain] Server Action '" +
271
+ escapeHtml(actionId) +
272
+ "' not found. " +
273
+ "Ensure the action is registered " +
274
+ "with app.registerAction().", {
275
+ status: 404,
276
+ headers: {
277
+ "content-type": "text/plain; charset=UTF-8",
278
+ },
279
+ });
280
+ }
281
+ const ctx = new Context(request, {}, env, executionCtx);
282
+ const actionHandler = async (actionCtx) => {
283
+ const formData = await actionCtx.req.formData();
284
+ this.validateActionCsrf(actionCtx, formData);
285
+ const result = await handler(actionCtx, formData);
286
+ if (result)
287
+ return result;
288
+ const referer = actionCtx.header("Referer") ?? "/";
289
+ return actionCtx.redirect(referer, 303);
290
+ };
291
+ const allMiddlewares = this.globalMiddlewares.length > 0 ? [...this.globalMiddlewares] : [];
292
+ const composed = this.composeMiddlewares(allMiddlewares, actionHandler);
293
+ try {
294
+ const response = await composed(ctx);
295
+ return this.applyCookies(response, ctx);
296
+ }
297
+ catch (error) {
298
+ return this.handleError(error, request, pathname);
299
+ }
300
+ }
301
+ validateActionCsrf(ctx, formData) {
302
+ const formToken = formData.get("_rain_csrf");
303
+ const cookieToken = ctx.cookie("_rain_csrf");
304
+ if (!(formToken && cookieToken)) {
305
+ throw new HttpError(403, "[Rain] Server Action CSRF token missing. " +
306
+ "Both a form token and a cookie are " +
307
+ "required. This may indicate a cross-site " +
308
+ "request forgery attempt. " +
309
+ "Reload the page and try again.");
310
+ }
311
+ if (formToken !== cookieToken) {
312
+ throw new HttpError(403, "[Rain] Server Action CSRF token mismatch. " +
313
+ "The form token does not match the cookie. " +
314
+ "This may indicate a cross-site request " +
315
+ "forgery attempt, or the cookie may have " +
316
+ "expired. Reload the page and try again.");
317
+ }
318
+ }
238
319
  async buildMethodNotAllowed(request, env, executionCtx, routeMiddlewares) {
239
320
  const allMiddlewares = this.mergeMiddlewares(routeMiddlewares);
240
321
  const ctx = new Context(request, {}, env, executionCtx);
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/framework/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/framework/router.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -15,6 +15,7 @@ export interface RainConfig {
15
15
  frameworkPackage?: string;
16
16
  csrf?: boolean;
17
17
  securityHeaders?: Record<string, string> | false;
18
+ clientScripts?: string[];
18
19
  }
19
20
  export interface RainOptions {
20
21
  csrfProtection?: boolean;
@@ -24,6 +25,7 @@ export type PageHandler = (ctx: Context) => RainElement | Promise<RainElement>;
24
25
  export type LayoutHandler = (ctx: Context, children: RainElement) => RainElement | Promise<RainElement>;
25
26
  export type Middleware = (ctx: Context, next: () => Promise<Response>) => Response | Promise<Response>;
26
27
  export type ErrorHandler = (error: unknown, req: Request) => Response | Promise<Response>;
28
+ export type ServerActionHandler = (ctx: Context, formData: FormData) => Response | undefined | Promise<Response | undefined>;
27
29
  export interface Schema<T> {
28
30
  parse(data: unknown): T;
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/framework/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG;KAAG;CACjB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEpD;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,KAClB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,KAC1B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,KACT,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/framework/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG;KAAG;CACjB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEpD;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,WAAW,KAClB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,KAC1B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,KACT,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG,CAChC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,QAAQ,KACf,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAE1D,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rainfw/core",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "A TypeScript web framework for Cloudflare Workers",
5
5
  "bin": {
6
6
  "rainjs": "./cli/index.js"
@@ -12,6 +12,8 @@
12
12
  "format": "biome format --write .",
13
13
  "check": "biome check --write .",
14
14
  "typecheck": "tsc --noEmit",
15
+ "typecheck:client": "tsc --noEmit -p tsconfig.client.json",
16
+ "typecheck:compiler": "tsc --noEmit -p tsconfig.compiler.json",
15
17
  "typecheck:db": "tsc --noEmit -p tsconfig.db.json",
16
18
  "ci": "biome ci . && tsc --noEmit",
17
19
  "test": "vitest run",
@@ -19,7 +21,8 @@
19
21
  "test:generate": "node --test tests/generate.test.js",
20
22
  "bench": "node scripts/bench.js",
21
23
  "build:pkg": "tsc -p tsconfig.build.json && node -e \"require('fs').writeFileSync('dist/package.json',JSON.stringify({type:'module'}))\"",
22
- "prepublishOnly": "npm run build:pkg"
24
+ "prepublishOnly": "npm run build:pkg",
25
+ "release": "npm run ci && npm publish --access public"
23
26
  },
24
27
  "keywords": [
25
28
  "cloudflare-workers",
@@ -63,6 +66,8 @@
63
66
  "@types/node": "^25.5.0",
64
67
  "drizzle-kit": "^0.31.10",
65
68
  "drizzle-orm": "^0.45.2",
69
+ "esbuild": "^0.27.4",
70
+ "jsdom": "^29.0.1",
66
71
  "typescript": "^5.9.3",
67
72
  "vitest": "^4.1.1",
68
73
  "wrangler": "^4.76.0"
package/scripts/dev.js CHANGED
@@ -1,6 +1,9 @@
1
1
  const fs = require("node:fs");
2
+ const path = require("node:path");
2
3
  const { spawn } = require("node:child_process");
3
- const { generate, ROUTES_DIR } = require("./generate");
4
+ const { generate, regenerateClient, ROUTES_DIR } = require("./generate");
5
+
6
+ const SRC_DIR = path.join(process.cwd(), "src");
4
7
 
5
8
  generate();
6
9
 
@@ -42,6 +45,30 @@ try {
42
45
  }
43
46
  console.log("[watch] Watching src/routes/ for changes...");
44
47
 
48
+ let clientDebounceTimer = null;
49
+ try {
50
+ const clientWatcher = fs.watch(
51
+ SRC_DIR,
52
+ { recursive: true },
53
+ (eventType, filename) => {
54
+ if (!(filename?.endsWith(".ts") || filename?.endsWith(".tsx"))) return;
55
+ if (filename.startsWith("routes")) return;
56
+ clearTimeout(clientDebounceTimer);
57
+ clientDebounceTimer = setTimeout(() => {
58
+ console.log(`[watch:client] ${eventType}: ${filename}`);
59
+ regenerateClient();
60
+ }, 200);
61
+ },
62
+ );
63
+
64
+ clientWatcher.on("error", () => {
65
+ console.error("[Rain] Warning: Client file watcher error.");
66
+ });
67
+ } catch (_clientWatchError) {
68
+ console.error("[Rain] Warning: Failed to start client file watcher.");
69
+ }
70
+ console.log("[watch] Watching src/ for client component changes...");
71
+
45
72
  const wrangler = spawn("npx", ["wrangler", "dev"], {
46
73
  stdio: "inherit",
47
74
  shell: true,