@fecommunity/reactpress 4.0.0-beta.12 → 4.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -11
- package/admin-dist/apple-touch-icon.png +0 -0
- package/admin-dist/assets/abap-08VXUWAP.js +1 -0
- package/admin-dist/assets/admin-BifGpl6Y.css +1 -0
- package/admin-dist/assets/admin-CrL6Xc9b.js +1 -0
- package/admin-dist/assets/admin-ZWBL0q2y.css +1 -0
- package/admin-dist/assets/admin-bamoE2Tn.js +1 -0
- package/admin-dist/assets/apex-BWPQTe0t.js +1 -0
- package/admin-dist/assets/azcli-Bc_sGQ0U.js +1 -0
- package/admin-dist/assets/bat-i0X4ZdIN.js +1 -0
- package/admin-dist/assets/bicep-B5-_aFwp.js +2 -0
- package/admin-dist/assets/cameligo-DMUM7wLl.js +1 -0
- package/admin-dist/assets/clojure-Cm7r79vr.js +1 -0
- package/admin-dist/assets/codicon-DCmgc-ay.ttf +0 -0
- package/admin-dist/assets/coffee-Ba7i2nA0.js +1 -0
- package/admin-dist/assets/cpp-C7h46wYY.js +1 -0
- package/admin-dist/assets/csharp-BKxtCVv1.js +1 -0
- package/admin-dist/assets/csp-bTuwJoIa.js +1 -0
- package/admin-dist/assets/css-DIMkf-bt.js +3 -0
- package/admin-dist/assets/cssMode-J2cfgFkq.js +4 -0
- package/admin-dist/assets/cypher-CVaqCwHa.js +1 -0
- package/admin-dist/assets/dart-onAF5SnQ.js +1 -0
- package/admin-dist/assets/dashicons-DDlWl2tg.eot +0 -0
- package/admin-dist/assets/dashicons-MbROV69l.ttf +0 -0
- package/admin-dist/assets/dockerfile-DZFCIeNp.js +1 -0
- package/admin-dist/assets/ecl-D05T4iGw.js +1 -0
- package/admin-dist/assets/elixir-6RTg0lbw.js +1 -0
- package/admin-dist/assets/flow9-C5_-GSwl.js +1 -0
- package/admin-dist/assets/freemarker2-L_gr_Wq4.js +3 -0
- package/admin-dist/assets/fsharp-C8Ef5oNN.js +1 -0
- package/admin-dist/assets/github-dark.min-Z5exjX_n.css +1 -0
- package/admin-dist/assets/github.min-D2BCvnWf.css +1 -0
- package/admin-dist/assets/go-C-y9NEjX.js +1 -0
- package/admin-dist/assets/graphql-fmXr3nnJ.js +1 -0
- package/admin-dist/assets/handlebars-D81kzUDC.js +1 -0
- package/admin-dist/assets/hcl-CpzslTdj.js +1 -0
- package/admin-dist/assets/html-Cung-Yr0.js +1 -0
- package/admin-dist/assets/htmlMode-C6QemWl2.js +4 -0
- package/admin-dist/assets/index-BNrD3O4x.css +1 -0
- package/admin-dist/assets/index-DXTkTQ21.js +1184 -0
- package/admin-dist/assets/ini-sBoK_t0W.js +1 -0
- package/admin-dist/assets/java-BEtHBSE6.js +1 -0
- package/admin-dist/assets/javascript-WUcGtCKt.js +1 -0
- package/admin-dist/assets/jsonMode-Dp0R9P1F.js +10 -0
- package/admin-dist/assets/julia-Bri6UV-V.js +1 -0
- package/admin-dist/assets/kotlin-B0qVs-E9.js +1 -0
- package/admin-dist/assets/less-B9JPFI3C.js +2 -0
- package/admin-dist/assets/lexon-CfSJPG6W.js +1 -0
- package/admin-dist/assets/liquid-OFb9c-6B.js +1 -0
- package/admin-dist/assets/lua-CsQS60Ue.js +1 -0
- package/admin-dist/assets/m3-D-oSqn_W.js +1 -0
- package/admin-dist/assets/markdown-Cimd5fb3.js +1 -0
- package/admin-dist/assets/mdx-CUfjLxA3.js +1 -0
- package/admin-dist/assets/mips-CIPQ_RoX.js +1 -0
- package/admin-dist/assets/msdax-DauUninz.js +1 -0
- package/admin-dist/assets/mysql-SOo6toE5.js +1 -0
- package/admin-dist/assets/objective-c-FvmIjYaQ.js +1 -0
- package/admin-dist/assets/pascal-DrH0SRf2.js +1 -0
- package/admin-dist/assets/pascaligo-D-ptJ9y-.js +1 -0
- package/admin-dist/assets/perl-oz_6vUea.js +1 -0
- package/admin-dist/assets/pgsql-DTj74zXo.js +1 -0
- package/admin-dist/assets/php-nr791fC2.js +1 -0
- package/admin-dist/assets/pla-CopQ2nXW.js +1 -0
- package/admin-dist/assets/postiats-43DmfD33.js +1 -0
- package/admin-dist/assets/powerquery-D3hlyOfw.js +1 -0
- package/admin-dist/assets/powershell-DmHpPYUd.js +1 -0
- package/admin-dist/assets/protobuf-C531GsRP.js +2 -0
- package/admin-dist/assets/pug-Z5eAx3Zn.js +1 -0
- package/admin-dist/assets/python-zxEYY77U.js +1 -0
- package/admin-dist/assets/qsharp-DkqhCAOL.js +1 -0
- package/admin-dist/assets/r-BwWrilGY.js +1 -0
- package/admin-dist/assets/razor-DJrSr4ly.js +1 -0
- package/admin-dist/assets/redis-ClamHrr6.js +1 -0
- package/admin-dist/assets/redshift-DT7zqm-g.js +1 -0
- package/admin-dist/assets/restructuredtext-BYgofb2h.js +1 -0
- package/admin-dist/assets/rolldown-runtime-Cyuzqnbw.js +1 -0
- package/admin-dist/assets/ruby-DezsRK8O.js +1 -0
- package/admin-dist/assets/rust-DdL9SqIa.js +1 -0
- package/admin-dist/assets/sb-CcwsVR0C.js +1 -0
- package/admin-dist/assets/scala-DHpiXF5c.js +1 -0
- package/admin-dist/assets/scheme-BeGwcela.js +1 -0
- package/admin-dist/assets/scss-gp-XZpBa.js +3 -0
- package/admin-dist/assets/shell-CC2rA5mh.js +1 -0
- package/admin-dist/assets/solidity-BEEn4gHE.js +1 -0
- package/admin-dist/assets/sophia-CRfGWb83.js +1 -0
- package/admin-dist/assets/sparql-D_Lu-MrJ.js +1 -0
- package/admin-dist/assets/sql-NEE52Syq.js +1 -0
- package/admin-dist/assets/st-DbInun42.js +1 -0
- package/admin-dist/assets/swift-Bxkupp3x.js +1 -0
- package/admin-dist/assets/systemverilog-Bz4Y3fRF.js +1 -0
- package/admin-dist/assets/tcl-DISqw1ZD.js +1 -0
- package/admin-dist/assets/tsMode-Dtxx1cRn.js +11 -0
- package/admin-dist/assets/twig-De2hgUGE.js +1 -0
- package/admin-dist/assets/typescript-DT11gl4K.js +1 -0
- package/admin-dist/assets/typespec-B8J7ngcE.js +1 -0
- package/admin-dist/assets/vb-DV3o63ZY.js +1 -0
- package/admin-dist/assets/vendor-antd-854Wnkhp.js +334 -0
- package/admin-dist/assets/vendor-tanstack-CUgEbs6-.js +1 -0
- package/admin-dist/assets/vendor-ui-BosneugM.js +1 -0
- package/admin-dist/assets/wgsl-DpFanUEy.js +298 -0
- package/admin-dist/assets/xml-BIbLvdwx.js +1 -0
- package/admin-dist/assets/yaml-BEeUZskE.js +1 -0
- package/admin-dist/favicon-16.png +0 -0
- package/admin-dist/favicon-32.png +0 -0
- package/admin-dist/favicon-48.png +0 -0
- package/admin-dist/favicon.ico +0 -0
- package/admin-dist/favicon.png +0 -0
- package/admin-dist/icon-192.png +0 -0
- package/admin-dist/icon-512.png +0 -0
- package/admin-dist/index.html +26 -0
- package/admin-dist/logo-200.png +0 -0
- package/admin-dist/logo-400.png +0 -0
- package/admin-dist/logo-wordmark.svg +10 -0
- package/admin-dist/logo.png +0 -0
- package/admin-dist/logo.svg +7 -0
- package/admin-dist/mockServiceWorker.js +336 -0
- package/admin-dist/showcase/undraw_around_the_world.svg +1 -0
- package/admin-dist/showcase/undraw_docusaurus_mountain.svg +54 -0
- package/admin-dist/showcase/undraw_docusaurus_react.svg +51 -0
- package/admin-dist/showcase/undraw_docusaurus_tree.svg +40 -0
- package/admin-dist/showcase/undraw_react.svg +1 -0
- package/admin-dist/showcase/undraw_typewriter.svg +1 -0
- package/admin-dist/showcase/undraw_version_control.svg +1 -0
- package/out/bin/reactpress-theme-client.js +97 -64
- package/out/bin/reactpress.js +50 -29
- package/out/core/services/admin-static.js +136 -0
- package/out/core/services/local-site.js +3 -2
- package/out/lib/client-lifecycle.js +88 -0
- package/out/lib/i18n/strings.js +56 -14
- package/out/lib/lifecycle.js +96 -41
- package/out/lib/paths.js +4 -0
- package/out/lib/pm2-runtime.js +95 -0
- package/out/lib/process.js +25 -5
- package/out/lib/project-logs.js +1 -1
- package/out/lib/publish.js +3 -3
- package/out/lib/theme-api-proxy-patch.js +58 -0
- package/out/lib/theme-install.js +2 -0
- package/package.json +19 -3
- package/server/package-lock.json +5 -5
- package/server/package.json +18 -7
- package/toolkit/package.json +1 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const { spawnSync } = require('child_process');
|
|
7
|
+
const { getBundledServerDir, getServerDir } = require('./paths');
|
|
8
|
+
/** Internal PM2 app names — not exposed in user-facing CLI copy. */
|
|
9
|
+
const PM2_API_APP = 'reactpress-api';
|
|
10
|
+
const PM2_CLIENT_APP = 'reactpress-client';
|
|
11
|
+
function isPm2Disabled() {
|
|
12
|
+
return process.env.REACTPRESS_DISABLE_PM2 === '1';
|
|
13
|
+
}
|
|
14
|
+
function resolvePm2Bin(projectRoot) {
|
|
15
|
+
if (isPm2Disabled())
|
|
16
|
+
return null;
|
|
17
|
+
const candidates = [
|
|
18
|
+
path.join(getServerDir(projectRoot), 'node_modules', '.bin', 'pm2'),
|
|
19
|
+
path.join(getBundledServerDir(), 'node_modules', '.bin', 'pm2'),
|
|
20
|
+
];
|
|
21
|
+
for (const candidate of candidates) {
|
|
22
|
+
if (fs.existsSync(candidate))
|
|
23
|
+
return candidate;
|
|
24
|
+
}
|
|
25
|
+
const probe = spawnSync('pm2', ['--version'], { stdio: 'ignore', shell: process.platform === 'win32' });
|
|
26
|
+
return probe.status === 0 ? 'pm2' : null;
|
|
27
|
+
}
|
|
28
|
+
function isPm2RuntimeAvailable(projectRoot) {
|
|
29
|
+
return Boolean(resolvePm2Bin(projectRoot));
|
|
30
|
+
}
|
|
31
|
+
function runPm2(projectRoot, args, options = {}) {
|
|
32
|
+
const bin = resolvePm2Bin(projectRoot);
|
|
33
|
+
if (!bin) {
|
|
34
|
+
return { ok: false, error: 'PM2_UNAVAILABLE' };
|
|
35
|
+
}
|
|
36
|
+
const result = spawnSync(bin, args, {
|
|
37
|
+
cwd: options.cwd,
|
|
38
|
+
env: { ...process.env, ...options.env },
|
|
39
|
+
encoding: 'utf8',
|
|
40
|
+
stdio: options.stdio ?? 'pipe',
|
|
41
|
+
shell: options.shell ?? false,
|
|
42
|
+
});
|
|
43
|
+
if (result.status !== 0) {
|
|
44
|
+
const message = [result.stderr, result.stdout].filter(Boolean).join('\n').trim();
|
|
45
|
+
return { ok: false, error: message || `pm2 exited ${result.status}` };
|
|
46
|
+
}
|
|
47
|
+
return { ok: true, stdout: result.stdout ?? '' };
|
|
48
|
+
}
|
|
49
|
+
function readPm2Apps(projectRoot) {
|
|
50
|
+
const result = runPm2(projectRoot, ['jlist'], { stdio: 'pipe' });
|
|
51
|
+
if (!result.ok)
|
|
52
|
+
return [];
|
|
53
|
+
try {
|
|
54
|
+
const apps = JSON.parse(result.stdout);
|
|
55
|
+
return Array.isArray(apps) ? apps : [];
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function getPm2App(projectRoot, name) {
|
|
62
|
+
return readPm2Apps(projectRoot).find((app) => app?.name === name) ?? null;
|
|
63
|
+
}
|
|
64
|
+
function isPm2AppOnline(projectRoot, name) {
|
|
65
|
+
const app = getPm2App(projectRoot, name);
|
|
66
|
+
return app?.pm2_env?.status === 'online';
|
|
67
|
+
}
|
|
68
|
+
function getPm2AppPid(projectRoot, name) {
|
|
69
|
+
const app = getPm2App(projectRoot, name);
|
|
70
|
+
return typeof app?.pid === 'number' ? app.pid : null;
|
|
71
|
+
}
|
|
72
|
+
function stopPm2Apps(projectRoot, names) {
|
|
73
|
+
const bin = resolvePm2Bin(projectRoot);
|
|
74
|
+
if (!bin)
|
|
75
|
+
return false;
|
|
76
|
+
const targets = names.filter((name) => getPm2App(projectRoot, name));
|
|
77
|
+
if (!targets.length)
|
|
78
|
+
return false;
|
|
79
|
+
runPm2(projectRoot, ['delete', ...targets], { stdio: 'ignore' });
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
module.exports = {
|
|
83
|
+
PM2_API_APP,
|
|
84
|
+
PM2_CLIENT_APP,
|
|
85
|
+
isPm2Disabled,
|
|
86
|
+
resolvePm2Bin,
|
|
87
|
+
isPm2RuntimeAvailable,
|
|
88
|
+
runPm2,
|
|
89
|
+
readPm2Apps,
|
|
90
|
+
getPm2App,
|
|
91
|
+
isPm2AppOnline,
|
|
92
|
+
getPm2AppPid,
|
|
93
|
+
stopPm2Apps,
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=pm2-runtime.js.map
|
package/out/lib/process.js
CHANGED
|
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const fs = require('fs');
|
|
5
5
|
const path = require('path');
|
|
6
|
-
const { getPidFile } = require('./paths');
|
|
7
|
-
function
|
|
8
|
-
const pidFile = getPidFile(projectRoot);
|
|
6
|
+
const { getPidFile, getClientPidFile } = require('./paths');
|
|
7
|
+
function readPidFromFile(pidFile) {
|
|
9
8
|
try {
|
|
10
9
|
const raw = fs.readFileSync(pidFile, 'utf8').trim();
|
|
11
10
|
const pid = Number.parseInt(raw, 10);
|
|
@@ -15,6 +14,12 @@ function readPid(projectRoot) {
|
|
|
15
14
|
return null;
|
|
16
15
|
}
|
|
17
16
|
}
|
|
17
|
+
function readPid(projectRoot) {
|
|
18
|
+
return readPidFromFile(getPidFile(projectRoot));
|
|
19
|
+
}
|
|
20
|
+
function readClientPid(projectRoot) {
|
|
21
|
+
return readPidFromFile(getClientPidFile(projectRoot));
|
|
22
|
+
}
|
|
18
23
|
function isProcessRunning(pid) {
|
|
19
24
|
if (!pid)
|
|
20
25
|
return false;
|
|
@@ -32,16 +37,31 @@ function clearPidFile(projectRoot) {
|
|
|
32
37
|
fs.unlinkSync(pidFile);
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
|
-
function
|
|
36
|
-
const pidFile =
|
|
40
|
+
function clearClientPidFile(projectRoot) {
|
|
41
|
+
const pidFile = getClientPidFile(projectRoot);
|
|
42
|
+
if (fs.existsSync(pidFile)) {
|
|
43
|
+
fs.unlinkSync(pidFile);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function writePidToFile(pidFile, pid) {
|
|
37
47
|
fs.mkdirSync(path.dirname(pidFile), { recursive: true });
|
|
38
48
|
fs.writeFileSync(pidFile, String(pid));
|
|
39
49
|
}
|
|
50
|
+
function writePid(projectRoot, pid) {
|
|
51
|
+
writePidToFile(getPidFile(projectRoot), pid);
|
|
52
|
+
}
|
|
53
|
+
function writeClientPid(projectRoot, pid) {
|
|
54
|
+
writePidToFile(getClientPidFile(projectRoot), pid);
|
|
55
|
+
}
|
|
40
56
|
module.exports = {
|
|
41
57
|
readPid,
|
|
58
|
+
readClientPid,
|
|
42
59
|
isProcessRunning,
|
|
43
60
|
clearPidFile,
|
|
61
|
+
clearClientPidFile,
|
|
44
62
|
writePid,
|
|
63
|
+
writeClientPid,
|
|
45
64
|
getPidFile,
|
|
65
|
+
getClientPidFile,
|
|
46
66
|
};
|
|
47
67
|
//# sourceMappingURL=process.js.map
|
package/out/lib/project-logs.js
CHANGED
|
@@ -122,7 +122,7 @@ async function runDoctorLogs(projectRoot, options = {}) {
|
|
|
122
122
|
const files = listLogFiles(logDir, source);
|
|
123
123
|
const w = 56;
|
|
124
124
|
console.log('');
|
|
125
|
-
console.log(` ${gradientText(t('
|
|
125
|
+
console.log(` ${gradientText(t('logs.title'), [palette.primary, palette.accent], { bold: true })} ${brand.dim(t('logs.subtitle'))}`);
|
|
126
126
|
console.log(` ${brand.dim(t('doctor.project', { path: projectRoot }))}`);
|
|
127
127
|
console.log(` ${brand.dim(t('doctor.logs.dir', { path: logDir }))}`);
|
|
128
128
|
printProcessHint(projectRoot);
|
package/out/lib/publish.js
CHANGED
|
@@ -16,12 +16,12 @@ const CORE_PUBLISH_PACKAGES = [
|
|
|
16
16
|
{
|
|
17
17
|
name: '@fecommunity/reactpress-toolkit',
|
|
18
18
|
path: 'toolkit',
|
|
19
|
-
description: 'API
|
|
19
|
+
description: 'Official TypeScript SDK — API clients, theme SSR, plugin hooks',
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
name: '@fecommunity/reactpress-web',
|
|
23
23
|
path: 'web',
|
|
24
|
-
description: 'Admin SPA
|
|
24
|
+
description: 'Official Admin SPA — WordPress-style writing UI',
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
name: '@fecommunity/reactpress-server',
|
|
@@ -32,7 +32,7 @@ const CORE_PUBLISH_PACKAGES = [
|
|
|
32
32
|
{
|
|
33
33
|
name: '@fecommunity/reactpress',
|
|
34
34
|
path: 'cli',
|
|
35
|
-
description:
|
|
35
|
+
description: 'Publishing platform CLI — CMS, Admin, API, themes in one command',
|
|
36
36
|
},
|
|
37
37
|
];
|
|
38
38
|
function getWorkspaceRoot() {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const PATCH_MARKER = '.reactpress-api-proxy-patched';
|
|
7
|
+
const ROUTE_REL = path.join('app', 'api', '[[...path]]', 'route.ts');
|
|
8
|
+
/** Buggy pattern: body read before mock/proxy branch (breaks upstream proxy). */
|
|
9
|
+
const BUGGY_BLOCK = ` const keyword = new URL(request.url).searchParams.get('keyword')?.trim() ?? ''
|
|
10
|
+
const body = await readJsonBody(request)
|
|
11
|
+
|
|
12
|
+
let response: Response
|
|
13
|
+
if (isMockApiEnabled()) {
|
|
14
|
+
const mockResponse = matchMockRoute(request.method, path, { keyword, body })`;
|
|
15
|
+
const FIXED_BLOCK = ` const keyword = new URL(request.url).searchParams.get('keyword')?.trim() ?? ''
|
|
16
|
+
|
|
17
|
+
let response: Response
|
|
18
|
+
if (isMockApiEnabled()) {
|
|
19
|
+
const body = await readJsonBody(request)
|
|
20
|
+
const mockResponse = matchMockRoute(request.method, path, { keyword, body })`;
|
|
21
|
+
function resolveApiRoutePath(themeDir) {
|
|
22
|
+
if (!themeDir)
|
|
23
|
+
return null;
|
|
24
|
+
const routePath = path.join(themeDir, ROUTE_REL);
|
|
25
|
+
return fs.existsSync(routePath) ? routePath : null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* App Router themes proxy /api via app/api/[[...path]]/route.ts.
|
|
29
|
+
* Older theme-starter builds read the request body before the mock branch,
|
|
30
|
+
* which leaves nothing for proxyToUpstreamApi() in production.
|
|
31
|
+
*/
|
|
32
|
+
function patchThemeApiProxyRoute(themeDir) {
|
|
33
|
+
const routePath = resolveApiRoutePath(themeDir);
|
|
34
|
+
if (!routePath)
|
|
35
|
+
return false;
|
|
36
|
+
const markerPath = path.join(themeDir, PATCH_MARKER);
|
|
37
|
+
let src = fs.readFileSync(routePath, 'utf8');
|
|
38
|
+
if (src.includes(FIXED_BLOCK)) {
|
|
39
|
+
if (!fs.existsSync(markerPath)) {
|
|
40
|
+
fs.writeFileSync(markerPath, `${new Date().toISOString()}\n`, 'utf8');
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (!src.includes(BUGGY_BLOCK)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
src = src.replace(BUGGY_BLOCK, FIXED_BLOCK);
|
|
48
|
+
fs.writeFileSync(routePath, src, 'utf8');
|
|
49
|
+
fs.writeFileSync(markerPath, `${new Date().toISOString()}\n`, 'utf8');
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
module.exports = {
|
|
53
|
+
PATCH_MARKER,
|
|
54
|
+
ROUTE_REL,
|
|
55
|
+
patchThemeApiProxyRoute,
|
|
56
|
+
resolveApiRoutePath,
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=theme-api-proxy-patch.js.map
|
package/out/lib/theme-install.js
CHANGED
|
@@ -9,6 +9,7 @@ const { spawnSync } = require('child_process');
|
|
|
9
9
|
const { upsertNpmThemeLock } = require('./theme-lock');
|
|
10
10
|
const { buildThemeEnvOverrides, syncThemeEnvFromProject } = require('./theme-env');
|
|
11
11
|
const { ensurePreviewFrameAllowed } = require('./theme-preview-frame');
|
|
12
|
+
const { patchThemeApiProxyRoute } = require('./theme-api-proxy-patch');
|
|
12
13
|
const { resolveCatalogInstallSpec } = require('./theme-registry');
|
|
13
14
|
const THEME_ID_RE = /^[a-z0-9][a-z0-9-]*$/i;
|
|
14
15
|
const THEME_RUNTIME_REL = path.join('.reactpress', 'runtime');
|
|
@@ -332,6 +333,7 @@ async function installThemeFromNpm(projectRoot, spec, options = {}) {
|
|
|
332
333
|
syncThemeEnvFromProject(root, targetDir);
|
|
333
334
|
}
|
|
334
335
|
ensurePreviewFrameAllowed(targetDir);
|
|
336
|
+
patchThemeApiProxyRoute(targetDir);
|
|
335
337
|
const npmSpec = parsed.kind === 'npm' ? parsed.spec : resolvedSpec;
|
|
336
338
|
upsertNpmThemeLock(root, themeId, {
|
|
337
339
|
spec: npmSpec,
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fecommunity/reactpress",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
4
|
-
"description": "ReactPress
|
|
3
|
+
"version": "4.0.0-beta.14",
|
|
4
|
+
"description": "ReactPress CLI — publishing platform for modern developers. CMS, Admin, API, and Next.js themes in one command. Self-hosted, MIT. `npx @fecommunity/reactpress init`",
|
|
5
5
|
"author": "fecommunity",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"homepage": "https://reactpress-docs.vercel.app/",
|
|
8
|
+
"bugs": {
|
|
9
|
+
"url": "https://github.com/fecommunity/reactpress/issues"
|
|
10
|
+
},
|
|
7
11
|
"repository": {
|
|
8
12
|
"type": "git",
|
|
9
13
|
"url": "git+https://github.com/fecommunity/reactpress.git",
|
|
@@ -13,7 +17,18 @@
|
|
|
13
17
|
"reactpress",
|
|
14
18
|
"cms",
|
|
15
19
|
"blog",
|
|
16
|
-
"
|
|
20
|
+
"blog-platform",
|
|
21
|
+
"cli",
|
|
22
|
+
"headless-cms",
|
|
23
|
+
"publishing-platform",
|
|
24
|
+
"wordpress-alternative",
|
|
25
|
+
"self-hosted",
|
|
26
|
+
"sqlite",
|
|
27
|
+
"nestjs",
|
|
28
|
+
"nextjs",
|
|
29
|
+
"content-management",
|
|
30
|
+
"typescript",
|
|
31
|
+
"open-source"
|
|
17
32
|
],
|
|
18
33
|
"engines": {
|
|
19
34
|
"node": ">=18"
|
|
@@ -29,6 +44,7 @@
|
|
|
29
44
|
"dist",
|
|
30
45
|
"server",
|
|
31
46
|
"toolkit",
|
|
47
|
+
"admin-dist",
|
|
32
48
|
"templates",
|
|
33
49
|
"scripts/install-bundled-runtime.mjs",
|
|
34
50
|
"README.md",
|
package/server/package-lock.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fecommunity/reactpress-server",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.14",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@fecommunity/reactpress-server",
|
|
9
|
-
"version": "4.0.0-beta.
|
|
10
|
-
"deprecated": "
|
|
9
|
+
"version": "4.0.0-beta.14",
|
|
10
|
+
"deprecated": "Bundled in @fecommunity/reactpress CLI from v3.1. Run `npx @fecommunity/reactpress init` for new projects.",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@fecommunity/reactpress-toolkit": "file:../toolkit",
|
|
@@ -86,12 +86,12 @@
|
|
|
86
86
|
"typescript": "~4.9.5"
|
|
87
87
|
},
|
|
88
88
|
"engines": {
|
|
89
|
-
"node": ">=
|
|
89
|
+
"node": ">=18"
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
92
|
"../toolkit": {
|
|
93
93
|
"name": "@fecommunity/reactpress-toolkit",
|
|
94
|
-
"version": "4.0.0-beta.
|
|
94
|
+
"version": "4.0.0-beta.14",
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"ajv": "^8.17.1",
|
|
97
97
|
"axios": "^1.12.2",
|
package/server/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fecommunity/reactpress-server",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
4
|
-
"deprecated": "
|
|
5
|
-
"description": "ReactPress NestJS
|
|
3
|
+
"version": "4.0.0-beta.14",
|
|
4
|
+
"deprecated": "Bundled in @fecommunity/reactpress CLI from v3.1. Run `npx @fecommunity/reactpress init` for new projects.",
|
|
5
|
+
"description": "ReactPress NestJS REST API (deprecated). Bundled in @fecommunity/reactpress CLI from v3.1. Headless CMS for articles, media, plugins, and themes",
|
|
6
6
|
"author": "fecommunity",
|
|
7
7
|
"license": "MIT",
|
|
8
|
+
"homepage": "https://reactpress-docs.vercel.app/",
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/fecommunity/reactpress/issues"
|
|
11
|
+
},
|
|
8
12
|
"main": "dist/main.js",
|
|
9
|
-
"types": "dist/index.d.ts",
|
|
10
13
|
"bin": {
|
|
11
14
|
"reactpress-server": "./bin/reactpress-server.js"
|
|
12
15
|
},
|
|
@@ -19,20 +22,28 @@
|
|
|
19
22
|
],
|
|
20
23
|
"keywords": [
|
|
21
24
|
"reactpress",
|
|
22
|
-
"server",
|
|
23
25
|
"nestjs",
|
|
26
|
+
"headless-cms",
|
|
24
27
|
"cms",
|
|
25
28
|
"blog",
|
|
29
|
+
"rest-api",
|
|
26
30
|
"api",
|
|
27
|
-
"
|
|
31
|
+
"openapi",
|
|
32
|
+
"swagger",
|
|
33
|
+
"typescript",
|
|
34
|
+
"self-hosted"
|
|
28
35
|
],
|
|
29
36
|
"repository": {
|
|
30
37
|
"type": "git",
|
|
31
38
|
"url": "git+https://github.com/fecommunity/reactpress.git",
|
|
32
39
|
"directory": "server"
|
|
33
40
|
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public",
|
|
43
|
+
"registry": "https://registry.npmjs.org/"
|
|
44
|
+
},
|
|
34
45
|
"engines": {
|
|
35
|
-
"node": ">=
|
|
46
|
+
"node": ">=18"
|
|
36
47
|
},
|
|
37
48
|
"scripts": {
|
|
38
49
|
"clean": "rimraf dist",
|