cyberia 3.2.9 → 3.2.12
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/.github/workflows/engine-cyberia.cd.yml +6 -0
- package/.github/workflows/npmpkg.ci.yml +1 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +1 -0
- package/.vscode/extensions.json +9 -9
- package/.vscode/settings.json +20 -4
- package/CHANGELOG.md +213 -1
- package/CLI-HELP.md +92 -23
- package/README.md +190 -348
- package/bin/build.js +24 -8
- package/bin/build.template.js +187 -0
- package/bin/cyberia.js +229 -52
- package/bin/deploy.js +12 -2
- package/bin/index.js +229 -52
- package/bump.config.js +26 -0
- package/conf.js +130 -24
- package/deployment.yaml +4 -2
- package/hardhat/package-lock.json +113 -144
- package/hardhat/package.json +4 -3
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -2
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/dd-test-development/deployment.yaml +4 -2
- package/manifests/kind-config-dev.yaml +8 -0
- package/manifests/lxd/lxd-admin-profile.yaml +12 -3
- package/manifests/mongodb/pv-pvc.yaml +44 -8
- package/manifests/mongodb/statefulset.yaml +55 -68
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +3 -1
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/valkey/statefulset.yaml +1 -1
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/package.json +27 -15
- package/scripts/ipxe-setup.sh +52 -49
- package/scripts/k3s-node-setup.sh +81 -46
- package/scripts/lxd-vm-setup.sh +193 -8
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +16 -16
- package/src/api/core/core.router.js +19 -14
- package/src/api/core/core.service.js +5 -5
- package/src/api/crypto/crypto.router.js +18 -12
- package/src/api/crypto/crypto.service.js +3 -3
- package/src/api/cyberia-action/cyberia-action.model.js +1 -1
- package/src/api/cyberia-action/cyberia-action.router.js +22 -18
- package/src/api/cyberia-action/cyberia-action.service.js +5 -5
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +6 -6
- package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
- package/src/api/cyberia-entity/cyberia-entity.service.js +5 -5
- package/src/api/cyberia-instance/cyberia-fallback-world.js +79 -4
- package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
- package/src/api/cyberia-instance/cyberia-instance.service.js +10 -10
- package/src/api/cyberia-instance/cyberia-world-generator.js +3 -3
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +14 -48
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +5 -5
- package/src/api/cyberia-map/cyberia-map.router.js +35 -30
- package/src/api/cyberia-map/cyberia-map.service.js +7 -7
- package/src/api/cyberia-quest/cyberia-quest.model.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.router.js +22 -18
- package/src/api/cyberia-quest/cyberia-quest.service.js +5 -5
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +22 -18
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +5 -5
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
- package/src/api/default/default.router.js +22 -18
- package/src/api/default/default.service.js +5 -5
- package/src/api/document/document.router.js +28 -23
- package/src/api/document/document.service.js +100 -23
- package/src/api/file/file.router.js +19 -13
- package/src/api/file/file.service.js +9 -7
- package/src/api/instance/instance.router.js +29 -24
- package/src/api/instance/instance.service.js +6 -6
- package/src/api/ipfs/ipfs.router.js +21 -16
- package/src/api/ipfs/ipfs.service.js +8 -8
- package/src/api/object-layer/object-layer.router.js +512 -507
- package/src/api/object-layer/object-layer.service.js +17 -14
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +5 -5
- package/src/api/test/test.router.js +17 -12
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +5 -4
- package/src/api/user/user.router.js +297 -288
- package/src/api/user/user.service.js +100 -35
- package/src/cli/baremetal.js +132 -101
- package/src/cli/cluster.js +700 -232
- package/src/cli/db.js +59 -60
- package/src/cli/deploy.js +216 -137
- package/src/cli/fs.js +13 -3
- package/src/cli/index.js +80 -15
- package/src/cli/ipfs.js +4 -6
- package/src/cli/kubectl.js +4 -1
- package/src/cli/lxd.js +1099 -223
- package/src/cli/monitor.js +9 -3
- package/src/cli/release.js +334 -140
- package/src/cli/repository.js +68 -23
- package/src/cli/run.js +193 -49
- package/src/cli/secrets.js +11 -2
- package/src/cli/test.js +9 -3
- package/src/client/Default.index.js +9 -3
- package/src/client/components/core/Auth.js +5 -0
- package/src/client/components/core/ClientEvents.js +76 -0
- package/src/client/components/core/EventBus.js +4 -0
- package/src/client/components/core/Modal.js +82 -41
- package/src/client/components/core/PanelForm.js +56 -52
- package/src/client/components/core/Worker.js +162 -363
- package/src/client/components/cyberia/MapEngineCyberia.js +1 -1
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +50 -410
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +114 -327
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +200 -222
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +203 -185
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +2 -2
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
- package/src/client/sw/core.sw.js +174 -112
- package/src/db/DataBaseProvider.js +115 -15
- package/src/db/mariadb/MariaDB.js +2 -1
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +129 -21
- package/src/grpc/cyberia/grpc-server.js +25 -57
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +24 -3
- package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
- package/src/runtime/cyberia-server/Dockerfile +29 -4
- package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
- package/src/runtime/express/Express.js +2 -2
- package/src/runtime/wp/Wp.js +8 -5
- package/src/server/auth.js +2 -2
- package/src/server/client-build-docs.js +1 -1
- package/src/server/client-build.js +94 -129
- package/src/server/conf.js +86 -83
- package/src/server/process.js +180 -19
- package/src/server/proxy.js +9 -2
- package/src/server/runtime.js +1 -1
- package/src/server/start.js +17 -5
- package/src/server/valkey.js +2 -0
- package/src/ws/IoInterface.js +16 -16
- package/src/ws/core/channels/core.ws.chat.js +11 -11
- package/src/ws/core/channels/core.ws.mailer.js +29 -29
- package/src/ws/core/channels/core.ws.stream.js +19 -19
- package/src/ws/core/core.ws.connection.js +8 -8
- package/src/ws/core/core.ws.server.js +6 -5
- package/src/ws/default/channels/default.ws.main.js +10 -10
- package/src/ws/default/default.ws.connection.js +4 -4
- package/src/ws/default/default.ws.server.js +4 -3
- package/bin/file.js +0 -202
- package/bin/vs.js +0 -74
- package/bin/zed.js +0 -84
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -574
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -467
- package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
- package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
- package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
- /package/src/client/ssr/{offline → views}/Maintenance.js +0 -0
- /package/src/client/ssr/{offline → views}/NoNetworkConnection.js +0 -0
- /package/src/client/ssr/{pages → views}/Test.js +0 -0
package/bin/build.js
CHANGED
|
@@ -69,6 +69,7 @@ if (process.argv.includes('conf')) {
|
|
|
69
69
|
` && underpost push . ${privateGitUri}`,
|
|
70
70
|
{
|
|
71
71
|
silent: true,
|
|
72
|
+
silentOnError: true,
|
|
72
73
|
},
|
|
73
74
|
);
|
|
74
75
|
}
|
|
@@ -163,32 +164,46 @@ const { DefaultConf } = await import(`../conf.${confName}.js`);
|
|
|
163
164
|
`./.github/workflows/publish.cyberia.ci.yml`,
|
|
164
165
|
`${basePath}/.github/workflows/publish.cyberia.ci.yml`,
|
|
165
166
|
);
|
|
166
|
-
delete packageJson.bin.underpost;
|
|
167
|
+
if (packageJson.bin) delete packageJson.bin.underpost;
|
|
168
|
+
if (!packageJson.bin) packageJson.bin = {};
|
|
167
169
|
packageJson.bin.cyberia = 'bin/index.js';
|
|
168
170
|
packageJson.keywords = [
|
|
169
171
|
'cyberia',
|
|
172
|
+
'cyberia-cli',
|
|
173
|
+
'engine-cyberia',
|
|
174
|
+
'sidecar',
|
|
175
|
+
'data-layer',
|
|
176
|
+
'engine-cyberia',
|
|
170
177
|
'object-layer',
|
|
171
|
-
'game-engine',
|
|
172
|
-
'assets-management',
|
|
173
|
-
'web3',
|
|
174
178
|
'atlas-sprite-sheet',
|
|
179
|
+
'ipfs',
|
|
180
|
+
'erc-1155',
|
|
181
|
+
'object-layer-token',
|
|
182
|
+
'hardhat',
|
|
183
|
+
'hyperledger-besu',
|
|
184
|
+
'blockchain',
|
|
185
|
+
'web3',
|
|
186
|
+
'underpost-platform',
|
|
187
|
+
'mmorpg',
|
|
175
188
|
];
|
|
176
|
-
packageJson.description =
|
|
177
|
-
|
|
189
|
+
packageJson.description =
|
|
190
|
+
'Cyberia CLI — toolchain for the Cyberia MMO data layer, content pipeline, persistence, gRPC services, and ERC-1155 lifecycle on Hyperledger Besu.';
|
|
191
|
+
const { CyberiaDependencies } = await import(`../src/api/cyberia-server-defaults/cyberia-server-defaults.js`);
|
|
178
192
|
packageJson.dependencies = {
|
|
179
193
|
...originPackageJson.dependencies,
|
|
180
194
|
...CyberiaDependencies,
|
|
181
195
|
};
|
|
182
196
|
fs.writeFileSync(`${basePath}/bin/index.js`, fs.readFileSync(`./bin/cyberia.js`, 'utf8'), 'utf8');
|
|
197
|
+
// Canonical Cyberia doc; engine-cyberia/README.md is a generated copy — never hand-edited.
|
|
183
198
|
fs.writeFileSync(
|
|
184
199
|
`${basePath}/README.md`,
|
|
185
|
-
fs.readFileSync(`./src/client/public/cyberia-docs/CYBERIA
|
|
200
|
+
fs.readFileSync(`./src/client/public/cyberia-docs/CYBERIA.md`, 'utf8'),
|
|
186
201
|
'utf8',
|
|
187
202
|
);
|
|
188
203
|
fs.copySync(`./hardhat`, `${basePath}/hardhat`);
|
|
189
204
|
for (const path of [
|
|
190
205
|
'/src/grpc/cyberia',
|
|
191
|
-
'/src/client/ssr/
|
|
206
|
+
'/src/client/ssr/views/CyberiaServerMetrics.js',
|
|
192
207
|
'/src/server/object-layer.js',
|
|
193
208
|
'/src/server/atlas-sprite-sheet-generator.js',
|
|
194
209
|
'/src/server/shape-generator.js',
|
|
@@ -202,6 +217,7 @@ const { DefaultConf } = await import(`../conf.${confName}.js`);
|
|
|
202
217
|
'/src/runtime/cyberia-client',
|
|
203
218
|
'/.github/workflows/hardhat.ci.yml',
|
|
204
219
|
'/src/client/public/cyberia-docs',
|
|
220
|
+
'/src/api/cyberia-server-defaults',
|
|
205
221
|
])
|
|
206
222
|
fs.copySync(`.${path}`, `${basePath}${path}`);
|
|
207
223
|
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
|
|
3
|
+
import { loggerFactory } from '../src/server/logger.js';
|
|
4
|
+
import { getDirname, newInstance, uniqueArray } from '../src/client/components/core/CommonJs.js';
|
|
5
|
+
import { shellExec } from '../src/server/process.js';
|
|
6
|
+
import walk from 'ignore-walk';
|
|
7
|
+
import { validateTemplatePath } from '../src/server/conf.js';
|
|
8
|
+
import dotenv from 'dotenv';
|
|
9
|
+
|
|
10
|
+
const logger = loggerFactory(import.meta);
|
|
11
|
+
|
|
12
|
+
if (fs.existsSync('./engine-private/conf/dd-cron/.env.production'))
|
|
13
|
+
dotenv.config({
|
|
14
|
+
path: `./engine-private/conf/dd-cron/.env.production`,
|
|
15
|
+
override: true,
|
|
16
|
+
});
|
|
17
|
+
else dotenv.config();
|
|
18
|
+
|
|
19
|
+
// Engine-only paths stripped from the template after the source sync.
|
|
20
|
+
const TEMPLATE_DELETE_PATHS = [
|
|
21
|
+
'./.github',
|
|
22
|
+
'./manifests/deployment/dd-lampp-development',
|
|
23
|
+
'./manifests/deployment/dd-cyberia-development',
|
|
24
|
+
'./manifests/deployment/dd-core-development',
|
|
25
|
+
'./manifests/deployment/dd-template-development',
|
|
26
|
+
'./src/server/object-layer.js',
|
|
27
|
+
'./src/server/atlas-sprite-sheet-generator.js',
|
|
28
|
+
'./src/server/shape-generator.js',
|
|
29
|
+
'./src/server/semantic-layer-generator.js',
|
|
30
|
+
'./src/server/semantic-layer-generator-floor.js',
|
|
31
|
+
'./src/server/semantic-layer-generator-skin.js',
|
|
32
|
+
'./src/server/semantic-layer-generator-resource.js',
|
|
33
|
+
'./src/server/besu-genesis-generator.js',
|
|
34
|
+
'./src/grpc/cyberia',
|
|
35
|
+
'./src/runtime/cyberia-server',
|
|
36
|
+
'./src/runtime/cyberia-client',
|
|
37
|
+
'./test/shape-generator.test.js',
|
|
38
|
+
'./src/client/public/cyberia-docs',
|
|
39
|
+
'bin/cyberia.js',
|
|
40
|
+
'./hardhat',
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
// Workflow + service files re-added to the template after the engine-only strip above.
|
|
44
|
+
const TEMPLATE_RESTORE_PATHS = [
|
|
45
|
+
`./.github/workflows/pwa-microservices-template-page.cd.yml`,
|
|
46
|
+
`./.github/workflows/pwa-microservices-template-test.ci.yml`,
|
|
47
|
+
`./.github/workflows/npmpkg.ci.yml`,
|
|
48
|
+
`./.github/workflows/ghpkg.ci.yml`,
|
|
49
|
+
`./.github/workflows/gitlab.ci.yml`,
|
|
50
|
+
`./.github/workflows/publish.ci.yml`,
|
|
51
|
+
`./.github/workflows/release.cd.yml`,
|
|
52
|
+
`./src/client/services/user/guest.service.js`,
|
|
53
|
+
'./src/api/user/guest.service.js',
|
|
54
|
+
'./src/ws/IoInterface.js',
|
|
55
|
+
'./src/ws/IoServer.js',
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
const TEMPLATE_KEYWORDS = [
|
|
59
|
+
'underpost',
|
|
60
|
+
'underpost-platform',
|
|
61
|
+
'cli',
|
|
62
|
+
'toolchain',
|
|
63
|
+
'ci-cd',
|
|
64
|
+
'devops',
|
|
65
|
+
'kubernetes',
|
|
66
|
+
'k3s',
|
|
67
|
+
'kubeadm',
|
|
68
|
+
'lxd',
|
|
69
|
+
'bare-metal',
|
|
70
|
+
'container-orchestration',
|
|
71
|
+
'image-management',
|
|
72
|
+
'pwa',
|
|
73
|
+
'workbox',
|
|
74
|
+
'microservices',
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const TEMPLATE_DESCRIPTION =
|
|
78
|
+
'Underpost Platform — end-to-end CI/CD and application-delivery toolchain CLI. Covers bare metal, Kubernetes, K3s, kubeadm, LXD, container/image orchestration, secrets, databases, cron jobs, monitoring, SSH, runners, PWA + Workbox delivery, and release orchestration. Extensible via downstream CLIs.';
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Builds the pwa-microservices-template from scratch out of the current engine source tree.
|
|
82
|
+
*
|
|
83
|
+
* Clones (or resets) the template repo next to the engine, syncs every engine-tracked file the
|
|
84
|
+
* template is allowed to carry (validateTemplatePath), strips engine-only modules, restores the
|
|
85
|
+
* template's own CI workflows + guest services, and rewrites package.json / package-lock.json /
|
|
86
|
+
* README so the template is a standalone, installable project.
|
|
87
|
+
*
|
|
88
|
+
* Usage: node bin/build.template [srcPath=./] [toPath=../pwa-microservices-template]
|
|
89
|
+
*/
|
|
90
|
+
const srcPath = (process.argv[2] ?? './').replaceAll(`'`, '');
|
|
91
|
+
const toPath = (process.argv[3] ?? '../pwa-microservices-template').replaceAll(`'`, '');
|
|
92
|
+
const githubUsername = process.env.GITHUB_USERNAME;
|
|
93
|
+
|
|
94
|
+
logger.info('Build template', { srcPath, toPath });
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
const sourceFiles = (
|
|
98
|
+
await new Promise((resolve) =>
|
|
99
|
+
walk(
|
|
100
|
+
{
|
|
101
|
+
path: srcPath,
|
|
102
|
+
ignoreFiles: [`.gitignore`],
|
|
103
|
+
includeEmpty: false,
|
|
104
|
+
follow: false,
|
|
105
|
+
},
|
|
106
|
+
(...args) => resolve(args[1]),
|
|
107
|
+
),
|
|
108
|
+
)
|
|
109
|
+
).filter((p) => !p.startsWith('.git'));
|
|
110
|
+
|
|
111
|
+
// Clone the template from 0 if missing; otherwise reset it to a clean pristine checkout.
|
|
112
|
+
if (!fs.existsSync(toPath)) {
|
|
113
|
+
shellExec(`cd .. && node engine/bin clone ${githubUsername}/pwa-microservices-template`);
|
|
114
|
+
} else {
|
|
115
|
+
shellExec(`cd ${toPath} && git reset && git checkout . && git clean -f -d`);
|
|
116
|
+
shellExec(`node bin pull ${toPath} ${githubUsername}/pwa-microservices-template`);
|
|
117
|
+
shellExec(`sudo rm -rf ${toPath}/engine-private`);
|
|
118
|
+
shellExec(`sudo rm -rf ${toPath}/logs`);
|
|
119
|
+
}
|
|
120
|
+
shellExec(`cd ${toPath} && git config core.filemode false`);
|
|
121
|
+
|
|
122
|
+
for (const copyPath of sourceFiles) {
|
|
123
|
+
if (copyPath === 'NaN') continue;
|
|
124
|
+
const absolutePath = `${srcPath}/${copyPath}`;
|
|
125
|
+
if (!validateTemplatePath(absolutePath)) continue;
|
|
126
|
+
|
|
127
|
+
const folder = getDirname(`${toPath}/${copyPath}`);
|
|
128
|
+
if (!fs.existsSync(folder)) fs.mkdirSync(folder, { recursive: true });
|
|
129
|
+
|
|
130
|
+
logger.info('build', `${toPath}/${copyPath}`);
|
|
131
|
+
fs.copyFileSync(absolutePath, `${toPath}/${copyPath}`);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
fs.copySync(`./.vscode`, `${toPath}/.vscode`);
|
|
135
|
+
fs.copySync(`./src/client/public/default`, `${toPath}/src/client/public/default`);
|
|
136
|
+
|
|
137
|
+
// Preserve the template's own README + package.json identity before merging engine metadata.
|
|
138
|
+
for (const checkoutPath of ['README.md', 'package.json']) shellExec(`cd ${toPath} && git checkout ${checkoutPath}`);
|
|
139
|
+
|
|
140
|
+
for (const deletePath of TEMPLATE_DELETE_PATHS) {
|
|
141
|
+
const target = `${toPath}/${deletePath}`;
|
|
142
|
+
if (fs.existsSync(target)) fs.removeSync(target);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
fs.mkdirSync(`${toPath}/.github/workflows`, { recursive: true });
|
|
146
|
+
for (const restorePath of TEMPLATE_RESTORE_PATHS) fs.copyFileSync(restorePath, `${toPath}/${restorePath}`);
|
|
147
|
+
|
|
148
|
+
// ── package.json: take engine deps/scripts/version, keep template identity. ──
|
|
149
|
+
const originPackageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
|
150
|
+
const templatePackageJson = JSON.parse(fs.readFileSync(`${toPath}/package.json`, 'utf8'));
|
|
151
|
+
const templateName = templatePackageJson.name;
|
|
152
|
+
|
|
153
|
+
templatePackageJson.dependencies = originPackageJson.dependencies;
|
|
154
|
+
templatePackageJson.devDependencies = originPackageJson.devDependencies;
|
|
155
|
+
templatePackageJson.version = originPackageJson.version;
|
|
156
|
+
templatePackageJson.scripts = originPackageJson.scripts;
|
|
157
|
+
templatePackageJson.overrides = originPackageJson.overrides;
|
|
158
|
+
templatePackageJson.name = templateName;
|
|
159
|
+
templatePackageJson.description = TEMPLATE_DESCRIPTION;
|
|
160
|
+
templatePackageJson.keywords = uniqueArray(TEMPLATE_KEYWORDS.concat(templatePackageJson.keywords || []));
|
|
161
|
+
delete templatePackageJson.scripts['update:template'];
|
|
162
|
+
fs.writeFileSync(`${toPath}/package.json`, JSON.stringify(templatePackageJson, null, 4), 'utf8');
|
|
163
|
+
|
|
164
|
+
// ── package-lock.json: mirror engine packages, keep template name/version on the root entry. ──
|
|
165
|
+
const originPackageLockJson = JSON.parse(fs.readFileSync('./package-lock.json', 'utf8'));
|
|
166
|
+
const templatePackageLockJson = JSON.parse(fs.readFileSync(`${toPath}/package-lock.json`, 'utf8'));
|
|
167
|
+
const originBasePackageLock = newInstance(templatePackageLockJson.packages['']);
|
|
168
|
+
templatePackageLockJson.name = templateName;
|
|
169
|
+
templatePackageLockJson.version = originPackageLockJson.version;
|
|
170
|
+
templatePackageLockJson.packages = originPackageLockJson.packages;
|
|
171
|
+
templatePackageLockJson.packages[''].name = templateName;
|
|
172
|
+
templatePackageLockJson.packages[''].version = originPackageLockJson.version;
|
|
173
|
+
templatePackageLockJson.packages[''].hasInstallScript = originBasePackageLock.hasInstallScript;
|
|
174
|
+
templatePackageLockJson.packages[''].license = originBasePackageLock.license;
|
|
175
|
+
fs.writeFileSync(`${toPath}/package-lock.json`, JSON.stringify(templatePackageLockJson, null, 4), 'utf8');
|
|
176
|
+
|
|
177
|
+
fs.writeFileSync(
|
|
178
|
+
`${toPath}/README.md`,
|
|
179
|
+
fs
|
|
180
|
+
.readFileSync('./README.md', 'utf8')
|
|
181
|
+
.replace('<!-- template-title -->', '#### Base template for pwa/api-rest projects.'),
|
|
182
|
+
'utf8',
|
|
183
|
+
);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
logger.error(error, error.stack);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|