@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.
Files changed (141) hide show
  1. package/README.md +49 -11
  2. package/admin-dist/apple-touch-icon.png +0 -0
  3. package/admin-dist/assets/abap-08VXUWAP.js +1 -0
  4. package/admin-dist/assets/admin-BifGpl6Y.css +1 -0
  5. package/admin-dist/assets/admin-CrL6Xc9b.js +1 -0
  6. package/admin-dist/assets/admin-ZWBL0q2y.css +1 -0
  7. package/admin-dist/assets/admin-bamoE2Tn.js +1 -0
  8. package/admin-dist/assets/apex-BWPQTe0t.js +1 -0
  9. package/admin-dist/assets/azcli-Bc_sGQ0U.js +1 -0
  10. package/admin-dist/assets/bat-i0X4ZdIN.js +1 -0
  11. package/admin-dist/assets/bicep-B5-_aFwp.js +2 -0
  12. package/admin-dist/assets/cameligo-DMUM7wLl.js +1 -0
  13. package/admin-dist/assets/clojure-Cm7r79vr.js +1 -0
  14. package/admin-dist/assets/codicon-DCmgc-ay.ttf +0 -0
  15. package/admin-dist/assets/coffee-Ba7i2nA0.js +1 -0
  16. package/admin-dist/assets/cpp-C7h46wYY.js +1 -0
  17. package/admin-dist/assets/csharp-BKxtCVv1.js +1 -0
  18. package/admin-dist/assets/csp-bTuwJoIa.js +1 -0
  19. package/admin-dist/assets/css-DIMkf-bt.js +3 -0
  20. package/admin-dist/assets/cssMode-J2cfgFkq.js +4 -0
  21. package/admin-dist/assets/cypher-CVaqCwHa.js +1 -0
  22. package/admin-dist/assets/dart-onAF5SnQ.js +1 -0
  23. package/admin-dist/assets/dashicons-DDlWl2tg.eot +0 -0
  24. package/admin-dist/assets/dashicons-MbROV69l.ttf +0 -0
  25. package/admin-dist/assets/dockerfile-DZFCIeNp.js +1 -0
  26. package/admin-dist/assets/ecl-D05T4iGw.js +1 -0
  27. package/admin-dist/assets/elixir-6RTg0lbw.js +1 -0
  28. package/admin-dist/assets/flow9-C5_-GSwl.js +1 -0
  29. package/admin-dist/assets/freemarker2-L_gr_Wq4.js +3 -0
  30. package/admin-dist/assets/fsharp-C8Ef5oNN.js +1 -0
  31. package/admin-dist/assets/github-dark.min-Z5exjX_n.css +1 -0
  32. package/admin-dist/assets/github.min-D2BCvnWf.css +1 -0
  33. package/admin-dist/assets/go-C-y9NEjX.js +1 -0
  34. package/admin-dist/assets/graphql-fmXr3nnJ.js +1 -0
  35. package/admin-dist/assets/handlebars-D81kzUDC.js +1 -0
  36. package/admin-dist/assets/hcl-CpzslTdj.js +1 -0
  37. package/admin-dist/assets/html-Cung-Yr0.js +1 -0
  38. package/admin-dist/assets/htmlMode-C6QemWl2.js +4 -0
  39. package/admin-dist/assets/index-BNrD3O4x.css +1 -0
  40. package/admin-dist/assets/index-DXTkTQ21.js +1184 -0
  41. package/admin-dist/assets/ini-sBoK_t0W.js +1 -0
  42. package/admin-dist/assets/java-BEtHBSE6.js +1 -0
  43. package/admin-dist/assets/javascript-WUcGtCKt.js +1 -0
  44. package/admin-dist/assets/jsonMode-Dp0R9P1F.js +10 -0
  45. package/admin-dist/assets/julia-Bri6UV-V.js +1 -0
  46. package/admin-dist/assets/kotlin-B0qVs-E9.js +1 -0
  47. package/admin-dist/assets/less-B9JPFI3C.js +2 -0
  48. package/admin-dist/assets/lexon-CfSJPG6W.js +1 -0
  49. package/admin-dist/assets/liquid-OFb9c-6B.js +1 -0
  50. package/admin-dist/assets/lua-CsQS60Ue.js +1 -0
  51. package/admin-dist/assets/m3-D-oSqn_W.js +1 -0
  52. package/admin-dist/assets/markdown-Cimd5fb3.js +1 -0
  53. package/admin-dist/assets/mdx-CUfjLxA3.js +1 -0
  54. package/admin-dist/assets/mips-CIPQ_RoX.js +1 -0
  55. package/admin-dist/assets/msdax-DauUninz.js +1 -0
  56. package/admin-dist/assets/mysql-SOo6toE5.js +1 -0
  57. package/admin-dist/assets/objective-c-FvmIjYaQ.js +1 -0
  58. package/admin-dist/assets/pascal-DrH0SRf2.js +1 -0
  59. package/admin-dist/assets/pascaligo-D-ptJ9y-.js +1 -0
  60. package/admin-dist/assets/perl-oz_6vUea.js +1 -0
  61. package/admin-dist/assets/pgsql-DTj74zXo.js +1 -0
  62. package/admin-dist/assets/php-nr791fC2.js +1 -0
  63. package/admin-dist/assets/pla-CopQ2nXW.js +1 -0
  64. package/admin-dist/assets/postiats-43DmfD33.js +1 -0
  65. package/admin-dist/assets/powerquery-D3hlyOfw.js +1 -0
  66. package/admin-dist/assets/powershell-DmHpPYUd.js +1 -0
  67. package/admin-dist/assets/protobuf-C531GsRP.js +2 -0
  68. package/admin-dist/assets/pug-Z5eAx3Zn.js +1 -0
  69. package/admin-dist/assets/python-zxEYY77U.js +1 -0
  70. package/admin-dist/assets/qsharp-DkqhCAOL.js +1 -0
  71. package/admin-dist/assets/r-BwWrilGY.js +1 -0
  72. package/admin-dist/assets/razor-DJrSr4ly.js +1 -0
  73. package/admin-dist/assets/redis-ClamHrr6.js +1 -0
  74. package/admin-dist/assets/redshift-DT7zqm-g.js +1 -0
  75. package/admin-dist/assets/restructuredtext-BYgofb2h.js +1 -0
  76. package/admin-dist/assets/rolldown-runtime-Cyuzqnbw.js +1 -0
  77. package/admin-dist/assets/ruby-DezsRK8O.js +1 -0
  78. package/admin-dist/assets/rust-DdL9SqIa.js +1 -0
  79. package/admin-dist/assets/sb-CcwsVR0C.js +1 -0
  80. package/admin-dist/assets/scala-DHpiXF5c.js +1 -0
  81. package/admin-dist/assets/scheme-BeGwcela.js +1 -0
  82. package/admin-dist/assets/scss-gp-XZpBa.js +3 -0
  83. package/admin-dist/assets/shell-CC2rA5mh.js +1 -0
  84. package/admin-dist/assets/solidity-BEEn4gHE.js +1 -0
  85. package/admin-dist/assets/sophia-CRfGWb83.js +1 -0
  86. package/admin-dist/assets/sparql-D_Lu-MrJ.js +1 -0
  87. package/admin-dist/assets/sql-NEE52Syq.js +1 -0
  88. package/admin-dist/assets/st-DbInun42.js +1 -0
  89. package/admin-dist/assets/swift-Bxkupp3x.js +1 -0
  90. package/admin-dist/assets/systemverilog-Bz4Y3fRF.js +1 -0
  91. package/admin-dist/assets/tcl-DISqw1ZD.js +1 -0
  92. package/admin-dist/assets/tsMode-Dtxx1cRn.js +11 -0
  93. package/admin-dist/assets/twig-De2hgUGE.js +1 -0
  94. package/admin-dist/assets/typescript-DT11gl4K.js +1 -0
  95. package/admin-dist/assets/typespec-B8J7ngcE.js +1 -0
  96. package/admin-dist/assets/vb-DV3o63ZY.js +1 -0
  97. package/admin-dist/assets/vendor-antd-854Wnkhp.js +334 -0
  98. package/admin-dist/assets/vendor-tanstack-CUgEbs6-.js +1 -0
  99. package/admin-dist/assets/vendor-ui-BosneugM.js +1 -0
  100. package/admin-dist/assets/wgsl-DpFanUEy.js +298 -0
  101. package/admin-dist/assets/xml-BIbLvdwx.js +1 -0
  102. package/admin-dist/assets/yaml-BEeUZskE.js +1 -0
  103. package/admin-dist/favicon-16.png +0 -0
  104. package/admin-dist/favicon-32.png +0 -0
  105. package/admin-dist/favicon-48.png +0 -0
  106. package/admin-dist/favicon.ico +0 -0
  107. package/admin-dist/favicon.png +0 -0
  108. package/admin-dist/icon-192.png +0 -0
  109. package/admin-dist/icon-512.png +0 -0
  110. package/admin-dist/index.html +26 -0
  111. package/admin-dist/logo-200.png +0 -0
  112. package/admin-dist/logo-400.png +0 -0
  113. package/admin-dist/logo-wordmark.svg +10 -0
  114. package/admin-dist/logo.png +0 -0
  115. package/admin-dist/logo.svg +7 -0
  116. package/admin-dist/mockServiceWorker.js +336 -0
  117. package/admin-dist/showcase/undraw_around_the_world.svg +1 -0
  118. package/admin-dist/showcase/undraw_docusaurus_mountain.svg +54 -0
  119. package/admin-dist/showcase/undraw_docusaurus_react.svg +51 -0
  120. package/admin-dist/showcase/undraw_docusaurus_tree.svg +40 -0
  121. package/admin-dist/showcase/undraw_react.svg +1 -0
  122. package/admin-dist/showcase/undraw_typewriter.svg +1 -0
  123. package/admin-dist/showcase/undraw_version_control.svg +1 -0
  124. package/out/bin/reactpress-theme-client.js +97 -64
  125. package/out/bin/reactpress.js +50 -29
  126. package/out/core/services/admin-static.js +136 -0
  127. package/out/core/services/local-site.js +3 -2
  128. package/out/lib/client-lifecycle.js +88 -0
  129. package/out/lib/i18n/strings.js +56 -14
  130. package/out/lib/lifecycle.js +96 -41
  131. package/out/lib/paths.js +4 -0
  132. package/out/lib/pm2-runtime.js +95 -0
  133. package/out/lib/process.js +25 -5
  134. package/out/lib/project-logs.js +1 -1
  135. package/out/lib/publish.js +3 -3
  136. package/out/lib/theme-api-proxy-patch.js +58 -0
  137. package/out/lib/theme-install.js +2 -0
  138. package/package.json +19 -3
  139. package/server/package-lock.json +5 -5
  140. package/server/package.json +18 -7
  141. 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
@@ -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 readPid(projectRoot) {
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 writePid(projectRoot, pid) {
36
- const pidFile = getPidFile(projectRoot);
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
@@ -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('doctor.logs.title'), [palette.primary, palette.accent], { bold: true })} ${brand.dim(t('doctor.logs.subtitle'))}`);
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);
@@ -16,12 +16,12 @@ const CORE_PUBLISH_PACKAGES = [
16
16
  {
17
17
  name: '@fecommunity/reactpress-toolkit',
18
18
  path: 'toolkit',
19
- description: 'API client and utilities toolkit',
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 static assets and Node static server helpers',
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: t('publish.pkg.main'),
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
@@ -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.12",
4
- "description": "ReactPress 4 — zero-dependency publishing platform. Commands: reactpress init, reactpress doctor",
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
- "cli"
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",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@fecommunity/reactpress-server",
3
- "version": "4.0.0-beta.12",
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.12",
10
- "deprecated": "Use the built-in API in @fecommunity/reactpress (CLI). Standalone server publishing stopped from 3.1.",
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": ">=16.5.0"
89
+ "node": ">=18"
90
90
  }
91
91
  },
92
92
  "../toolkit": {
93
93
  "name": "@fecommunity/reactpress-toolkit",
94
- "version": "4.0.0-beta.12",
94
+ "version": "4.0.0-beta.14",
95
95
  "dependencies": {
96
96
  "ajv": "^8.17.1",
97
97
  "axios": "^1.12.2",
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "@fecommunity/reactpress-server",
3
- "version": "4.0.0-beta.12",
4
- "deprecated": "Use the built-in API in @fecommunity/reactpress (CLI). Standalone server publishing stopped from 3.1.",
5
- "description": "ReactPress NestJS CMS API — headless REST for the publishing platform (MySQL or SQLite)",
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
- "typescript"
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": ">=16.5.0"
46
+ "node": ">=18"
36
47
  },
37
48
  "scripts": {
38
49
  "clean": "rimraf dist",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fecommunity/reactpress-toolkit",
3
- "version": "4.0.0-beta.12",
3
+ "version": "4.0.0-beta.14",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {