reactivated 0.50.1 → 0.51.0-a3394
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/rpc.d.ts +1 -1
- package/dist/rpc.js +10 -4
- package/dist/rpc.js.map +1 -1
- package/dist/vite.mjs +11 -0
- package/dist/vite.mjs.map +1 -1
- package/package.json +2 -1
- package/scripts/build_subtree.sh +28 -0
- package/src/rpc.tsx +11 -4
- package/src/vite.mts +11 -0
package/dist/rpc.d.ts
CHANGED
|
@@ -17,6 +17,6 @@ export type RequesterResult = {
|
|
|
17
17
|
type JSONValue = string | number | boolean | null | JSONValue[] | {
|
|
18
18
|
[key: string]: JSONValue;
|
|
19
19
|
};
|
|
20
|
-
export type Requester = (url: string, payload: JSONValue | null) => Promise<RequesterResult>;
|
|
20
|
+
export type Requester = (url: string, payload: JSONValue | null, method: "GET" | "POST") => Promise<RequesterResult>;
|
|
21
21
|
export declare const defaultRequester: Requester;
|
|
22
22
|
export {};
|
package/dist/rpc.js
CHANGED
|
@@ -15,14 +15,20 @@ export function getCookieFromCookieString(name, cookieString) {
|
|
|
15
15
|
}
|
|
16
16
|
return cookieValue;
|
|
17
17
|
}
|
|
18
|
-
export const defaultRequester = async (url, payload) => {
|
|
18
|
+
export const defaultRequester = async (url, payload, method) => {
|
|
19
19
|
try {
|
|
20
|
+
// The method is authoritative (it comes from the server's RPC
|
|
21
|
+
// declaration), not inferred from whether a payload is present. A POST
|
|
22
|
+
// serializes the payload exactly as given — including a literal `null` when
|
|
23
|
+
// the RPC's input is omitted — so the server receives the typed value it
|
|
24
|
+
// expects (e.g. `null` for an optional `Form | None` input).
|
|
25
|
+
const isGet = method === "GET";
|
|
20
26
|
const response = await fetch(url, {
|
|
21
|
-
method
|
|
22
|
-
body:
|
|
27
|
+
method,
|
|
28
|
+
body: isGet ? null : JSON.stringify(payload),
|
|
23
29
|
headers: {
|
|
24
30
|
Accept: "application/json",
|
|
25
|
-
...(
|
|
31
|
+
...(isGet ? {} : { "Content-Type": "application/json" }),
|
|
26
32
|
"X-CSRFToken": getCookieFromCookieString("csrftoken", document.cookie) ?? "",
|
|
27
33
|
},
|
|
28
34
|
});
|
package/dist/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.tsx"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mBAAmB;AACnB,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,YAAoB;IACxE,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,YAAY,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEjC,uDAAuD;YACvD,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;gBACrD,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.tsx"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mBAAmB;AACnB,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,YAAoB;IACxE,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,YAAY,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEjC,uDAAuD;YACvD,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;gBACrD,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAuBD,MAAM,CAAC,MAAM,gBAAgB,GAAc,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACtE,IAAI,CAAC;QACD,8DAA8D;QAC9D,uEAAuE;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM;YACN,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC5C,OAAO,EAAE;gBACL,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC;gBACtD,aAAa,EACT,yBAAyB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;aACpE;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC9B,CAAC;QACN,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACjC,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAChC,CAAC;QACN,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACjC,OAAO;gBACH,IAAI,EAAE,cAAc;aACvB,CAAC;QACN,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACjC,OAAO;gBACH,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE;aAC1B,CAAC;QACN,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,KAAK;SACnB,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,IAAI;KAClB,CAAC;AACN,CAAC,CAAC"}
|
package/dist/vite.mjs
CHANGED
|
@@ -53,6 +53,17 @@ const rendererConfig = {
|
|
|
53
53
|
base,
|
|
54
54
|
};
|
|
55
55
|
export const vite = await createServer(rendererConfig);
|
|
56
|
+
// Pre-warm SSR modules
|
|
57
|
+
console.log("[warmup] Pre-loading SSR modules...");
|
|
58
|
+
const ssrWarmupStart = Date.now();
|
|
59
|
+
try {
|
|
60
|
+
await vite.ssrLoadModule("reactivated/dist/render.mjs");
|
|
61
|
+
await vite.ssrLoadModule("@reactivated/template");
|
|
62
|
+
console.log(`[warmup] SSR modules loaded in ${Date.now() - ssrWarmupStart}ms`);
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
console.log(`[warmup] SSR warmup error (non-fatal): ${e.message}`);
|
|
66
|
+
}
|
|
56
67
|
app.use(vite.middlewares);
|
|
57
68
|
app.use(express.json({ limit: "200mb" }));
|
|
58
69
|
app.use("/_reactivated/", async (req, res) => {
|
package/dist/vite.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.mjs","sourceRoot":"","sources":["../src/vite.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.mjs","sourceRoot":"","sources":["../src/vite.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reactivated",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.51.0-a3394",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"author": "",
|
|
24
24
|
"bin": {
|
|
25
25
|
"setup_environment.sh": "./scripts/setup_environment.sh",
|
|
26
|
+
"build_subtree.sh": "./scripts/build_subtree.sh",
|
|
26
27
|
"generate_client_assets": "./dist/generator.mjs",
|
|
27
28
|
"generate_client_constants": "./dist/generator/constants.mjs",
|
|
28
29
|
"build.client": "./dist/build.client.mjs",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Builds the vendored reactivated subtree in a project that consumes it at
|
|
3
|
+
# upstream/reactivated/ (see docs/subtree.md). Run from the project root,
|
|
4
|
+
# after `npm install` and `uv sync`.
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
ROOT="$PWD"
|
|
8
|
+
SUBTREE="$ROOT/upstream/reactivated"
|
|
9
|
+
|
|
10
|
+
if [ ! -d "$SUBTREE" ]; then
|
|
11
|
+
echo "No upstream/reactivated/ found. Run from the root of a project that vendors reactivated." >&2
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
# Generate packages/reactivated/src/generated.tsx from the Python types.
|
|
16
|
+
(cd "$SUBTREE" && PATH="$ROOT/node_modules/.bin:$PATH" python scripts/generate_types.py)
|
|
17
|
+
|
|
18
|
+
# Compile the TypeScript package to dist/.
|
|
19
|
+
"$ROOT/node_modules/.bin/tsc" --project "$SUBTREE/packages/reactivated/tsconfig.json"
|
|
20
|
+
|
|
21
|
+
# Re-link the file: dependency: its bin entries point into dist/, which only
|
|
22
|
+
# now exists.
|
|
23
|
+
npm install ./upstream/reactivated/packages/reactivated
|
|
24
|
+
|
|
25
|
+
# The framework is now built. Regenerate your app's schemas against it:
|
|
26
|
+
# python manage.py generate_client_assets
|
|
27
|
+
# That call belongs to the consumer (it runs with your app's settings), so it
|
|
28
|
+
# is intentionally not made here.
|
package/src/rpc.tsx
CHANGED
|
@@ -36,16 +36,23 @@ type JSONValue =
|
|
|
36
36
|
export type Requester = (
|
|
37
37
|
url: string,
|
|
38
38
|
payload: JSONValue | null,
|
|
39
|
+
method: "GET" | "POST",
|
|
39
40
|
) => Promise<RequesterResult>;
|
|
40
41
|
|
|
41
|
-
export const defaultRequester: Requester = async (url, payload) => {
|
|
42
|
+
export const defaultRequester: Requester = async (url, payload, method) => {
|
|
42
43
|
try {
|
|
44
|
+
// The method is authoritative (it comes from the server's RPC
|
|
45
|
+
// declaration), not inferred from whether a payload is present. A POST
|
|
46
|
+
// serializes the payload exactly as given — including a literal `null` when
|
|
47
|
+
// the RPC's input is omitted — so the server receives the typed value it
|
|
48
|
+
// expects (e.g. `null` for an optional `Form | None` input).
|
|
49
|
+
const isGet = method === "GET";
|
|
43
50
|
const response = await fetch(url, {
|
|
44
|
-
method
|
|
45
|
-
body:
|
|
51
|
+
method,
|
|
52
|
+
body: isGet ? null : JSON.stringify(payload),
|
|
46
53
|
headers: {
|
|
47
54
|
Accept: "application/json",
|
|
48
|
-
...(
|
|
55
|
+
...(isGet ? {} : {"Content-Type": "application/json"}),
|
|
49
56
|
"X-CSRFToken":
|
|
50
57
|
getCookieFromCookieString("csrftoken", document.cookie) ?? "",
|
|
51
58
|
},
|
package/src/vite.mts
CHANGED
|
@@ -63,6 +63,17 @@ const rendererConfig: InlineConfig = {
|
|
|
63
63
|
|
|
64
64
|
export const vite = await createServer(rendererConfig);
|
|
65
65
|
|
|
66
|
+
// Pre-warm SSR modules
|
|
67
|
+
console.log("[warmup] Pre-loading SSR modules...");
|
|
68
|
+
const ssrWarmupStart = Date.now();
|
|
69
|
+
try {
|
|
70
|
+
await vite.ssrLoadModule("reactivated/dist/render.mjs");
|
|
71
|
+
await vite.ssrLoadModule("@reactivated/template");
|
|
72
|
+
console.log(`[warmup] SSR modules loaded in ${Date.now() - ssrWarmupStart}ms`);
|
|
73
|
+
} catch (e: any) {
|
|
74
|
+
console.log(`[warmup] SSR warmup error (non-fatal): ${e.message}`);
|
|
75
|
+
}
|
|
76
|
+
|
|
66
77
|
app.use(vite.middlewares);
|
|
67
78
|
app.use(express.json({limit: "200mb"}));
|
|
68
79
|
|