@rainfw/core 0.1.0 → 0.1.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.
- package/README.md +28 -0
- package/dist/jsx/render.d.ts.map +1 -1
- package/dist/jsx/render.js +25 -0
- package/dist/jsx/render.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/scripts/generate.js +48 -6
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">Rain.js</h1>
|
|
3
|
+
<p align="center">A lightweight TypeScript web framework for Cloudflare Workers</p>
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="https://www.npmjs.com/package/@rainfw/core"><img src="https://img.shields.io/npm/v/@rainfw/core?style=flat-square&color=0ea5e9" alt="npm version"></a>
|
|
8
|
+
<a href="https://www.npmjs.com/package/@rainfw/core"><img src="https://img.shields.io/npm/dm/@rainfw/core?style=flat-square&color=38bdf8" alt="npm downloads"></a>
|
|
9
|
+
<a href="https://github.com/rainfw/rain.js/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@rainfw/core?style=flat-square&color=22d3ee" alt="license"></a>
|
|
10
|
+
<a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-strict-3178c6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript"></a>
|
|
11
|
+
<a href="https://workers.cloudflare.com/"><img src="https://img.shields.io/badge/Cloudflare_Workers-ready-f38020?style=flat-square&logo=cloudflareworkers&logoColor=white" alt="Cloudflare Workers"></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Install
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @rainfw/core
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Contributing
|
|
23
|
+
|
|
24
|
+
Contributions are welcome! Please open an issue or submit a pull request.
|
|
25
|
+
|
|
26
|
+
## License
|
|
27
|
+
|
|
28
|
+
[MIT](LICENSE)
|
package/dist/jsx/render.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/jsx/render.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment } from "./createElement";
|
|
2
2
|
import { escapeHtml } from "./escape";
|
|
3
3
|
import { RAIN_ELEMENT } from "./types";
|
|
4
|
+
const RAW_TEXT_ELEMENTS = new Set(["script", "style"]);
|
|
4
5
|
const VOID_ELEMENTS = new Set([
|
|
5
6
|
"area",
|
|
6
7
|
"base",
|
|
@@ -84,6 +85,26 @@ export function isRainElement(value) {
|
|
|
84
85
|
value !== null &&
|
|
85
86
|
value.$$typeof === RAIN_ELEMENT);
|
|
86
87
|
}
|
|
88
|
+
function renderRawChildren(tag, children) {
|
|
89
|
+
const parts = [];
|
|
90
|
+
const closeRe = new RegExp(`</${tag}`, "gi");
|
|
91
|
+
for (const child of children) {
|
|
92
|
+
if (child === null || child === undefined)
|
|
93
|
+
continue;
|
|
94
|
+
if (typeof child === "boolean")
|
|
95
|
+
continue;
|
|
96
|
+
if (Array.isArray(child)) {
|
|
97
|
+
parts.push(renderRawChildren(tag, child));
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (isRainElement(child)) {
|
|
101
|
+
parts.push(renderElement(child));
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
parts.push(String(child).replace(closeRe, `<\\/${tag}`));
|
|
105
|
+
}
|
|
106
|
+
return parts.join("");
|
|
107
|
+
}
|
|
87
108
|
function renderChildren(children) {
|
|
88
109
|
const parts = [];
|
|
89
110
|
for (const child of children) {
|
|
@@ -125,6 +146,10 @@ function renderElement(element) {
|
|
|
125
146
|
if (dangerousHtml) {
|
|
126
147
|
return `<${tag}${attrs}>${dangerousHtml.__html}</${tag}>`;
|
|
127
148
|
}
|
|
149
|
+
if (RAW_TEXT_ELEMENTS.has(tag)) {
|
|
150
|
+
const raw = renderRawChildren(tag, children);
|
|
151
|
+
return `<${tag}${attrs}>${raw}</${tag}>`;
|
|
152
|
+
}
|
|
128
153
|
const inner = renderChildren(children);
|
|
129
154
|
return `<${tag}${attrs}>${inner}</${tag}>`;
|
|
130
155
|
}
|
package/dist/jsx/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/framework/jsx/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/framework/jsx/render.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -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,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;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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rainfw/core",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "A TypeScript web framework for Cloudflare Workers",
|
|
5
5
|
"bin": {
|
|
6
6
|
"rainjs": "./cli/index.js"
|
|
7
7
|
},
|
package/scripts/generate.js
CHANGED
|
@@ -27,7 +27,11 @@ function extractStringProps(obj, sourceFile, keys) {
|
|
|
27
27
|
|
|
28
28
|
function loadBuildConfig() {
|
|
29
29
|
const configPath = path.join(PROJECT_ROOT, "rain.config.ts");
|
|
30
|
-
const defaults = {
|
|
30
|
+
const defaults = {
|
|
31
|
+
routesDir: "src/routes",
|
|
32
|
+
outDir: ".rainjs",
|
|
33
|
+
frameworkPackage: "@rainfw/core",
|
|
34
|
+
};
|
|
31
35
|
if (!fs.existsSync(configPath)) return defaults;
|
|
32
36
|
|
|
33
37
|
const content = fs.readFileSync(configPath, "utf-8");
|
|
@@ -46,7 +50,11 @@ function loadBuildConfig() {
|
|
|
46
50
|
if (!ts.isObjectLiteralExpression(obj)) return;
|
|
47
51
|
Object.assign(
|
|
48
52
|
config,
|
|
49
|
-
extractStringProps(obj, sourceFile, [
|
|
53
|
+
extractStringProps(obj, sourceFile, [
|
|
54
|
+
"routesDir",
|
|
55
|
+
"outDir",
|
|
56
|
+
"frameworkPackage",
|
|
57
|
+
]),
|
|
50
58
|
);
|
|
51
59
|
});
|
|
52
60
|
|
|
@@ -533,6 +541,36 @@ function processPages(
|
|
|
533
541
|
}
|
|
534
542
|
}
|
|
535
543
|
|
|
544
|
+
function validateCompatibilityFlags() {
|
|
545
|
+
const wranglerPath = path.join(PROJECT_ROOT, "wrangler.toml");
|
|
546
|
+
if (!fs.existsSync(wranglerPath)) return;
|
|
547
|
+
|
|
548
|
+
const content = fs.readFileSync(wranglerPath, "utf-8");
|
|
549
|
+
const flagsMatch = content.match(
|
|
550
|
+
/compatibility_flags\s*=\s*\[([^\]]*)\]/,
|
|
551
|
+
);
|
|
552
|
+
const flags = flagsMatch
|
|
553
|
+
? (flagsMatch[1].match(/"([^"]+)"/g) || []).map((s) =>
|
|
554
|
+
s.replace(/"/g, ""),
|
|
555
|
+
)
|
|
556
|
+
: [];
|
|
557
|
+
|
|
558
|
+
if (!(flags.includes("nodejs_compat") || flags.includes("nodejs_als"))) {
|
|
559
|
+
console.error(
|
|
560
|
+
"[Rain] Error: Missing required compatibility flag.\n" +
|
|
561
|
+
' → Rain.js requires "nodejs_compat" in your wrangler.toml.\n' +
|
|
562
|
+
" → Add the following to your wrangler.toml:\n\n" +
|
|
563
|
+
' compatibility_flags = ["nodejs_compat"]\n\n' +
|
|
564
|
+
" → Without this flag, the Workers runtime will fail with:\n" +
|
|
565
|
+
' "No such module node:async_hooks"\n' +
|
|
566
|
+
" → See: https://developers.cloudflare.com/workers/" +
|
|
567
|
+
"configuration/compatibility-flags/" +
|
|
568
|
+
"#nodejs-compatibility-flag",
|
|
569
|
+
);
|
|
570
|
+
process.exit(1);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
536
574
|
function generate() {
|
|
537
575
|
if (!fs.existsSync(ROUTES_DIR)) {
|
|
538
576
|
console.error(
|
|
@@ -544,6 +582,8 @@ function generate() {
|
|
|
544
582
|
process.exit(1);
|
|
545
583
|
}
|
|
546
584
|
|
|
585
|
+
validateCompatibilityFlags();
|
|
586
|
+
|
|
547
587
|
try {
|
|
548
588
|
execSync("npx wrangler types", {
|
|
549
589
|
cwd: PROJECT_ROOT,
|
|
@@ -593,11 +633,13 @@ function generate() {
|
|
|
593
633
|
);
|
|
594
634
|
|
|
595
635
|
const hasConfig = fs.existsSync(CONFIG_FILE);
|
|
596
|
-
const
|
|
597
|
-
|
|
598
|
-
|
|
636
|
+
const fwPkg = BUILD_CONFIG.frameworkPackage;
|
|
637
|
+
const frameworkImport =
|
|
638
|
+
fwPkg.startsWith(".") || fwPkg.startsWith("/")
|
|
639
|
+
? relativeImportPath(path.join(PROJECT_ROOT, fwPkg))
|
|
640
|
+
: fwPkg;
|
|
599
641
|
|
|
600
|
-
const headerImports = [`import { Rain } from "${
|
|
642
|
+
const headerImports = [`import { Rain } from "${frameworkImport}";`];
|
|
601
643
|
if (hasConfig) {
|
|
602
644
|
const configPath = relativeImportPath(
|
|
603
645
|
path.join(PROJECT_ROOT, "rain.config"),
|