eddev 0.2.0-beta.15 → 0.2.0-beta.19
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/build/get-webpack-config.js +1 -0
- package/build/serverless/create-next-app.js +99 -77
- package/cli/cli.js +4 -4
- package/components/PageHead.d.ts +1 -0
- package/components/PageHead.js +2 -0
- package/components/PageMeta.d.ts +1 -0
- package/components/PageMeta.js +2 -0
- package/components/PageMeta.monolith.d.ts +1 -0
- package/components/PageMeta.monolith.js +2 -0
- package/components/ServerlessPageMeta.d.ts +1 -0
- package/components/ServerlessPageMeta.js +2 -0
- package/config/config-schema.d.ts +10 -5
- package/config/config-schema.js +2 -1
- package/config/get-config.d.ts +6 -3
- package/config/parse-config.d.ts +4 -2
- package/dev-ui/hooks/usePersistState.js +3 -0
- package/dev-ui/loader.d.ts +2 -0
- package/dev-ui/loader.js +42 -0
- package/entry/Root.js +2 -18
- package/package.json +11 -2
- package/serverless/create-rpc-client.d.ts +5 -17
- package/serverless-template/_utils/PageMeta.tsx +43 -0
- package/serverless-template/_utils/fetch-wordpress-props.ts +10 -3
- package/serverless-template/_utils/fetch-wp.ts +16 -0
- package/serverless-template/global.d.ts +1 -0
- package/serverless-template/next.config.js +2 -0
- package/serverless-template/package.json +2 -2
- package/serverless-template/pages/_app.tsx +5 -0
- package/utils/updateEnvFile.d.ts +1 -0
- package/utils/updateEnvFile.js +76 -0
|
@@ -332,6 +332,7 @@ function getWebpackConfig(opts) {
|
|
|
332
332
|
DEFINES["process.BLOCK_MANIFEST_FILE"] = JSON.stringify(ALIAS["@manifest/blocks"]);
|
|
333
333
|
}
|
|
334
334
|
DEFINES["process.devUI"] = config.devUI === "enabled";
|
|
335
|
+
DEFINES["process.serverlessEndpoint"] = "window.SERVERLESS_ENDPOINT";
|
|
335
336
|
if (isBrowser) {
|
|
336
337
|
DEFINES["process.env.themePath"] = "window.THEME_PATH || ".concat(DEFINES["process.env.themePath"]);
|
|
337
338
|
}
|
|
@@ -65,15 +65,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
65
65
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
69
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
70
|
-
if (ar || !(i in from)) {
|
|
71
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
72
|
-
ar[i] = from[i];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
76
|
-
};
|
|
77
68
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
78
69
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
79
70
|
};
|
|
@@ -88,6 +79,7 @@ var manifest_blocks_1 = require("../manifests/manifest-blocks");
|
|
|
88
79
|
var promises_1 = require("fs/promises");
|
|
89
80
|
var manifest_views_1 = require("../manifests/manifest-views");
|
|
90
81
|
var getRepoName_1 = require("../../utils/getRepoName");
|
|
82
|
+
var updateEnvFile_1 = require("../../utils/updateEnvFile");
|
|
91
83
|
function requireConfig(dir) {
|
|
92
84
|
var configPath = (0, path_1.resolve)(dir, "ed.config.json");
|
|
93
85
|
return require(configPath);
|
|
@@ -95,7 +87,7 @@ function requireConfig(dir) {
|
|
|
95
87
|
function createNextApp(opts) {
|
|
96
88
|
var _a;
|
|
97
89
|
return __awaiter(this, void 0, void 0, function () {
|
|
98
|
-
var isVercel, serverlessDirectory, sendSignal, repoName, port;
|
|
90
|
+
var isVercel, serverlessDirectory, sendSignal, repoName, assetPaths, port;
|
|
99
91
|
return __generator(this, function (_b) {
|
|
100
92
|
switch (_b.label) {
|
|
101
93
|
case 0:
|
|
@@ -123,9 +115,10 @@ function createNextApp(opts) {
|
|
|
123
115
|
_b.sent();
|
|
124
116
|
_b.label = 5;
|
|
125
117
|
case 5:
|
|
126
|
-
|
|
118
|
+
assetPaths = ((_a = requireConfig(opts.baseDirectory).serverless) === null || _a === void 0 ? void 0 : _a.themeAssets) || [];
|
|
119
|
+
if (!!isVercel) return [3 /*break*/, 11];
|
|
127
120
|
// Sync important files during development, as they change
|
|
128
|
-
return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory,
|
|
121
|
+
return [4 /*yield*/, syncFiles(opts.baseDirectory, serverlessDirectory, [
|
|
129
122
|
"blocks/**/*",
|
|
130
123
|
"components/**/*",
|
|
131
124
|
"hooks/**/*",
|
|
@@ -137,8 +130,8 @@ function createNextApp(opts) {
|
|
|
137
130
|
"types.views.ts",
|
|
138
131
|
"types.blocks.ts",
|
|
139
132
|
"utils/**/*",
|
|
140
|
-
"ed.config.json"
|
|
141
|
-
]
|
|
133
|
+
"ed.config.json",
|
|
134
|
+
])
|
|
142
135
|
// Also sync APIs into the APIs folder
|
|
143
136
|
];
|
|
144
137
|
case 6:
|
|
@@ -146,46 +139,76 @@ function createNextApp(opts) {
|
|
|
146
139
|
_b.sent();
|
|
147
140
|
// Also sync APIs into the APIs folder
|
|
148
141
|
return [4 /*yield*/, syncFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "pages/"), ["api/**/*"])
|
|
149
|
-
//
|
|
142
|
+
// Sync the public folder
|
|
150
143
|
];
|
|
151
144
|
case 7:
|
|
152
145
|
// Also sync APIs into the APIs folder
|
|
153
146
|
_b.sent();
|
|
154
|
-
|
|
155
|
-
return [4 /*yield*/, syncFiles(
|
|
147
|
+
if (!assetPaths.length) return [3 /*break*/, 9];
|
|
148
|
+
return [4 /*yield*/, syncFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
|
|
156
149
|
case 8:
|
|
157
|
-
// And public folder
|
|
158
150
|
_b.sent();
|
|
159
151
|
_b.label = 9;
|
|
160
|
-
case 9:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return [4 /*yield*/, updatePackages(serverlessDirectory)];
|
|
152
|
+
case 9:
|
|
153
|
+
// Sync favicon
|
|
154
|
+
return [4 /*yield*/, syncFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])];
|
|
164
155
|
case 10:
|
|
156
|
+
// Sync favicon
|
|
165
157
|
_b.sent();
|
|
166
|
-
|
|
158
|
+
return [3 /*break*/, 15];
|
|
167
159
|
case 11:
|
|
160
|
+
if (!assetPaths.length) return [3 /*break*/, 13];
|
|
161
|
+
return [4 /*yield*/, copyFiles(opts.baseDirectory, (0, path_1.join)(serverlessDirectory, "public/wp-content/themes/".concat(repoName.repoName)), assetPaths)];
|
|
162
|
+
case 12:
|
|
163
|
+
_b.sent();
|
|
164
|
+
_b.label = 13;
|
|
165
|
+
case 13:
|
|
166
|
+
// Sync favicon
|
|
167
|
+
return [4 /*yield*/, copyFiles((0, path_1.join)(opts.baseDirectory), (0, path_1.join)(serverlessDirectory, "public/"), ["favicon.ico"])];
|
|
168
|
+
case 14:
|
|
169
|
+
// Sync favicon
|
|
170
|
+
_b.sent();
|
|
171
|
+
_b.label = 15;
|
|
172
|
+
case 15:
|
|
173
|
+
if (!!isVercel) return [3 /*break*/, 17];
|
|
174
|
+
sendSignal({ code: "packaging" });
|
|
175
|
+
return [4 /*yield*/, updatePackages(serverlessDirectory)];
|
|
176
|
+
case 16:
|
|
177
|
+
_b.sent();
|
|
178
|
+
_b.label = 17;
|
|
179
|
+
case 17:
|
|
168
180
|
sendSignal({ code: "compiling" });
|
|
169
181
|
// Create manifests
|
|
170
|
-
initManifests(serverlessDirectory, opts.dev)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
case
|
|
182
|
+
return [4 /*yield*/, initManifests(serverlessDirectory, opts.dev)
|
|
183
|
+
// Start
|
|
184
|
+
];
|
|
185
|
+
case 18:
|
|
186
|
+
// Create manifests
|
|
187
|
+
_b.sent();
|
|
188
|
+
if (!opts.dev) return [3 /*break*/, 21];
|
|
189
|
+
return [4 /*yield*/, getPort(3000)
|
|
190
|
+
// Write the endpoint URL to .env
|
|
191
|
+
];
|
|
192
|
+
case 19:
|
|
174
193
|
port = _b.sent();
|
|
194
|
+
// Write the endpoint URL to .env
|
|
195
|
+
(0, updateEnvFile_1.updateEnvFile)({
|
|
196
|
+
DEBUG_SERVERLESS_ENDPOINT: "http://localhost:".concat(port),
|
|
197
|
+
}, opts.baseDirectory);
|
|
175
198
|
sendSignal({ code: "url", url: "http://127.0.0.1:".concat(port) });
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
199
|
+
// await devNext(serverlessDirectory, port)
|
|
200
|
+
return [4 /*yield*/, runScript(serverlessDirectory, ["dev", "--port", String(port)])];
|
|
201
|
+
case 20:
|
|
202
|
+
// await devNext(serverlessDirectory, port)
|
|
180
203
|
_b.sent();
|
|
181
|
-
return [3 /*break*/,
|
|
182
|
-
case
|
|
183
|
-
if (!opts.build) return [3 /*break*/,
|
|
184
|
-
return [4 /*yield*/, runScript(serverlessDirectory, "build")];
|
|
185
|
-
case
|
|
204
|
+
return [3 /*break*/, 23];
|
|
205
|
+
case 21:
|
|
206
|
+
if (!opts.build) return [3 /*break*/, 23];
|
|
207
|
+
return [4 /*yield*/, runScript(serverlessDirectory, ["build"])];
|
|
208
|
+
case 22:
|
|
186
209
|
_b.sent();
|
|
187
|
-
_b.label =
|
|
188
|
-
case
|
|
210
|
+
_b.label = 23;
|
|
211
|
+
case 23: return [2 /*return*/];
|
|
189
212
|
}
|
|
190
213
|
});
|
|
191
214
|
});
|
|
@@ -261,7 +284,7 @@ function updatePackagesFile(sourceFolder, targetFolder) {
|
|
|
261
284
|
targetPackageFile = (0, path_1.resolve)(targetFolder, "package.json");
|
|
262
285
|
sourcePackage = require(sourcePackageFile);
|
|
263
286
|
targetPackage = require(targetPackageFile);
|
|
264
|
-
mergedPackage = __assign(__assign({}, targetPackage), { dependencies: __assign(__assign({}, (
|
|
287
|
+
mergedPackage = __assign(__assign({}, targetPackage), { dependencies: __assign(__assign({}, (targetPackage.dependencies || {})), (sourcePackage.dependencies || {})), devDependencies: __assign(__assign({}, (targetPackage.devDependencies || {})), (sourcePackage.devDependencies || {})) });
|
|
265
288
|
(0, fs_extra_1.writeJSON)(targetPackageFile, mergedPackage, {
|
|
266
289
|
spaces: 2,
|
|
267
290
|
});
|
|
@@ -269,6 +292,20 @@ function updatePackagesFile(sourceFolder, targetFolder) {
|
|
|
269
292
|
});
|
|
270
293
|
});
|
|
271
294
|
}
|
|
295
|
+
function copyFiles(sourceFolder, targetFolder, patterns) {
|
|
296
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
297
|
+
var files;
|
|
298
|
+
return __generator(this, function (_a) {
|
|
299
|
+
switch (_a.label) {
|
|
300
|
+
case 0: return [4 /*yield*/, Promise.all(patterns.map(function (pattern) { return (0, glob_promise_1.default)((0, path_1.resolve)(sourceFolder, pattern)); }))];
|
|
301
|
+
case 1:
|
|
302
|
+
files = (_a.sent()).flat();
|
|
303
|
+
console.log("Files are", files);
|
|
304
|
+
return [2 /*return*/];
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
}
|
|
272
309
|
function syncFiles(sourceFolder, targetFolder, patterns) {
|
|
273
310
|
return __awaiter(this, void 0, void 0, function () {
|
|
274
311
|
var _this = this;
|
|
@@ -303,45 +340,30 @@ function syncFiles(sourceFolder, targetFolder, patterns) {
|
|
|
303
340
|
});
|
|
304
341
|
});
|
|
305
342
|
}
|
|
306
|
-
function devNext(dir, port) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
port: port,
|
|
326
|
-
});
|
|
327
|
-
handle = app.getRequestHandler();
|
|
328
|
-
app.prepare().then(function () {
|
|
329
|
-
console.log("http://127.0.0.1:".concat(port));
|
|
330
|
-
createServer(function (req, res) {
|
|
331
|
-
handle(req, res, parse(req.url || "", true));
|
|
332
|
-
}).listen(app.port);
|
|
333
|
-
});
|
|
334
|
-
return [2 /*return*/];
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
function runScript(dir, script) {
|
|
343
|
+
// async function devNext(dir: string, port: number) {
|
|
344
|
+
// const { createServer } = await import("http")
|
|
345
|
+
// const { parse } = await import("url")
|
|
346
|
+
// const { default: next } = await import("next")
|
|
347
|
+
// const app = next({
|
|
348
|
+
// dev: true,
|
|
349
|
+
// dir: dir,
|
|
350
|
+
// minimalMode: true,
|
|
351
|
+
// customServer: true,
|
|
352
|
+
// port: port,
|
|
353
|
+
// })
|
|
354
|
+
// const handle = app.getRequestHandler()
|
|
355
|
+
// app.prepare().then(() => {
|
|
356
|
+
// createServer((req, res) => {
|
|
357
|
+
// handle(req, res, parse(req.url || "", true))
|
|
358
|
+
// }).listen(app.port)
|
|
359
|
+
// })
|
|
360
|
+
// }
|
|
361
|
+
function runScript(dir, args) {
|
|
340
362
|
var _a, _b;
|
|
341
363
|
return __awaiter(this, void 0, void 0, function () {
|
|
342
364
|
var proc;
|
|
343
365
|
return __generator(this, function (_c) {
|
|
344
|
-
proc = (0, child_process_1.spawn)("yarn",
|
|
366
|
+
proc = (0, child_process_1.spawn)("yarn", args, {
|
|
345
367
|
cwd: dir,
|
|
346
368
|
});
|
|
347
369
|
(_a = proc.stdout) === null || _a === void 0 ? void 0 : _a.pipe(process.stdout);
|
|
@@ -397,17 +419,17 @@ function initManifests(dir, dev) {
|
|
|
397
419
|
function getPort(port) {
|
|
398
420
|
if (port === void 0) { port = 3000; }
|
|
399
421
|
return __awaiter(this, void 0, void 0, function () {
|
|
400
|
-
var createServer
|
|
422
|
+
var createServer;
|
|
401
423
|
var _this = this;
|
|
402
424
|
return __generator(this, function (_a) {
|
|
403
425
|
switch (_a.label) {
|
|
404
426
|
case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("http")); })];
|
|
405
427
|
case 1:
|
|
406
428
|
createServer = (_a.sent()).createServer;
|
|
407
|
-
for (p = port; p < port + 100; p++) { }
|
|
408
429
|
return [4 /*yield*/, new Promise(function (resolve) {
|
|
409
430
|
var server = createServer();
|
|
410
|
-
server.listen(port,
|
|
431
|
+
server.listen(port, "127.0.0.1");
|
|
432
|
+
server.on("listening", function () {
|
|
411
433
|
server.once("close", function () {
|
|
412
434
|
resolve(port);
|
|
413
435
|
});
|
package/cli/cli.js
CHANGED
|
@@ -38,8 +38,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
var commander_1 = require("commander");
|
|
40
40
|
var create_next_app_1 = require("../build/serverless/create-next-app");
|
|
41
|
-
var build_dev_1 = require("./build.dev");
|
|
42
|
-
var build_prod_1 = require("./build.prod");
|
|
43
41
|
var setup_1 = require("./setup");
|
|
44
42
|
var program = new commander_1.Command();
|
|
45
43
|
program.version("0.0.1");
|
|
@@ -51,7 +49,8 @@ program
|
|
|
51
49
|
.option("-m, --mode <mode>", 'Defaults to all modes, but use "frontend", "admin" or "codegen" to run in just one mode', undefined)
|
|
52
50
|
.option("--verbose", "Enables log retention", false)
|
|
53
51
|
.action(function (options) {
|
|
54
|
-
(
|
|
52
|
+
var devCommand = require("./build.dev").devCommand;
|
|
53
|
+
devCommand({
|
|
55
54
|
serverless: options.serverless,
|
|
56
55
|
mode: options.mode,
|
|
57
56
|
retainLog: options.verbose,
|
|
@@ -69,7 +68,8 @@ program
|
|
|
69
68
|
});
|
|
70
69
|
}
|
|
71
70
|
else {
|
|
72
|
-
(
|
|
71
|
+
var prodCommand = require("./build.prod").prodCommand;
|
|
72
|
+
prodCommand({
|
|
73
73
|
serverless: options.serverless,
|
|
74
74
|
});
|
|
75
75
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function PageMeta(): any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function PageMeta(): any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function PageMeta(): any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function PageMeta(): any;
|
|
@@ -6,44 +6,49 @@ export declare const EDConfigSchema: z.ZodObject<{
|
|
|
6
6
|
uploads: z.ZodEnum<["proxy", "remote"]>;
|
|
7
7
|
plugins: z.ZodEnum<["proxy", "remote"]>;
|
|
8
8
|
theme: z.ZodEnum<["proxy", "copy", "remote"]>;
|
|
9
|
-
|
|
9
|
+
themeAssets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
10
|
apiOnly: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
endpoints: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
11
12
|
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
|
|
13
|
+
themeAssets?: string[] | undefined;
|
|
13
14
|
apiOnly?: boolean | undefined;
|
|
14
15
|
enabled: boolean;
|
|
15
16
|
uploads: "proxy" | "remote";
|
|
16
17
|
plugins: "proxy" | "remote";
|
|
17
18
|
theme: "copy" | "proxy" | "remote";
|
|
19
|
+
endpoints: Record<string, string>;
|
|
18
20
|
}, {
|
|
19
|
-
|
|
21
|
+
themeAssets?: string[] | undefined;
|
|
20
22
|
apiOnly?: boolean | undefined;
|
|
21
23
|
enabled: boolean;
|
|
22
24
|
uploads: "proxy" | "remote";
|
|
23
25
|
plugins: "proxy" | "remote";
|
|
24
26
|
theme: "copy" | "proxy" | "remote";
|
|
27
|
+
endpoints: Record<string, string>;
|
|
25
28
|
}>>;
|
|
26
29
|
devUI: z.ZodEnum<["disabled", "enabled"]>;
|
|
27
30
|
}, "strip", z.ZodTypeAny, {
|
|
28
31
|
$schema?: string | undefined;
|
|
29
32
|
serverless?: {
|
|
30
|
-
|
|
33
|
+
themeAssets?: string[] | undefined;
|
|
31
34
|
apiOnly?: boolean | undefined;
|
|
32
35
|
enabled: boolean;
|
|
33
36
|
uploads: "proxy" | "remote";
|
|
34
37
|
plugins: "proxy" | "remote";
|
|
35
38
|
theme: "copy" | "proxy" | "remote";
|
|
39
|
+
endpoints: Record<string, string>;
|
|
36
40
|
} | undefined;
|
|
37
41
|
devUI: "disabled" | "enabled";
|
|
38
42
|
}, {
|
|
39
43
|
$schema?: string | undefined;
|
|
40
44
|
serverless?: {
|
|
41
|
-
|
|
45
|
+
themeAssets?: string[] | undefined;
|
|
42
46
|
apiOnly?: boolean | undefined;
|
|
43
47
|
enabled: boolean;
|
|
44
48
|
uploads: "proxy" | "remote";
|
|
45
49
|
plugins: "proxy" | "remote";
|
|
46
50
|
theme: "copy" | "proxy" | "remote";
|
|
51
|
+
endpoints: Record<string, string>;
|
|
47
52
|
} | undefined;
|
|
48
53
|
devUI: "disabled" | "enabled";
|
|
49
54
|
}>;
|
package/config/config-schema.js
CHANGED
|
@@ -10,8 +10,9 @@ exports.EDConfigSchema = zod_1.z.object({
|
|
|
10
10
|
uploads: zod_1.z.enum(["proxy", "remote"]),
|
|
11
11
|
plugins: zod_1.z.enum(["proxy", "remote"]),
|
|
12
12
|
theme: zod_1.z.enum(["proxy", "copy", "remote"]),
|
|
13
|
-
|
|
13
|
+
themeAssets: zod_1.z.array(zod_1.z.string()).optional(),
|
|
14
14
|
apiOnly: zod_1.z.boolean().optional(),
|
|
15
|
+
endpoints: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
|
|
15
16
|
})
|
|
16
17
|
.optional(),
|
|
17
18
|
devUI: zod_1.z.enum(["disabled", "enabled"]),
|
package/config/get-config.d.ts
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
export declare function getEDConfig(dir?: string): import("zod").SafeParseReturnType<{
|
|
2
2
|
$schema?: string | undefined;
|
|
3
3
|
serverless?: {
|
|
4
|
-
|
|
4
|
+
themeAssets?: string[] | undefined;
|
|
5
5
|
apiOnly?: boolean | undefined;
|
|
6
6
|
enabled: boolean;
|
|
7
7
|
uploads: "proxy" | "remote";
|
|
8
8
|
plugins: "proxy" | "remote";
|
|
9
9
|
theme: "copy" | "proxy" | "remote";
|
|
10
|
+
endpoints: Record<string, string>;
|
|
10
11
|
} | undefined;
|
|
11
12
|
devUI: "disabled" | "enabled";
|
|
12
13
|
}, {
|
|
13
14
|
$schema?: string | undefined;
|
|
14
15
|
serverless?: {
|
|
15
|
-
|
|
16
|
+
themeAssets?: string[] | undefined;
|
|
16
17
|
apiOnly?: boolean | undefined;
|
|
17
18
|
enabled: boolean;
|
|
18
19
|
uploads: "proxy" | "remote";
|
|
19
20
|
plugins: "proxy" | "remote";
|
|
20
21
|
theme: "copy" | "proxy" | "remote";
|
|
22
|
+
endpoints: Record<string, string>;
|
|
21
23
|
} | undefined;
|
|
22
24
|
devUI: "disabled" | "enabled";
|
|
23
25
|
}>;
|
|
24
26
|
export declare function getEDConfigUnwrapped(dir?: string): {
|
|
25
27
|
$schema?: string | undefined;
|
|
26
28
|
serverless?: {
|
|
27
|
-
|
|
29
|
+
themeAssets?: string[] | undefined;
|
|
28
30
|
apiOnly?: boolean | undefined;
|
|
29
31
|
enabled: boolean;
|
|
30
32
|
uploads: "proxy" | "remote";
|
|
31
33
|
plugins: "proxy" | "remote";
|
|
32
34
|
theme: "copy" | "proxy" | "remote";
|
|
35
|
+
endpoints: Record<string, string>;
|
|
33
36
|
} | undefined;
|
|
34
37
|
devUI: "disabled" | "enabled";
|
|
35
38
|
};
|
package/config/parse-config.d.ts
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
export declare function parseConfig(config: any): import("zod").SafeParseReturnType<{
|
|
2
2
|
$schema?: string | undefined;
|
|
3
3
|
serverless?: {
|
|
4
|
-
|
|
4
|
+
themeAssets?: string[] | undefined;
|
|
5
5
|
apiOnly?: boolean | undefined;
|
|
6
6
|
enabled: boolean;
|
|
7
7
|
uploads: "proxy" | "remote";
|
|
8
8
|
plugins: "proxy" | "remote";
|
|
9
9
|
theme: "copy" | "proxy" | "remote";
|
|
10
|
+
endpoints: Record<string, string>;
|
|
10
11
|
} | undefined;
|
|
11
12
|
devUI: "disabled" | "enabled";
|
|
12
13
|
}, {
|
|
13
14
|
$schema?: string | undefined;
|
|
14
15
|
serverless?: {
|
|
15
|
-
|
|
16
|
+
themeAssets?: string[] | undefined;
|
|
16
17
|
apiOnly?: boolean | undefined;
|
|
17
18
|
enabled: boolean;
|
|
18
19
|
uploads: "proxy" | "remote";
|
|
19
20
|
plugins: "proxy" | "remote";
|
|
20
21
|
theme: "copy" | "proxy" | "remote";
|
|
22
|
+
endpoints: Record<string, string>;
|
|
21
23
|
} | undefined;
|
|
22
24
|
devUI: "disabled" | "enabled";
|
|
23
25
|
}>;
|
|
@@ -4,6 +4,9 @@ exports.usePersistState = void 0;
|
|
|
4
4
|
var react_1 = require("react");
|
|
5
5
|
var get = function (id, fallback) {
|
|
6
6
|
if (fallback === void 0) { fallback = undefined; }
|
|
7
|
+
if (typeof localStorage === "undefined") {
|
|
8
|
+
return fallback;
|
|
9
|
+
}
|
|
7
10
|
var value = localStorage.getItem("devui_" + id);
|
|
8
11
|
if (value !== null) {
|
|
9
12
|
try {
|
package/dev-ui/loader.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.DevUILoader = void 0;
|
|
23
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
24
|
+
var react_1 = require("react");
|
|
25
|
+
var dynamic_1 = require("../dynamic");
|
|
26
|
+
var usePersistState_1 = require("./hooks/usePersistState");
|
|
27
|
+
var DevUI = (0, dynamic_1.dynamic)(function () { return Promise.resolve().then(function () { return __importStar(require("./components/DevUI")); }); }, { ssr: false });
|
|
28
|
+
function DevUILoader() {
|
|
29
|
+
var _a = (0, usePersistState_1.usePersistState)("enable_devui", process.dev || (typeof window !== "undefined" && window["ENABLE_DEV_UI"])), render = _a[0], setRender = _a[1];
|
|
30
|
+
(0, react_1.useEffect)(function () {
|
|
31
|
+
if (document.location.search.includes("activate-dev-ui")) {
|
|
32
|
+
setRender(true);
|
|
33
|
+
}
|
|
34
|
+
}, []);
|
|
35
|
+
if (render) {
|
|
36
|
+
return (0, jsx_runtime_1.jsx)(DevUI, {}, void 0);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.DevUILoader = DevUILoader;
|
package/entry/Root.js
CHANGED
|
@@ -33,31 +33,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
33
33
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
34
34
|
// @ts-ignore
|
|
35
35
|
var views_1 = __importStar(require("@manifest/views"));
|
|
36
|
-
var dynamic_1 = require("../dynamic");
|
|
37
36
|
var react_1 = require("react");
|
|
38
37
|
var routing_1 = require("../routing");
|
|
39
|
-
var
|
|
40
|
-
var DevUI = (0, dynamic_1.dynamic)(function () { return Promise.resolve().then(function () { return __importStar(require("../dev-ui/components/DevUI")); }); });
|
|
38
|
+
var loader_1 = require("../dev-ui/loader");
|
|
41
39
|
function Root() {
|
|
42
40
|
var route = (0, routing_1.useRoute)();
|
|
43
|
-
return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [process.devUI && (0, jsx_runtime_1.jsx)(DevUILoader, {}, void 0), (0, jsx_runtime_1.jsx)(views_1.App, { children: (0, jsx_runtime_1.jsx)(routing_1.Switch, { children: Object.entries(views_1.default).map(function (_a) {
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [process.devUI && (0, jsx_runtime_1.jsx)(loader_1.DevUILoader, {}, void 0), (0, jsx_runtime_1.jsx)(views_1.App, { children: (0, jsx_runtime_1.jsx)(routing_1.Switch, { children: Object.entries(views_1.default).map(function (_a) {
|
|
44
42
|
var _b, _c;
|
|
45
43
|
var name = _a[0], Component = _a[1];
|
|
46
44
|
return ((0, jsx_runtime_1.jsx)(routing_1.Route, __assign({ match: function (route) { var _a; return ((_a = route.data) === null || _a === void 0 ? void 0 : _a.view) === name; } }, { children: (0, jsx_runtime_1.jsx)(Component, __assign({}, (_c = (_b = route.data) === null || _b === void 0 ? void 0 : _b.viewData) === null || _c === void 0 ? void 0 : _c.data), void 0) }), name));
|
|
47
45
|
}) }, void 0) }, void 0)] }, void 0));
|
|
48
46
|
}
|
|
49
47
|
exports.default = Root;
|
|
50
|
-
function DevUILoader() {
|
|
51
|
-
var _a = (0, usePersistState_1.usePersistState)("enable_devui", process.dev || (typeof window !== "undefined" && window["ENABLE_DEV_UI"])), render = _a[0], setRender = _a[1];
|
|
52
|
-
(0, react_1.useEffect)(function () {
|
|
53
|
-
if (document.location.search.includes("activate-dev-ui")) {
|
|
54
|
-
setRender(true);
|
|
55
|
-
}
|
|
56
|
-
}, []);
|
|
57
|
-
if (render) {
|
|
58
|
-
return (0, jsx_runtime_1.jsx)(DevUI, {}, void 0);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eddev",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.19",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@types/url-parse": "^1.4.4",
|
|
28
28
|
"@types/webpack-dev-server": "^3.11.2",
|
|
29
29
|
"csstype": "^3.0.9",
|
|
30
|
-
"next": "^12.0
|
|
30
|
+
"next": "^12.1.0",
|
|
31
31
|
"react-html-props": "^1.0.32"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
"@soda/friendly-errors-webpack-plugin": "^1.8.0",
|
|
51
51
|
"@stitches/core": "^1.2.6",
|
|
52
52
|
"@stitches/react": "^1.2.6",
|
|
53
|
+
"@trpc/client": "^9.19.0",
|
|
54
|
+
"@trpc/next": "^9.19.0",
|
|
55
|
+
"@trpc/react": "^9.19.0",
|
|
56
|
+
"@trpc/server": "^9.19.0",
|
|
53
57
|
"autoprefixer": "^10.3.4",
|
|
54
58
|
"babel-loader": "^8.2.2",
|
|
55
59
|
"chalk": "^4.1.2",
|
|
@@ -77,6 +81,7 @@
|
|
|
77
81
|
"react-error-overlay": "^6.0.9",
|
|
78
82
|
"react-inspector": "^5.1.1",
|
|
79
83
|
"react-merge-refs": "^1.1.0",
|
|
84
|
+
"react-query": "^3.34.16",
|
|
80
85
|
"react-refresh": "^0.10.0",
|
|
81
86
|
"rimraf": "^3.0.2",
|
|
82
87
|
"swr": "^1.0.1",
|
|
@@ -93,6 +98,10 @@
|
|
|
93
98
|
"zustand": "^3.5.10"
|
|
94
99
|
},
|
|
95
100
|
"peerDependencies": {
|
|
101
|
+
"@trpc/client": "^9.19.0",
|
|
102
|
+
"@trpc/next": "^9.19.0",
|
|
103
|
+
"@trpc/react": "^9.19.0",
|
|
104
|
+
"@trpc/server": "^9.19.0",
|
|
96
105
|
"react": "^18.0.0-rc.0",
|
|
97
106
|
"react-dom": "^18.0.0-rc.0"
|
|
98
107
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
export declare function createRPCClient(): {
|
|
3
3
|
Provider: ({ client, queryClient, children, isPrepass, ssrContext, }: {
|
|
4
|
-
queryClient: QueryClient;
|
|
4
|
+
queryClient: import("react-query").QueryClient;
|
|
5
5
|
client: import("@trpc/react").TRPCClient<import("@trpc/server").AnyRouter<any>>;
|
|
6
6
|
children: import("react").ReactNode;
|
|
7
7
|
isPrepass?: boolean | undefined;
|
|
@@ -9,25 +9,13 @@ export declare function createRPCClient(): {
|
|
|
9
9
|
}) => JSX.Element;
|
|
10
10
|
createClient: (opts: import("@trpc/react").CreateTRPCClientOptions<import("@trpc/server").AnyRouter<any>>) => import("@trpc/react").TRPCClient<import("@trpc/server").AnyRouter<any>>;
|
|
11
11
|
useContext: () => import("@trpc/react/dist/declarations/src/internals/context").TRPCContextState<import("@trpc/server").AnyRouter<any>, unknown>;
|
|
12
|
-
useQuery: <TPath extends string>(pathAndInput: [TPath, (null | undefined)?], opts?: import("@trpc/react").UseTRPCQueryOptions<TPath, unknown, any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>> | undefined) => UseQueryResult<
|
|
13
|
-
|
|
14
|
-
output: import("@trpc/server").ThenArg<ReturnType<TRouter["_def"]["queries"][TPath_1]["call"]>>;
|
|
15
|
-
}; }[TPath_2]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>>;
|
|
16
|
-
useMutation: <TPath_1 extends string>(path: TPath_1 | [TPath_1], opts?: import("@trpc/react").UseTRPCMutationOptions<unknown, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>, any> | undefined) => UseMutationResult<{ [TPath_3 in keyof TRouter["_def"]["mutations"]]: {
|
|
17
|
-
input: import("@trpc/server").inferProcedureInput<TRouter["_def"]["mutations"][TPath_3]>;
|
|
18
|
-
output: import("@trpc/server").ThenArg<ReturnType<TRouter["_def"]["mutations"][TPath_3]["call"]>>;
|
|
19
|
-
}; }[TPath_1_1]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>, { [TPath_3 in keyof TRouter["_def"]["mutations"]]: {
|
|
20
|
-
input: import("@trpc/server").inferProcedureInput<TRouter["_def"]["mutations"][TPath_3]>;
|
|
21
|
-
output: import("@trpc/server").ThenArg<ReturnType<TRouter["_def"]["mutations"][TPath_3]["call"]>>;
|
|
22
|
-
}; }[TPath_1_1]["input"], unknown>;
|
|
12
|
+
useQuery: <TPath extends string>(pathAndInput: [TPath, (null | undefined)?], opts?: import("@trpc/react").UseTRPCQueryOptions<TPath, unknown, any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>> | undefined) => import("react-query").UseQueryResult<any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>>;
|
|
13
|
+
useMutation: <TPath_1 extends string>(path: TPath_1 | [TPath_1], opts?: import("@trpc/react").UseTRPCMutationOptions<unknown, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>, any> | undefined) => import("react-query").UseMutationResult<any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>, unknown, unknown>;
|
|
23
14
|
useSubscription: <TPath_2 extends string, TOutput extends any>(pathAndInput: [TPath_2, (null | undefined)?], opts: {
|
|
24
15
|
enabled?: boolean | undefined;
|
|
25
16
|
onError?: ((err: import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>) => void) | undefined;
|
|
26
17
|
onNext: (data: TOutput) => void;
|
|
27
18
|
}) => void;
|
|
28
|
-
useDehydratedState: (client: import("@trpc/react").TRPCClient<import("@trpc/server").AnyRouter<any>>, trpcState:
|
|
29
|
-
useInfiniteQuery: <TPath_3 extends never>(pathAndInput: [path: TPath_3, input: Omit<unknown, "cursor">], opts?: import("@trpc/react").UseTRPCInfiniteQueryOptions<TPath_3, Omit<unknown, "cursor">, any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>> | undefined) => UseInfiniteQueryResult<
|
|
30
|
-
input: import("@trpc/server").inferProcedureInput<TRouter["_def"]["queries"][TPath_1]>;
|
|
31
|
-
output: import("@trpc/server").ThenArg<ReturnType<TRouter["_def"]["queries"][TPath_1]["call"]>>;
|
|
32
|
-
}; }[TPath_3_1]["output"], import("@trpc/react").TRPCClientErrorLike<TRouter>>;
|
|
19
|
+
useDehydratedState: (client: import("@trpc/react").TRPCClient<import("@trpc/server").AnyRouter<any>>, trpcState: import("react-query").DehydratedState | undefined) => import("react-query").DehydratedState | undefined;
|
|
20
|
+
useInfiniteQuery: <TPath_3 extends never>(pathAndInput: [path: TPath_3, input: Omit<unknown, "cursor">], opts?: import("@trpc/react").UseTRPCInfiniteQueryOptions<TPath_3, Omit<unknown, "cursor">, any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>> | undefined) => import("react-query").UseInfiniteQueryResult<any, import("@trpc/react").TRPCClientErrorLike<import("@trpc/server").AnyRouter<any>>>;
|
|
33
21
|
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ParsedRouteTags } from "eddev/routing/remoteProps"
|
|
2
|
+
import Head from "next/head"
|
|
3
|
+
import { Fragment } from "react"
|
|
4
|
+
|
|
5
|
+
type Props = ParsedRouteTags
|
|
6
|
+
|
|
7
|
+
export function PageMeta(props: Props) {
|
|
8
|
+
return (
|
|
9
|
+
<Head>
|
|
10
|
+
{props.title?.map((tag, i) => (
|
|
11
|
+
<title key={"title" + i}>{tag.__code}</title>
|
|
12
|
+
))}
|
|
13
|
+
{props.style?.map((tag, i) => {
|
|
14
|
+
return (
|
|
15
|
+
<style
|
|
16
|
+
key={"style" + i}
|
|
17
|
+
className={tag["class"]}
|
|
18
|
+
type={tag.type}
|
|
19
|
+
id={tag.id}
|
|
20
|
+
dangerouslySetInnerHTML={{ __html: tag.__code }}
|
|
21
|
+
/>
|
|
22
|
+
)
|
|
23
|
+
})}
|
|
24
|
+
{props.script?.map((tag, i) => {
|
|
25
|
+
return (
|
|
26
|
+
<script
|
|
27
|
+
key={"script" + i}
|
|
28
|
+
className={tag["class"]}
|
|
29
|
+
type={tag.type}
|
|
30
|
+
id={tag.id}
|
|
31
|
+
dangerouslySetInnerHTML={{ __html: tag.__code }}
|
|
32
|
+
/>
|
|
33
|
+
)
|
|
34
|
+
})}
|
|
35
|
+
{props.meta?.map((tag, i) => {
|
|
36
|
+
return <meta key={"meta" + i} {...tag} />
|
|
37
|
+
})}
|
|
38
|
+
{props.link?.map((tag, i) => {
|
|
39
|
+
return <link key={"link" + i} {...tag} />
|
|
40
|
+
})}
|
|
41
|
+
</Head>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import config from "./ed-config"
|
|
2
|
+
import { fetchWP } from "./fetch-wp"
|
|
2
3
|
|
|
3
4
|
const settings = config.serverless
|
|
4
5
|
|
|
5
6
|
export async function fetchWordpressProps(pathname: string) {
|
|
7
|
+
// Determine the URL for fetching
|
|
6
8
|
const origin = (process.env.SITE_URL as string).replace(/\/$/, "")
|
|
7
9
|
pathname = pathname.replace(/(^\/|\/$)/g, "")
|
|
8
10
|
const propsURL = origin + ("/" + pathname + "/?_props=all").replace(/\/+/, "/")
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
console.log("Fetching props", propsURL)
|
|
13
|
+
|
|
14
|
+
// Make the request
|
|
15
|
+
let response = await fetchWP(propsURL, {})
|
|
16
|
+
|
|
17
|
+
// Convert to text, rather than JSON — so we can do find-and-replace
|
|
11
18
|
let text = await response.text()
|
|
12
19
|
|
|
13
20
|
// Convert absolute site URL details to relative paths
|
|
14
21
|
text = text.replace(new RegExp(origin.replace(/(http|https)/, `https?`) + "([a-z0-9-_./]+)", "g"), (url) => {
|
|
15
|
-
const path = url.replace(/https?:\/\/[
|
|
22
|
+
const path = url.replace(/https?:\/\/[^\/]+/, "")
|
|
16
23
|
if (path.startsWith("/wp-content/uploads/")) {
|
|
17
24
|
if (settings?.uploads === "proxy") {
|
|
18
25
|
return path
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Agent } from "https"
|
|
2
|
+
|
|
3
|
+
// Used to allow self-signed certificates
|
|
4
|
+
const agent = new Agent({
|
|
5
|
+
rejectUnauthorized: false,
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
export const fetchWP: typeof fetch = async (url, opts) => {
|
|
9
|
+
// TODO — basic auth via env variable
|
|
10
|
+
// https://stackoverflow.com/questions/43842793/basic-authentication-with-fetch
|
|
11
|
+
return fetch(url, {
|
|
12
|
+
...opts,
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
agent: url.includes("https") ? agent : undefined,
|
|
15
|
+
})
|
|
16
|
+
}
|
|
@@ -55,6 +55,8 @@ module.exports = (() => {
|
|
|
55
55
|
|
|
56
56
|
define.definitions["process.env.themePath"] = JSON.stringify(themePath)
|
|
57
57
|
define.definitions["process.themePath"] = JSON.stringify(themePath)
|
|
58
|
+
define.definitions["process.devUI"] = settings.devUI === "enabled"
|
|
59
|
+
define.definitions["process.serverlessEndpoint"] = JSON.stringify("/")
|
|
58
60
|
// config.plugins.push(
|
|
59
61
|
// new DefinePlugin({
|
|
60
62
|
// "process.serverless": "true",
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"start": "next start"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"next": "12.0.10",
|
|
12
11
|
"react": "17.0.2",
|
|
13
12
|
"react-dom": "17.0.2"
|
|
14
13
|
},
|
|
15
14
|
"devDependencies": {
|
|
16
15
|
"@types/react": "17.0.39",
|
|
17
|
-
"typescript": "4.5.5"
|
|
16
|
+
"typescript": "4.5.5",
|
|
17
|
+
"next": "^12.1.0"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -5,6 +5,8 @@ import { NextRouter } from "eddev/components/NextRouter"
|
|
|
5
5
|
import { ServerlessAppDataProvider } from "eddev/utils/serverlessAppContext"
|
|
6
6
|
import { useMemo } from "react"
|
|
7
7
|
import { useRouter } from "next/router"
|
|
8
|
+
import { DevUILoader } from "eddev/dev-ui/loader"
|
|
9
|
+
import { PageMeta } from "../_utils/PageMeta"
|
|
8
10
|
|
|
9
11
|
function MyApp({ Component, pageProps }: AppProps) {
|
|
10
12
|
if (!pageProps.appData) return <div />
|
|
@@ -22,6 +24,9 @@ function MyApp({ Component, pageProps }: AppProps) {
|
|
|
22
24
|
return (
|
|
23
25
|
<ServerlessAppDataProvider value={appData}>
|
|
24
26
|
<NextRouter data={pageProps} path={route.pathname}>
|
|
27
|
+
{pageProps?.meta?.head && <PageMeta {...pageProps?.meta?.head} />}
|
|
28
|
+
{pageProps?.meta?.footer && <PageMeta {...pageProps?.meta?.footer} />}
|
|
29
|
+
{process.devUI && <DevUILoader />}
|
|
25
30
|
<App>
|
|
26
31
|
<View {...viewProps} />
|
|
27
32
|
</App>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function updateEnvFile(data: Record<string, string | number>, directory?: string): Promise<void>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.updateEnvFile = void 0;
|
|
40
|
+
var fs_1 = require("fs");
|
|
41
|
+
var promises_1 = require("fs/promises");
|
|
42
|
+
var path_1 = require("path");
|
|
43
|
+
function updateEnvFile(data, directory) {
|
|
44
|
+
if (directory === void 0) { directory = process.cwd(); }
|
|
45
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
46
|
+
var path, contents, lines, key;
|
|
47
|
+
return __generator(this, function (_a) {
|
|
48
|
+
switch (_a.label) {
|
|
49
|
+
case 0:
|
|
50
|
+
path = (0, path_1.join)(directory, ".env");
|
|
51
|
+
if (!(0, fs_1.existsSync)(path)) return [3 /*break*/, 3];
|
|
52
|
+
return [4 /*yield*/, (0, promises_1.readFile)(path, "utf8")];
|
|
53
|
+
case 1:
|
|
54
|
+
contents = (_a.sent()).toString();
|
|
55
|
+
lines = contents.split(/\n/g);
|
|
56
|
+
lines = lines.filter(function (line) {
|
|
57
|
+
for (var key in data) {
|
|
58
|
+
if (line.startsWith("".concat(key, "="))) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
});
|
|
64
|
+
for (key in data) {
|
|
65
|
+
lines.push("".concat(key, "=").concat(data[key]));
|
|
66
|
+
}
|
|
67
|
+
return [4 /*yield*/, (0, promises_1.writeFile)(path, lines.join("\n"))];
|
|
68
|
+
case 2:
|
|
69
|
+
_a.sent();
|
|
70
|
+
_a.label = 3;
|
|
71
|
+
case 3: return [2 /*return*/];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
exports.updateEnvFile = updateEnvFile;
|