@revojs/cloudflare 0.1.56 → 0.2.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.
- package/dist/index.d.ts +6 -6
- package/dist/index.js +65 -21
- package/dist/module/index.d.ts +4 -0
- package/dist/module/index.js +35 -0
- package/package.json +14 -11
- package/dist/runtime/server.d.ts +0 -8
- package/dist/runtime/server.js +0 -15
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export
|
|
1
|
+
import { type ScheduledEvent } from "@cloudflare/workers-types";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
fetch(request: Request, variables: Cloudflare.Env): Promise<Response | undefined>;
|
|
4
|
+
scheduled(event: ScheduledEvent, variables: Cloudflare.Env): Promise<void>;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
package/dist/index.js
CHANGED
|
@@ -1,26 +1,70 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import "@cloudflare/workers-types";
|
|
2
|
+
import { SCHEDULE_CONTEXT, SERVER_CONTEXT, isResponse, isWebSocket, sendResponse } from "@revojs/server";
|
|
3
|
+
import { VARIABLE_CONTEXT, createScope } from "revojs";
|
|
4
4
|
//#region src/index.ts
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const { request, response } = useServer(scope);
|
|
12
|
-
proxy ??= await getPlatformProxy();
|
|
13
|
-
scope.setContext(SERVER_CONTEXT, {
|
|
5
|
+
var src_default = {
|
|
6
|
+
async fetch(request, variables) {
|
|
7
|
+
const server = await import("#server").then((module) => module.default);
|
|
8
|
+
const scope = await createScope({ context: {
|
|
9
|
+
[VARIABLE_CONTEXT]: variables,
|
|
10
|
+
[SERVER_CONTEXT]: {
|
|
14
11
|
states: {},
|
|
15
12
|
request,
|
|
16
|
-
response
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
return next?.();
|
|
13
|
+
response: { headers: new Headers() }
|
|
14
|
+
}
|
|
20
15
|
} });
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const result = await server.fetch(scope);
|
|
17
|
+
if (isResponse(result)) return result;
|
|
18
|
+
if (isWebSocket(result)) {
|
|
19
|
+
const [clientSocket, serverSocket] = new WebSocketPair();
|
|
20
|
+
const connection = {
|
|
21
|
+
async send(message) {
|
|
22
|
+
serverSocket.send(message);
|
|
23
|
+
},
|
|
24
|
+
async close(code, reason) {
|
|
25
|
+
serverSocket.close(code, reason);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
serverSocket.addEventListener("open", async () => {
|
|
29
|
+
try {
|
|
30
|
+
await result.open(connection);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
if (error instanceof Error) await result.error(connection, error);
|
|
33
|
+
else throw error;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
serverSocket.addEventListener("message", async (event) => {
|
|
37
|
+
try {
|
|
38
|
+
await result.message(connection, event.data);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
if (error instanceof Error) await result.error(connection, error);
|
|
41
|
+
else throw error;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
serverSocket.addEventListener("error", async (event) => {
|
|
45
|
+
await result.error(connection, event.error);
|
|
46
|
+
});
|
|
47
|
+
serverSocket.addEventListener("close", async (event) => {
|
|
48
|
+
try {
|
|
49
|
+
await result.close(connection, event.code, event.reason);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
if (error instanceof Error) await result.error(connection, error);
|
|
52
|
+
else throw error;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
serverSocket.accept();
|
|
56
|
+
return sendResponse(scope, null, {
|
|
57
|
+
status: 101,
|
|
58
|
+
webSocket: clientSocket
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
async scheduled(event, variables) {
|
|
63
|
+
await (await import("#server").then((module) => module.default)).schedule(await createScope({ context: {
|
|
64
|
+
[VARIABLE_CONTEXT]: variables,
|
|
65
|
+
[SCHEDULE_CONTEXT]: { when: event.cron }
|
|
66
|
+
} }));
|
|
67
|
+
}
|
|
68
|
+
};
|
|
25
69
|
//#endregion
|
|
26
|
-
export {
|
|
70
|
+
export { src_default as default };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type PluginConfig } from "@cloudflare/vite-plugin";
|
|
2
|
+
export type CloudflareConfig = PluginConfig;
|
|
3
|
+
declare const _default: import("revojs/module").Module<"cloudflare", PluginConfig, readonly [import("revojs/module").Module<"server", Record<string, never>, []>]>;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
2
|
+
import server, { SERVER } from "@revojs/server/module";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
import { addTypes, defineModule, resolvePaths, useModule } from "revojs/module";
|
|
5
|
+
import { mergeObjects, scheduleAliases } from "revojs/shared";
|
|
6
|
+
//#region src/module/index.ts
|
|
7
|
+
var module_default = defineModule({
|
|
8
|
+
name: "cloudflare",
|
|
9
|
+
modules: [server],
|
|
10
|
+
config: () => ({ viteEnvironment: { name: SERVER } }),
|
|
11
|
+
async setup(config) {
|
|
12
|
+
const { fromModule } = useModule(import.meta.url);
|
|
13
|
+
const crons = /* @__PURE__ */ new Set();
|
|
14
|
+
for (const path of resolvePaths(["./schedules/**/*.{js,ts}", "!./schedules/**/*.d.ts"])) {
|
|
15
|
+
const content = readFileSync(path, "utf8");
|
|
16
|
+
for (const match of content.matchAll(SCHEDULE_WHEN_MATCH)) crons.add(scheduleAliases[match[1].trim().toLowerCase()] ?? match[1].trim());
|
|
17
|
+
}
|
|
18
|
+
addTypes(config, "cloudflare", () => `import "@cloudflare/workers-types"`);
|
|
19
|
+
const options = mergeObjects(config.cloudflare, {
|
|
20
|
+
viteEnvironment: { name: SERVER },
|
|
21
|
+
config: {
|
|
22
|
+
main: fromModule("../index.js"),
|
|
23
|
+
assets: { run_worker_first: ["/"] },
|
|
24
|
+
triggers: { crons: [...crons] }
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return { vite: {
|
|
28
|
+
server: { watch: { ignored: ["**/.wrangler/**"] } },
|
|
29
|
+
plugins: [cloudflare(options)]
|
|
30
|
+
} };
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
var SCHEDULE_WHEN_MATCH = /when\s*:\s*["'`]([^"'`\n]+)["'`]/g;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { module_default as default };
|
package/package.json
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revojs/cloudflare",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"repository":
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/tellua/revojs.git"
|
|
8
|
+
},
|
|
6
9
|
"files": [
|
|
7
10
|
"dist"
|
|
8
11
|
],
|
|
9
12
|
"type": "module",
|
|
10
|
-
"main": "./dist/index.js",
|
|
11
|
-
"module": "./dist/index.js",
|
|
12
|
-
"types": "./dist/index.d.ts",
|
|
13
13
|
"exports": {
|
|
14
|
-
"
|
|
15
|
-
"types": "./dist/index.d.ts",
|
|
16
|
-
"import": "./dist/index.js"
|
|
14
|
+
"./module": {
|
|
15
|
+
"types": "./dist/module/index.d.ts",
|
|
16
|
+
"import": "./dist/module/index.js"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build": "
|
|
20
|
+
"build": "vite build",
|
|
21
|
+
"watch": "vite build --watch"
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@cloudflare/
|
|
24
|
+
"@cloudflare/vite-plugin": "^1.54.8",
|
|
25
|
+
"@cloudflare/workers-types": "^5.20260911.1",
|
|
26
|
+
"@revojs/server": "*",
|
|
24
27
|
"revojs": "*",
|
|
25
|
-
"wrangler": "^4.
|
|
28
|
+
"wrangler": "^4.131.1"
|
|
26
29
|
},
|
|
27
30
|
"devDependencies": {
|
|
28
31
|
"@revojs/tsconfig": "*"
|
package/dist/runtime/server.d.ts
DELETED
package/dist/runtime/server.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { SERVER_CONTEXT, Scope } from "revojs";
|
|
2
|
-
//#region src/runtime/server.ts
|
|
3
|
-
var server_default = { async fetch(request, variables) {
|
|
4
|
-
const server = await import("#server").then((module) => module.default);
|
|
5
|
-
const scope = new Scope();
|
|
6
|
-
scope.setContext(SERVER_CONTEXT, {
|
|
7
|
-
states: {},
|
|
8
|
-
request,
|
|
9
|
-
response: { headers: new Headers() },
|
|
10
|
-
variables
|
|
11
|
-
});
|
|
12
|
-
return await server.fetch(scope);
|
|
13
|
-
} };
|
|
14
|
-
//#endregion
|
|
15
|
-
export { server_default as default };
|