reactivated 0.49.1 → 0.49.2-a3325
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/build.client.d.mts +2 -2
- package/dist/build.client.mjs +2 -2
- package/dist/build.client.mjs.map +1 -1
- package/dist/eslint.config.js +1 -0
- package/dist/eslint.config.js.map +1 -1
- package/dist/generated.d.ts +0 -10
- package/dist/generator.mjs +3 -126
- package/dist/generator.mjs.map +1 -1
- package/dist/render.mjs +5 -4
- package/dist/render.mjs.map +1 -1
- package/dist/rpc.d.ts +4 -40
- package/dist/rpc.js +2 -64
- package/dist/rpc.js.map +1 -1
- package/package.json +2 -2
- package/scripts/setup_environment.sh +7 -8
- package/src/README.md +2 -2
- package/src/build.client.mts +2 -2
- package/src/eslint.config.ts +1 -0
- package/src/generated.tsx +0 -10
- package/src/generator.mts +1 -157
- package/src/render.mts +5 -4
- package/src/rpc.tsx +11 -133
package/dist/build.client.d.mts
CHANGED
|
@@ -20,7 +20,7 @@ declare const clientConfig: {
|
|
|
20
20
|
rolldownOptions: {
|
|
21
21
|
input: string;
|
|
22
22
|
output: {
|
|
23
|
-
|
|
23
|
+
codeSplitting: false;
|
|
24
24
|
entryFileNames: string;
|
|
25
25
|
chunkFileNames: string;
|
|
26
26
|
assetFileNames: string;
|
|
@@ -53,7 +53,7 @@ declare const rendererConfig: {
|
|
|
53
53
|
rolldownOptions: {
|
|
54
54
|
input: string;
|
|
55
55
|
output: {
|
|
56
|
-
|
|
56
|
+
codeSplitting: false;
|
|
57
57
|
entryFileNames: string;
|
|
58
58
|
chunkFileNames: string;
|
|
59
59
|
assetFileNames: string;
|
package/dist/build.client.mjs
CHANGED
|
@@ -41,7 +41,7 @@ const clientConfig = {
|
|
|
41
41
|
rolldownOptions: {
|
|
42
42
|
input: "/client/index.tsx",
|
|
43
43
|
output: {
|
|
44
|
-
|
|
44
|
+
codeSplitting: false,
|
|
45
45
|
entryFileNames: `[name].js`,
|
|
46
46
|
chunkFileNames: `[name].js`,
|
|
47
47
|
assetFileNames: `[name].[ext]`,
|
|
@@ -94,7 +94,7 @@ const rendererConfig = {
|
|
|
94
94
|
rolldownOptions: {
|
|
95
95
|
input: "reactivated/dist/server.mjs",
|
|
96
96
|
output: {
|
|
97
|
-
|
|
97
|
+
codeSplitting: false,
|
|
98
98
|
entryFileNames: `renderer.mjs`,
|
|
99
99
|
chunkFileNames: `renderer.mjs`,
|
|
100
100
|
assetFileNames: `renderer.[ext]`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.client.mjs","sourceRoot":"","sources":["../src/build.client.mts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,sBAAsB,CAAC;AACzC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAe,KAAK,EAAC,MAAM,MAAM,CAAC;AACzC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,IAAI,CAAC;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,MAAM,iBAAiB,GAAG,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC;AAE7D,MAAM,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GACvB,iBAAiB,IAAI,IAAI;IACrB,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAC;IACjD,CAAC,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC;AAE/D,MAAM,CAAC,OAAO,UAAU,eAAe;IACnC,OAAO;QACH,IAAI,EAAE,kBAAkB;QAExB,WAAW;YACP,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC;YAC5B,MAAM,UAAU,GAAG,qCAAqC,CAAC;YAEzD,MAAM,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACnD,QAAQ,CAAC,SAAS,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;KACJ,CAAC;AACN,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AAErC,MAAM,YAAY,GAAG;IACjB,MAAM,EAAE,MAAM,EAAE;IAChB,IAAI;IACJ,KAAK,EAAE;QACH,MAAM;QACN,KAAK;QACL,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,KAAK;QACf,eAAe,EAAE;YACb,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE;gBACJ,
|
|
1
|
+
{"version":3,"file":"build.client.mjs","sourceRoot":"","sources":["../src/build.client.mts"],"names":[],"mappings":"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"}
|
package/dist/eslint.config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint.config.js","sourceRoot":"","sources":["../src/eslint.config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,sDAAsD;AACtD,aAAa;AACb,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,aAAa;AACb,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,eAAe,QAAQ,CAAC,MAAM,CAC1B;IACI,eAAe,EAAE;QACb,aAAa,EAAE;YACX,cAAc,EAAE,IAAI;YACpB,eAAe,EAAE,SAAS;SAC7B;KACJ;CACJ,EACD;IACI,OAAO,EAAE;QACL,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,aAAa;QACb,eAAe;QACf,kBAAkB;
|
|
1
|
+
{"version":3,"file":"eslint.config.js","sourceRoot":"","sources":["../src/eslint.config.ts"],"names":[],"mappings":"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"}
|
package/dist/generated.d.ts
CHANGED
|
@@ -13,9 +13,6 @@ export interface Types {
|
|
|
13
13
|
URLSchema: {
|
|
14
14
|
[k: string]: ReactivatedTypesURL;
|
|
15
15
|
};
|
|
16
|
-
RPCRegistry: {
|
|
17
|
-
[k: string]: ReactivatedTypesRPC;
|
|
18
|
-
};
|
|
19
16
|
}
|
|
20
17
|
export interface DjangoFormsWidgetsHiddenInput {
|
|
21
18
|
template_name: "django/forms/widgets/hidden.html";
|
|
@@ -263,10 +260,3 @@ export interface ReactivatedTypesURL {
|
|
|
263
260
|
[k: string]: string;
|
|
264
261
|
};
|
|
265
262
|
}
|
|
266
|
-
export interface ReactivatedTypesRPC {
|
|
267
|
-
params: [string, string][];
|
|
268
|
-
url: string;
|
|
269
|
-
input: string | null;
|
|
270
|
-
output: string;
|
|
271
|
-
type: "form" | "form_set" | "form_group";
|
|
272
|
-
}
|
package/dist/generator.mjs
CHANGED
|
@@ -5,10 +5,9 @@ import { promises as fsPromises } from "fs";
|
|
|
5
5
|
// json-schema-to-typescript messes up the descriptor even if unused.
|
|
6
6
|
const stdinBuffer = fs.readFileSync(0);
|
|
7
7
|
const { compile } = await import("json-schema-to-typescript");
|
|
8
|
-
import { Project,
|
|
8
|
+
import { Project, VariableDeclarationKind, } from "ts-morph";
|
|
9
9
|
const schema = JSON.parse(stdinBuffer.toString("utf8"));
|
|
10
|
-
const { urls: possibleEmptyUrls, templates, interfaces,
|
|
11
|
-
const rpc = uncastedRpc;
|
|
10
|
+
const { urls: possibleEmptyUrls, templates, interfaces, types, } = schema;
|
|
12
11
|
const urls = {
|
|
13
12
|
...possibleEmptyUrls,
|
|
14
13
|
__reactivated_do_not_use: {
|
|
@@ -25,124 +24,6 @@ const urls = {
|
|
|
25
24
|
const project = new Project();
|
|
26
25
|
const sourceFile = project.createSourceFile("types");
|
|
27
26
|
const urlFile = project.createSourceFile("urls");
|
|
28
|
-
const rpcConstructorStructure = {
|
|
29
|
-
statements: [],
|
|
30
|
-
parameters: [
|
|
31
|
-
{
|
|
32
|
-
name: "requester",
|
|
33
|
-
type: "rpcUtils.Requester",
|
|
34
|
-
isReadonly: false,
|
|
35
|
-
scope: Scope.Public,
|
|
36
|
-
decorators: [],
|
|
37
|
-
hasQuestionToken: false,
|
|
38
|
-
hasOverrideKeyword: false,
|
|
39
|
-
kind: StructureKind.Parameter,
|
|
40
|
-
isRestParameter: false,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
typeParameters: [],
|
|
44
|
-
docs: [],
|
|
45
|
-
kind: StructureKind.Constructor,
|
|
46
|
-
overloads: [],
|
|
47
|
-
};
|
|
48
|
-
const rpcStructure = {
|
|
49
|
-
decorators: [],
|
|
50
|
-
typeParameters: [],
|
|
51
|
-
docs: [],
|
|
52
|
-
isAbstract: false,
|
|
53
|
-
implements: [],
|
|
54
|
-
name: "RPC",
|
|
55
|
-
isExported: true,
|
|
56
|
-
isDefaultExport: false,
|
|
57
|
-
hasDeclareKeyword: false,
|
|
58
|
-
kind: StructureKind.Class,
|
|
59
|
-
ctors: [rpcConstructorStructure],
|
|
60
|
-
properties: [],
|
|
61
|
-
methods: [],
|
|
62
|
-
};
|
|
63
|
-
for (const name of Object.keys(rpc)) {
|
|
64
|
-
const { url, input, output, type, params } = rpc[name];
|
|
65
|
-
const methodStructure = {
|
|
66
|
-
kind: StructureKind.Method,
|
|
67
|
-
name,
|
|
68
|
-
isAsync: true,
|
|
69
|
-
parameters: [],
|
|
70
|
-
statements: [],
|
|
71
|
-
returnType: "",
|
|
72
|
-
};
|
|
73
|
-
rpcConstructorStructure.statements.push(`this.${name} = (this.${name} as any).bind(this);\n`);
|
|
74
|
-
methodStructure.parameters?.push({
|
|
75
|
-
name: "this",
|
|
76
|
-
type: "void",
|
|
77
|
-
});
|
|
78
|
-
let bodyText = "";
|
|
79
|
-
const initializer = {
|
|
80
|
-
url: (writer) => writer.quote(url),
|
|
81
|
-
name: (writer) => writer.quote(name),
|
|
82
|
-
};
|
|
83
|
-
if (params.length >= 1) {
|
|
84
|
-
const paramsProperties = [];
|
|
85
|
-
const iterator = [];
|
|
86
|
-
for (const [paramType, paramName] of params) {
|
|
87
|
-
paramsProperties.push({ name: paramName, type: "string | number" });
|
|
88
|
-
iterator.push(paramName);
|
|
89
|
-
}
|
|
90
|
-
methodStructure.parameters?.push({
|
|
91
|
-
name: "params",
|
|
92
|
-
type: Writers.objectType({ properties: paramsProperties }),
|
|
93
|
-
isReadonly: false,
|
|
94
|
-
decorators: [],
|
|
95
|
-
hasQuestionToken: false,
|
|
96
|
-
hasOverrideKeyword: false,
|
|
97
|
-
kind: StructureKind.Parameter,
|
|
98
|
-
isRestParameter: false,
|
|
99
|
-
});
|
|
100
|
-
Object.assign(initializer, {
|
|
101
|
-
paramsAndIterator: Writers.object({
|
|
102
|
-
iterator: JSON.stringify(iterator),
|
|
103
|
-
params: "params",
|
|
104
|
-
}),
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
Object.assign(initializer, { paramsAndIterator: "null" });
|
|
109
|
-
}
|
|
110
|
-
if (input != null) {
|
|
111
|
-
rpcStructure.properties?.push({
|
|
112
|
-
name: input,
|
|
113
|
-
type: `_Types["${input}"]`,
|
|
114
|
-
initializer: JSON.stringify(values[input]),
|
|
115
|
-
});
|
|
116
|
-
methodStructure.parameters?.push({
|
|
117
|
-
name: "input",
|
|
118
|
-
type: `forms.FormOrFormSetValues<_Types["${input}"]>`,
|
|
119
|
-
});
|
|
120
|
-
methodStructure.returnType = `Promise<rpcUtils.Result<_Types["${output}"], forms.FormOrFormSetErrors<_Types["${input}"]>, _Types["RPCPermission"]>>`;
|
|
121
|
-
Object.assign(initializer, {
|
|
122
|
-
input: Writers.object({
|
|
123
|
-
values: "input",
|
|
124
|
-
type: (writer) => writer.quote(type).write(" as const"),
|
|
125
|
-
}),
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
methodStructure.returnType = `Promise<rpcUtils.Result<_Types["${output}"], null, _Types["RPCPermission"]>>`;
|
|
130
|
-
Object.assign(initializer, { input: "null" });
|
|
131
|
-
}
|
|
132
|
-
methodStructure.statements?.push({
|
|
133
|
-
kind: StructureKind.VariableStatement,
|
|
134
|
-
declarationKind: VariableDeclarationKind.Const,
|
|
135
|
-
declarations: [
|
|
136
|
-
{
|
|
137
|
-
name: "options",
|
|
138
|
-
initializer: Writers.object(initializer),
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
});
|
|
142
|
-
methodStructure.statements?.push("return rpcUtils.rpcCall((this as any).requester, options)");
|
|
143
|
-
rpcStructure.methods?.push(methodStructure);
|
|
144
|
-
}
|
|
145
|
-
sourceFile.addClass(rpcStructure);
|
|
146
27
|
if (Object.keys(urls).length == 0) {
|
|
147
28
|
urlFile.addStatements(`export const reverse () => throw new Error("No urls")`);
|
|
148
29
|
}
|
|
@@ -221,7 +102,7 @@ sourceFile.addStatements(`
|
|
|
221
102
|
import type {Renderer as GenericRenderer} from "reactivated/dist/render.mjs";
|
|
222
103
|
export type Renderer = GenericRenderer<_Types["Context"]>;
|
|
223
104
|
|
|
224
|
-
export const rpc =
|
|
105
|
+
export const rpc = {requester: typeof window != "undefined" ? rpcUtils.defaultRequester : null as any};
|
|
225
106
|
import React from "react"
|
|
226
107
|
import * as generated from "reactivated/dist/generated";
|
|
227
108
|
import * as rpcUtils from "reactivated/dist/rpc";
|
|
@@ -235,12 +116,8 @@ export function classNames(...classes: (string | undefined | null | false)[]) {
|
|
|
235
116
|
// Note: this needs strict function types to behave correctly with excess properties etc.
|
|
236
117
|
export type Checker<P, U extends (React.FunctionComponent<P> | React.ComponentClass<P>)> = {};
|
|
237
118
|
|
|
238
|
-
export type Result<TSuccess, TInvalid> = rpcUtils.Result<TSuccess, TInvalid, _Types["RPCPermission"]>;
|
|
239
|
-
|
|
240
119
|
export {Context} from "./context";
|
|
241
120
|
import {Context} from "./context";
|
|
242
|
-
|
|
243
|
-
import * as forms from "reactivated/dist/forms";
|
|
244
121
|
export type {FormHandler} from "reactivated/dist/forms";
|
|
245
122
|
export {reverse} from "./urls";
|
|
246
123
|
|
package/dist/generator.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.mjs","sourceRoot":"","sources":["../src/generator.mts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAC,QAAQ,IAAI,UAAU,EAAC,MAAM,IAAI,CAAC;AAE1C,wDAAwD;AACxD,qEAAqE;AACrE,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAEvC,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAE5D,OAAO,
|
|
1
|
+
{"version":3,"file":"generator.mjs","sourceRoot":"","sources":["../src/generator.mts"],"names":[],"mappings":"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"}
|
package/dist/render.mjs
CHANGED
|
@@ -14,9 +14,10 @@ function serJSON(data) {
|
|
|
14
14
|
export const render = async (req, res, vite, mode, entryPoint, ssrFixStacktrace) => {
|
|
15
15
|
// @ts-ignore
|
|
16
16
|
const customConfiguration = import.meta.glob("@client/renderer.tsx", { eager: true })["/client/renderer.tsx"];
|
|
17
|
-
const { context, props } = req.body;
|
|
17
|
+
const { context, props, entry_point: requestEntryPoint } = req.body;
|
|
18
18
|
const Template = await getTemplate(context);
|
|
19
19
|
const scriptNonce = context.request.csp_nonce ?? undefined;
|
|
20
|
+
const resolvedEntryPoint = requestEntryPoint ?? entryPoint;
|
|
20
21
|
const { STATIC_URL } = context;
|
|
21
22
|
if (STATIC_URL == null) {
|
|
22
23
|
console.error("Ensure your context processor includes STATIC_URL");
|
|
@@ -25,7 +26,7 @@ export const render = async (req, res, vite, mode, entryPoint, ssrFixStacktrace)
|
|
|
25
26
|
// JS is loaded via bootstrapModules in renderToPipeableStream options
|
|
26
27
|
const CSSLoader = ({ children }) => {
|
|
27
28
|
if (mode === "production") {
|
|
28
|
-
preinit(`${STATIC_URL}dist/${
|
|
29
|
+
preinit(`${STATIC_URL}dist/${resolvedEntryPoint}.css?v=${process.env.RELEASE_VERSION ?? ""}`, { as: "style" });
|
|
29
30
|
}
|
|
30
31
|
return children;
|
|
31
32
|
};
|
|
@@ -42,9 +43,9 @@ export const render = async (req, res, vite, mode, entryPoint, ssrFixStacktrace)
|
|
|
42
43
|
`,
|
|
43
44
|
bootstrapModules: mode === "production"
|
|
44
45
|
? [
|
|
45
|
-
`${STATIC_URL}dist/${
|
|
46
|
+
`${STATIC_URL}dist/${resolvedEntryPoint}.js?v=${process.env.RELEASE_VERSION ?? ""}`,
|
|
46
47
|
]
|
|
47
|
-
: [`${STATIC_URL}dist/client/${
|
|
48
|
+
: [`${STATIC_URL}dist/client/${resolvedEntryPoint}.tsx`],
|
|
48
49
|
onError(error) {
|
|
49
50
|
hasError = true;
|
|
50
51
|
if (ssrFixStacktrace) {
|
package/dist/render.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.mjs","sourceRoot":"","sources":["../src/render.mts"],"names":[],"mappings":"AACA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAmB,cAAc,EAAC,MAAM,aAAa,CAAC;AAC7D,aAAa;AACb,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AACtC,aAAa;AACb,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAUlD,MAAM,eAAe,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAExE,SAAS,OAAO,CAAC,IAAa;IAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EACvB,GAAY,EACZ,GAAa,EACb,IAAY,EACZ,IAAkC,EAClC,UAAkB,EAClB,gBAAyC,EAC3C,EAAE;IACA,aAAa;IACb,MAAM,mBAAmB,GAAgC,MAAM,CAAC,IAAI,CAAC,IAAI,CACrE,sBAAsB,EACtB,EAAC,KAAK,EAAE,IAAI,EAAC,CAChB,CAAC,sBAAsB,CAAC,CAAC;IAE1B,MAAM,EAAC,OAAO,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"render.mjs","sourceRoot":"","sources":["../src/render.mts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
export declare function getCookieFromCookieString(name: string, cookieString: string): string | null;
|
|
2
|
-
type ParamsAndIterator = {
|
|
3
|
-
iterator: string[];
|
|
4
|
-
params: Record<string, string | number>;
|
|
5
|
-
};
|
|
6
2
|
export type RequesterResult = {
|
|
7
3
|
type: "invalid";
|
|
8
4
|
errors: any;
|
|
@@ -18,41 +14,9 @@ export type RequesterResult = {
|
|
|
18
14
|
type: "exception";
|
|
19
15
|
exception: unknown;
|
|
20
16
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export declare function rpcCall(requester: Requester, options: {
|
|
24
|
-
url: string;
|
|
25
|
-
input: {
|
|
26
|
-
values: Record<string, any>;
|
|
27
|
-
type: "form" | "form_set" | "form_group";
|
|
28
|
-
} | null;
|
|
29
|
-
paramsAndIterator: ParamsAndIterator | null;
|
|
30
|
-
name: string;
|
|
31
|
-
}): Promise<Result<any, any, any>>;
|
|
32
|
-
type Request = {
|
|
33
|
-
url: string;
|
|
34
|
-
params: unknown;
|
|
35
|
-
name: string;
|
|
36
|
-
data: FormData;
|
|
37
|
-
};
|
|
38
|
-
export type Result<TSuccess, TInvalid, TDenied> = {
|
|
39
|
-
type: "success";
|
|
40
|
-
data: TSuccess;
|
|
41
|
-
request: Request;
|
|
42
|
-
} | {
|
|
43
|
-
type: "invalid";
|
|
44
|
-
errors: TInvalid;
|
|
45
|
-
request: Request;
|
|
46
|
-
} | {
|
|
47
|
-
type: "denied";
|
|
48
|
-
reason: TDenied;
|
|
49
|
-
request: Request;
|
|
50
|
-
} | {
|
|
51
|
-
type: "unauthorized";
|
|
52
|
-
request: Request;
|
|
53
|
-
} | {
|
|
54
|
-
type: "exception";
|
|
55
|
-
exception: unknown;
|
|
56
|
-
request: Request;
|
|
17
|
+
type JSONValue = string | number | boolean | null | JSONValue[] | {
|
|
18
|
+
[key: string]: JSONValue;
|
|
57
19
|
};
|
|
20
|
+
export type Requester = (url: string, payload: JSONValue | null) => Promise<RequesterResult>;
|
|
21
|
+
export declare const defaultRequester: Requester;
|
|
58
22
|
export {};
|
package/dist/rpc.js
CHANGED
|
@@ -15,25 +15,14 @@ export function getCookieFromCookieString(name, cookieString) {
|
|
|
15
15
|
}
|
|
16
16
|
return cookieValue;
|
|
17
17
|
}
|
|
18
|
-
function buildUrl(baseUrl, paramsAndIterator) {
|
|
19
|
-
if (paramsAndIterator == null) {
|
|
20
|
-
return baseUrl;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const params = [];
|
|
24
|
-
for (const key of paramsAndIterator.iterator) {
|
|
25
|
-
params.push(paramsAndIterator.params[key]);
|
|
26
|
-
}
|
|
27
|
-
return `${baseUrl}${params.join("/")}/`;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
18
|
export const defaultRequester = async (url, payload) => {
|
|
31
19
|
try {
|
|
32
20
|
const response = await fetch(url, {
|
|
33
21
|
method: payload == null ? "GET" : "POST",
|
|
34
|
-
body: payload,
|
|
22
|
+
body: payload == null ? null : JSON.stringify(payload),
|
|
35
23
|
headers: {
|
|
36
24
|
Accept: "application/json",
|
|
25
|
+
...(payload != null ? { "Content-Type": "application/json" } : {}),
|
|
37
26
|
"X-CSRFToken": getCookieFromCookieString("csrftoken", document.cookie) ?? "",
|
|
38
27
|
},
|
|
39
28
|
});
|
|
@@ -72,55 +61,4 @@ export const defaultRequester = async (url, payload) => {
|
|
|
72
61
|
exception: null,
|
|
73
62
|
};
|
|
74
63
|
};
|
|
75
|
-
const buildValues = (type, formData, prefix, values) => {
|
|
76
|
-
if (values == null) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
if (type === "form_set") {
|
|
80
|
-
// TODO: can initial always be 0?
|
|
81
|
-
formData.append(`${prefix}-INITIAL_FORMS`, values.length);
|
|
82
|
-
formData.append(`${prefix}-TOTAL_FORMS`, values.length);
|
|
83
|
-
for (const index in values) {
|
|
84
|
-
const formSetForm = values[index];
|
|
85
|
-
Object.keys(formSetForm).forEach((key) => formData.append(`${prefix}-${index}-${key}`, formSetForm[key] ?? ""));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
Object.keys(values).forEach((key) => formData.append(prefix == null ? key : `${prefix}-${key}`, values[key] ?? ""));
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
export async function rpcCall(requester, options) {
|
|
93
|
-
const { url, input, paramsAndIterator, name } = options;
|
|
94
|
-
const { type, values } = input != null ? input : { type: "", values: {} };
|
|
95
|
-
const formData = new FormData();
|
|
96
|
-
if (type === "form_group") {
|
|
97
|
-
Object.keys(values).map((prefix) => {
|
|
98
|
-
const formOrFormSet = values[prefix];
|
|
99
|
-
if (Array.isArray(formOrFormSet)) {
|
|
100
|
-
buildValues("form_set", formData, prefix, formOrFormSet);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
buildValues("form", formData, prefix, formOrFormSet);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
else if (type === "form_set") {
|
|
108
|
-
buildValues("form_set", formData, "form", values);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
buildValues("form", formData, null, values);
|
|
112
|
-
}
|
|
113
|
-
let urlWithPossibleInstance = buildUrl(url, paramsAndIterator);
|
|
114
|
-
if (name != null) {
|
|
115
|
-
urlWithPossibleInstance = urlWithPossibleInstance.concat(`${name}/`);
|
|
116
|
-
}
|
|
117
|
-
const result = await requester(urlWithPossibleInstance, input == null ? null : formData);
|
|
118
|
-
const request = {
|
|
119
|
-
url: urlWithPossibleInstance,
|
|
120
|
-
params: paramsAndIterator?.params,
|
|
121
|
-
name: name,
|
|
122
|
-
data: formData,
|
|
123
|
-
};
|
|
124
|
-
return { ...result, request };
|
|
125
|
-
}
|
|
126
64
|
//# sourceMappingURL=rpc.js.map
|
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;AAsBD,MAAM,CAAC,MAAM,gBAAgB,GAAc,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAC9D,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACxC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YACtD,OAAO,EAAE;gBACL,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reactivated",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.2-a3325",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -57,6 +57,6 @@
|
|
|
57
57
|
"ts-morph": "^24.0.0",
|
|
58
58
|
"typescript": "^5.6.3",
|
|
59
59
|
"typescript-eslint": "^8.20.0",
|
|
60
|
-
"vite": "8.0.
|
|
60
|
+
"vite": "8.0.13"
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -13,10 +13,6 @@ POSTGRESQL_LOGS="$VIRTUAL_ENV/postgresql/logs.txt"
|
|
|
13
13
|
# directory just for that shell process.
|
|
14
14
|
TMP_ENV="/tmp/reactivated/$(readlink -f "$VIRTUAL_ENV" | md5sum | awk '{print $1}')"
|
|
15
15
|
|
|
16
|
-
# https://github.com/python/mypy/issues/13392
|
|
17
|
-
# https://setuptools.pypa.io/en/latest/userguide/development_mode.html#legacy-behavior
|
|
18
|
-
export SETUPTOOLS_ENABLE_FEATURES="legacy-editable"
|
|
19
|
-
|
|
20
16
|
export PGPORT=1
|
|
21
17
|
export PGDATABASE="database"
|
|
22
18
|
export PGHOST=$TMP_ENV
|
|
@@ -29,8 +25,8 @@ if [ ! -d "$VIRTUAL_ENV" ]; then
|
|
|
29
25
|
fi
|
|
30
26
|
|
|
31
27
|
rm -rf "$TMP_ENV"
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
uv venv "$VIRTUAL_ENV"
|
|
29
|
+
uv sync --config-setting editable_mode=compat
|
|
34
30
|
fi
|
|
35
31
|
|
|
36
32
|
if [ ! -d "$POSTGRESQL_DATA" ]; then
|
|
@@ -38,7 +34,7 @@ if [ ! -d "$POSTGRESQL_DATA" ]; then
|
|
|
38
34
|
|
|
39
35
|
if [ -f "$EXTERNAL_PID" ]; then
|
|
40
36
|
pid_to_kill=$(cat "$EXTERNAL_PID")
|
|
41
|
-
kill -9 "$pid_to_kill" &>/dev/null || echo "No
|
|
37
|
+
kill -9 "$pid_to_kill" &>/dev/null || echo "No PostgreSQL process to kill"
|
|
42
38
|
fi
|
|
43
39
|
|
|
44
40
|
rm -rf "$TMP_ENV"
|
|
@@ -47,10 +43,13 @@ fi
|
|
|
47
43
|
|
|
48
44
|
mkdir -p "$TMP_ENV"
|
|
49
45
|
|
|
50
|
-
if
|
|
46
|
+
if ! pg_ctl status -D "$POSTGRESQL_DATA" &>/dev/null; then
|
|
47
|
+
rm -f "$EXTERNAL_PID"
|
|
51
48
|
pg_ctl -o "-p 1 -k \"$PGHOST\" -c listen_addresses=\"\" -c external_pid_file=\"$EXTERNAL_PID\"" -D "$POSTGRESQL_DATA" -l "$POSTGRESQL_LOGS" start &>/dev/null
|
|
52
49
|
fi
|
|
53
50
|
|
|
54
51
|
if [ "$NEED_DATABASE" == true ]; then
|
|
55
52
|
createdb $PGDATABASE &>/dev/null
|
|
56
53
|
fi
|
|
54
|
+
|
|
55
|
+
export DATABASE_URL="postgres:///database?host=$TMP_ENV&port=1"
|
package/src/README.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
The JavaScript part of Django Reactivated, including the webpack config, the
|
|
2
|
-
|
|
1
|
+
The JavaScript part of Django Reactivated, including the webpack config, the client
|
|
2
|
+
utils, and the server.
|
package/src/build.client.mts
CHANGED
|
@@ -51,7 +51,7 @@ const clientConfig = {
|
|
|
51
51
|
rolldownOptions: {
|
|
52
52
|
input: "/client/index.tsx",
|
|
53
53
|
output: {
|
|
54
|
-
|
|
54
|
+
codeSplitting: false,
|
|
55
55
|
entryFileNames: `[name].js`,
|
|
56
56
|
chunkFileNames: `[name].js`,
|
|
57
57
|
assetFileNames: `[name].[ext]`,
|
|
@@ -107,7 +107,7 @@ const rendererConfig = {
|
|
|
107
107
|
rolldownOptions: {
|
|
108
108
|
input: "reactivated/dist/server.mjs",
|
|
109
109
|
output: {
|
|
110
|
-
|
|
110
|
+
codeSplitting: false,
|
|
111
111
|
entryFileNames: `renderer.mjs`,
|
|
112
112
|
chunkFileNames: `renderer.mjs`,
|
|
113
113
|
assetFileNames: `renderer.[ext]`,
|
package/src/eslint.config.ts
CHANGED
package/src/generated.tsx
CHANGED
|
@@ -30,9 +30,6 @@ export interface Types {
|
|
|
30
30
|
URLSchema: {
|
|
31
31
|
[k: string]: ReactivatedTypesURL;
|
|
32
32
|
};
|
|
33
|
-
RPCRegistry: {
|
|
34
|
-
[k: string]: ReactivatedTypesRPC;
|
|
35
|
-
};
|
|
36
33
|
}
|
|
37
34
|
export interface DjangoFormsWidgetsHiddenInput {
|
|
38
35
|
template_name: "django/forms/widgets/hidden.html";
|
|
@@ -280,10 +277,3 @@ export interface ReactivatedTypesURL {
|
|
|
280
277
|
[k: string]: string;
|
|
281
278
|
};
|
|
282
279
|
}
|
|
283
|
-
export interface ReactivatedTypesRPC {
|
|
284
|
-
params: [string, string][];
|
|
285
|
-
url: string;
|
|
286
|
-
input: string | null;
|
|
287
|
-
output: string;
|
|
288
|
-
type: "form" | "form_set" | "form_group";
|
|
289
|
-
}
|
package/src/generator.mts
CHANGED
|
@@ -11,22 +11,10 @@ const stdinBuffer = fs.readFileSync(0);
|
|
|
11
11
|
const {compile} = await import("json-schema-to-typescript");
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
|
-
CodeBlockWriter,
|
|
15
14
|
Project,
|
|
16
|
-
Scope,
|
|
17
|
-
SourceFile,
|
|
18
|
-
StructureKind,
|
|
19
|
-
SyntaxKind,
|
|
20
15
|
VariableDeclarationKind,
|
|
21
|
-
WriterFunction,
|
|
22
|
-
Writers,
|
|
23
16
|
InterfaceDeclarationStructure,
|
|
24
17
|
OptionalKind,
|
|
25
|
-
MethodDeclarationStructure,
|
|
26
|
-
PropertyDeclarationStructure,
|
|
27
|
-
ParameterDeclarationStructure,
|
|
28
|
-
StatementedNodeStructure,
|
|
29
|
-
StatementStructures,
|
|
30
18
|
} from "ts-morph";
|
|
31
19
|
|
|
32
20
|
const schema = JSON.parse(stdinBuffer.toString("utf8"));
|
|
@@ -34,13 +22,9 @@ const {
|
|
|
34
22
|
urls: possibleEmptyUrls,
|
|
35
23
|
templates,
|
|
36
24
|
interfaces,
|
|
37
|
-
rpc: uncastedRpc,
|
|
38
25
|
types,
|
|
39
|
-
values,
|
|
40
26
|
} = schema;
|
|
41
27
|
|
|
42
|
-
const rpc: generated.Types["RPCRegistry"] = uncastedRpc;
|
|
43
|
-
|
|
44
28
|
const urls: generated.Types["URLSchema"] = {
|
|
45
29
|
...possibleEmptyUrls,
|
|
46
30
|
__reactivated_do_not_use: {
|
|
@@ -60,142 +44,6 @@ const project = new Project();
|
|
|
60
44
|
const sourceFile = project.createSourceFile("types");
|
|
61
45
|
const urlFile = project.createSourceFile("urls");
|
|
62
46
|
|
|
63
|
-
const rpcConstructorStructure = {
|
|
64
|
-
statements: [] as string[],
|
|
65
|
-
parameters: [
|
|
66
|
-
{
|
|
67
|
-
name: "requester",
|
|
68
|
-
type: "rpcUtils.Requester",
|
|
69
|
-
isReadonly: false,
|
|
70
|
-
scope: Scope.Public,
|
|
71
|
-
decorators: [],
|
|
72
|
-
hasQuestionToken: false,
|
|
73
|
-
hasOverrideKeyword: false,
|
|
74
|
-
kind: StructureKind.Parameter as const,
|
|
75
|
-
isRestParameter: false,
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
typeParameters: [],
|
|
79
|
-
docs: [],
|
|
80
|
-
kind: StructureKind.Constructor as const,
|
|
81
|
-
overloads: [],
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
const rpcStructure = {
|
|
85
|
-
decorators: [],
|
|
86
|
-
typeParameters: [],
|
|
87
|
-
docs: [],
|
|
88
|
-
isAbstract: false,
|
|
89
|
-
implements: [],
|
|
90
|
-
name: "RPC",
|
|
91
|
-
isExported: true,
|
|
92
|
-
isDefaultExport: false,
|
|
93
|
-
hasDeclareKeyword: false,
|
|
94
|
-
kind: StructureKind.Class as const,
|
|
95
|
-
ctors: [rpcConstructorStructure],
|
|
96
|
-
properties: [] as OptionalKind<PropertyDeclarationStructure>[],
|
|
97
|
-
methods: [] as OptionalKind<MethodDeclarationStructure>[],
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
for (const name of Object.keys(rpc)) {
|
|
101
|
-
const {url, input, output, type, params} = rpc[name];
|
|
102
|
-
|
|
103
|
-
const methodStructure = {
|
|
104
|
-
kind: StructureKind.Method as const,
|
|
105
|
-
name,
|
|
106
|
-
isAsync: true,
|
|
107
|
-
parameters: [] as OptionalKind<ParameterDeclarationStructure>[],
|
|
108
|
-
statements: [] as (string | StatementStructures)[],
|
|
109
|
-
returnType: "",
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
rpcConstructorStructure.statements.push(
|
|
113
|
-
`this.${name} = (this.${name} as any).bind(this);\n`,
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
methodStructure.parameters?.push({
|
|
117
|
-
name: "this",
|
|
118
|
-
type: "void",
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
let bodyText = "";
|
|
122
|
-
const initializer = {
|
|
123
|
-
url: (writer: CodeBlockWriter) => writer.quote(url),
|
|
124
|
-
name: (writer: CodeBlockWriter) => writer.quote(name),
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
if (params.length >= 1) {
|
|
128
|
-
const paramsProperties = [];
|
|
129
|
-
|
|
130
|
-
const iterator = [];
|
|
131
|
-
for (const [paramType, paramName] of params) {
|
|
132
|
-
paramsProperties.push({name: paramName, type: "string | number"});
|
|
133
|
-
iterator.push(paramName);
|
|
134
|
-
}
|
|
135
|
-
methodStructure.parameters?.push({
|
|
136
|
-
name: "params",
|
|
137
|
-
type: Writers.objectType({properties: paramsProperties}),
|
|
138
|
-
isReadonly: false,
|
|
139
|
-
decorators: [],
|
|
140
|
-
hasQuestionToken: false,
|
|
141
|
-
hasOverrideKeyword: false,
|
|
142
|
-
kind: StructureKind.Parameter as const,
|
|
143
|
-
isRestParameter: false,
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
Object.assign(initializer, {
|
|
147
|
-
paramsAndIterator: Writers.object({
|
|
148
|
-
iterator: JSON.stringify(iterator),
|
|
149
|
-
params: "params",
|
|
150
|
-
}),
|
|
151
|
-
});
|
|
152
|
-
} else {
|
|
153
|
-
Object.assign(initializer, {paramsAndIterator: "null"});
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (input != null) {
|
|
157
|
-
rpcStructure.properties?.push({
|
|
158
|
-
name: input,
|
|
159
|
-
type: `_Types["${input}"]`,
|
|
160
|
-
initializer: JSON.stringify(values[input]),
|
|
161
|
-
});
|
|
162
|
-
methodStructure.parameters?.push({
|
|
163
|
-
name: "input",
|
|
164
|
-
type: `forms.FormOrFormSetValues<_Types["${input}"]>`,
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
methodStructure.returnType = `Promise<rpcUtils.Result<_Types["${output}"], forms.FormOrFormSetErrors<_Types["${input}"]>, _Types["RPCPermission"]>>`;
|
|
168
|
-
|
|
169
|
-
Object.assign(initializer, {
|
|
170
|
-
input: Writers.object({
|
|
171
|
-
values: "input",
|
|
172
|
-
type: (writer: CodeBlockWriter) =>
|
|
173
|
-
writer.quote(type).write(" as const"),
|
|
174
|
-
}),
|
|
175
|
-
});
|
|
176
|
-
} else {
|
|
177
|
-
methodStructure.returnType = `Promise<rpcUtils.Result<_Types["${output}"], null, _Types["RPCPermission"]>>`;
|
|
178
|
-
Object.assign(initializer, {input: "null"});
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
methodStructure.statements?.push({
|
|
182
|
-
kind: StructureKind.VariableStatement,
|
|
183
|
-
declarationKind: VariableDeclarationKind.Const,
|
|
184
|
-
declarations: [
|
|
185
|
-
{
|
|
186
|
-
name: "options",
|
|
187
|
-
initializer: Writers.object(initializer),
|
|
188
|
-
},
|
|
189
|
-
],
|
|
190
|
-
});
|
|
191
|
-
methodStructure.statements?.push(
|
|
192
|
-
"return rpcUtils.rpcCall((this as any).requester, options)",
|
|
193
|
-
);
|
|
194
|
-
rpcStructure.methods?.push(methodStructure);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
sourceFile.addClass(rpcStructure);
|
|
198
|
-
|
|
199
47
|
if (Object.keys(urls).length == 0) {
|
|
200
48
|
urlFile.addStatements(`export const reverse () => throw new Error("No urls")`);
|
|
201
49
|
} else {
|
|
@@ -287,7 +135,7 @@ sourceFile.addStatements(`
|
|
|
287
135
|
import type {Renderer as GenericRenderer} from "reactivated/dist/render.mjs";
|
|
288
136
|
export type Renderer = GenericRenderer<_Types["Context"]>;
|
|
289
137
|
|
|
290
|
-
export const rpc =
|
|
138
|
+
export const rpc = {requester: typeof window != "undefined" ? rpcUtils.defaultRequester : null as any};
|
|
291
139
|
import React from "react"
|
|
292
140
|
import * as generated from "reactivated/dist/generated";
|
|
293
141
|
import * as rpcUtils from "reactivated/dist/rpc";
|
|
@@ -301,12 +149,8 @@ export function classNames(...classes: (string | undefined | null | false)[]) {
|
|
|
301
149
|
// Note: this needs strict function types to behave correctly with excess properties etc.
|
|
302
150
|
export type Checker<P, U extends (React.FunctionComponent<P> | React.ComponentClass<P>)> = {};
|
|
303
151
|
|
|
304
|
-
export type Result<TSuccess, TInvalid> = rpcUtils.Result<TSuccess, TInvalid, _Types["RPCPermission"]>;
|
|
305
|
-
|
|
306
152
|
export {Context} from "./context";
|
|
307
153
|
import {Context} from "./context";
|
|
308
|
-
|
|
309
|
-
import * as forms from "reactivated/dist/forms";
|
|
310
154
|
export type {FormHandler} from "reactivated/dist/forms";
|
|
311
155
|
export {reverse} from "./urls";
|
|
312
156
|
|
package/src/render.mts
CHANGED
|
@@ -39,9 +39,10 @@ export const render = async (
|
|
|
39
39
|
{eager: true},
|
|
40
40
|
)["/client/renderer.tsx"];
|
|
41
41
|
|
|
42
|
-
const {context, props} = req.body;
|
|
42
|
+
const {context, props, entry_point: requestEntryPoint} = req.body;
|
|
43
43
|
const Template = await getTemplate(context);
|
|
44
44
|
const scriptNonce = context.request.csp_nonce ?? undefined;
|
|
45
|
+
const resolvedEntryPoint = requestEntryPoint ?? entryPoint;
|
|
45
46
|
|
|
46
47
|
const {STATIC_URL} = context;
|
|
47
48
|
|
|
@@ -54,7 +55,7 @@ export const render = async (
|
|
|
54
55
|
const CSSLoader: React.FC<React.PropsWithChildren> = ({children}) => {
|
|
55
56
|
if (mode === "production") {
|
|
56
57
|
preinit(
|
|
57
|
-
`${STATIC_URL}dist/${
|
|
58
|
+
`${STATIC_URL}dist/${resolvedEntryPoint}.css?v=${process.env.RELEASE_VERSION ?? ""}`,
|
|
58
59
|
{as: "style"},
|
|
59
60
|
);
|
|
60
61
|
}
|
|
@@ -92,9 +93,9 @@ export const render = async (
|
|
|
92
93
|
bootstrapModules:
|
|
93
94
|
mode === "production"
|
|
94
95
|
? [
|
|
95
|
-
`${STATIC_URL}dist/${
|
|
96
|
+
`${STATIC_URL}dist/${resolvedEntryPoint}.js?v=${process.env.RELEASE_VERSION ?? ""}`,
|
|
96
97
|
]
|
|
97
|
-
: [`${STATIC_URL}dist/client/${
|
|
98
|
+
: [`${STATIC_URL}dist/client/${resolvedEntryPoint}.tsx`],
|
|
98
99
|
onError(error) {
|
|
99
100
|
hasError = true;
|
|
100
101
|
if (ssrFixStacktrace) {
|
package/src/rpc.tsx
CHANGED
|
@@ -18,22 +18,6 @@ export function getCookieFromCookieString(name: string, cookieString: string) {
|
|
|
18
18
|
return cookieValue;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
type ParamsAndIterator = {iterator: string[]; params: Record<string, string | number>};
|
|
22
|
-
|
|
23
|
-
function buildUrl(baseUrl: string, paramsAndIterator: ParamsAndIterator | null) {
|
|
24
|
-
if (paramsAndIterator == null) {
|
|
25
|
-
return baseUrl;
|
|
26
|
-
} else {
|
|
27
|
-
const params = [];
|
|
28
|
-
|
|
29
|
-
for (const key of paramsAndIterator.iterator) {
|
|
30
|
-
params.push(paramsAndIterator.params[key]);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return `${baseUrl}${params.join("/")}/`;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
21
|
export type RequesterResult =
|
|
38
22
|
| {type: "invalid"; errors: any}
|
|
39
23
|
| {type: "success"; data: any}
|
|
@@ -41,18 +25,27 @@ export type RequesterResult =
|
|
|
41
25
|
| {type: "unauthorized"}
|
|
42
26
|
| {type: "exception"; exception: unknown};
|
|
43
27
|
|
|
28
|
+
type JSONValue =
|
|
29
|
+
| string
|
|
30
|
+
| number
|
|
31
|
+
| boolean
|
|
32
|
+
| null
|
|
33
|
+
| JSONValue[]
|
|
34
|
+
| {[key: string]: JSONValue};
|
|
35
|
+
|
|
44
36
|
export type Requester = (
|
|
45
37
|
url: string,
|
|
46
|
-
payload:
|
|
38
|
+
payload: JSONValue | null,
|
|
47
39
|
) => Promise<RequesterResult>;
|
|
48
40
|
|
|
49
41
|
export const defaultRequester: Requester = async (url, payload) => {
|
|
50
42
|
try {
|
|
51
43
|
const response = await fetch(url, {
|
|
52
44
|
method: payload == null ? "GET" : "POST",
|
|
53
|
-
body: payload,
|
|
45
|
+
body: payload == null ? null : JSON.stringify(payload),
|
|
54
46
|
headers: {
|
|
55
47
|
Accept: "application/json",
|
|
48
|
+
...(payload != null ? {"Content-Type": "application/json"} : {}),
|
|
56
49
|
"X-CSRFToken":
|
|
57
50
|
getCookieFromCookieString("csrftoken", document.cookie) ?? "",
|
|
58
51
|
},
|
|
@@ -90,118 +83,3 @@ export const defaultRequester: Requester = async (url, payload) => {
|
|
|
90
83
|
exception: null,
|
|
91
84
|
};
|
|
92
85
|
};
|
|
93
|
-
|
|
94
|
-
const buildValues = (
|
|
95
|
-
type: "form" | "form_set",
|
|
96
|
-
formData: FormData,
|
|
97
|
-
prefix: string | null,
|
|
98
|
-
values: any,
|
|
99
|
-
) => {
|
|
100
|
-
if (values == null) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
if (type === "form_set") {
|
|
104
|
-
// TODO: can initial always be 0?
|
|
105
|
-
formData.append(`${prefix}-INITIAL_FORMS`, values.length);
|
|
106
|
-
formData.append(`${prefix}-TOTAL_FORMS`, values.length);
|
|
107
|
-
for (const index in values as Array<any>) {
|
|
108
|
-
const formSetForm = values[index];
|
|
109
|
-
Object.keys(formSetForm).forEach((key) =>
|
|
110
|
-
formData.append(`${prefix}-${index}-${key}`, formSetForm[key] ?? ""),
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
} else {
|
|
114
|
-
Object.keys(values).forEach((key) =>
|
|
115
|
-
formData.append(
|
|
116
|
-
prefix == null ? key : `${prefix}-${key}`,
|
|
117
|
-
values[key as keyof typeof values] ?? "",
|
|
118
|
-
),
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
export async function rpcCall(
|
|
124
|
-
requester: Requester,
|
|
125
|
-
options: {
|
|
126
|
-
url: string;
|
|
127
|
-
input: {
|
|
128
|
-
values: Record<string, any>;
|
|
129
|
-
type: "form" | "form_set" | "form_group";
|
|
130
|
-
} | null;
|
|
131
|
-
paramsAndIterator: ParamsAndIterator | null;
|
|
132
|
-
name: string;
|
|
133
|
-
},
|
|
134
|
-
): Promise<Result<any, any, any>> {
|
|
135
|
-
const {url, input, paramsAndIterator, name} = options;
|
|
136
|
-
const {type, values} = input != null ? input : {type: "", values: {}};
|
|
137
|
-
|
|
138
|
-
const formData = new FormData();
|
|
139
|
-
|
|
140
|
-
if (type === "form_group") {
|
|
141
|
-
Object.keys(values).map((prefix) => {
|
|
142
|
-
const formOrFormSet = (values as any)[prefix];
|
|
143
|
-
if (Array.isArray(formOrFormSet)) {
|
|
144
|
-
buildValues("form_set", formData, prefix, formOrFormSet);
|
|
145
|
-
} else {
|
|
146
|
-
buildValues("form", formData, prefix, formOrFormSet);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
} else if (type === "form_set") {
|
|
150
|
-
buildValues("form_set", formData, "form", values);
|
|
151
|
-
} else {
|
|
152
|
-
buildValues("form", formData, null, values);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
let urlWithPossibleInstance = buildUrl(url, paramsAndIterator);
|
|
156
|
-
|
|
157
|
-
if (name != null) {
|
|
158
|
-
urlWithPossibleInstance = urlWithPossibleInstance.concat(`${name}/`);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const result = await requester(
|
|
162
|
-
urlWithPossibleInstance,
|
|
163
|
-
input == null ? null : formData,
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
const request: Request = {
|
|
167
|
-
url: urlWithPossibleInstance,
|
|
168
|
-
params: paramsAndIterator?.params,
|
|
169
|
-
name: name,
|
|
170
|
-
data: formData,
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
return {...result, request};
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
type Request = {
|
|
177
|
-
url: string;
|
|
178
|
-
params: unknown;
|
|
179
|
-
name: string;
|
|
180
|
-
data: FormData;
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
export type Result<TSuccess, TInvalid, TDenied> =
|
|
184
|
-
| {
|
|
185
|
-
type: "success";
|
|
186
|
-
data: TSuccess;
|
|
187
|
-
request: Request;
|
|
188
|
-
}
|
|
189
|
-
| {
|
|
190
|
-
type: "invalid";
|
|
191
|
-
errors: TInvalid;
|
|
192
|
-
request: Request;
|
|
193
|
-
}
|
|
194
|
-
| {
|
|
195
|
-
type: "denied";
|
|
196
|
-
reason: TDenied;
|
|
197
|
-
request: Request;
|
|
198
|
-
}
|
|
199
|
-
| {
|
|
200
|
-
type: "unauthorized";
|
|
201
|
-
request: Request;
|
|
202
|
-
}
|
|
203
|
-
| {
|
|
204
|
-
type: "exception";
|
|
205
|
-
exception: unknown;
|
|
206
|
-
request: Request;
|
|
207
|
-
};
|