@merkur/cli 0.37.5 → 0.37.8
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/package.json +2 -2
- package/src/commandConfig.mjs +16 -0
- package/src/commands/build.mjs +4 -9
- package/src/commands/custom.mjs +3 -10
- package/src/commands/dev.mjs +3 -9
- package/src/commands/start.mjs +3 -9
- package/src/commands/test.mjs +3 -9
- package/src/devServer.mjs +14 -5
- package/src/merkurConfig.mjs +12 -1
- package/types.d.ts +7 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merkur/cli",
|
|
3
|
-
"version": "0.37.
|
|
3
|
+
"version": "0.37.8",
|
|
4
4
|
"description": "Merkur is tiny and extensible library for creating front-end microservices.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"merkur": "./bin/merkur.mjs"
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"engines": {
|
|
68
68
|
"node": ">=20"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "3a0dd00def5bb8bdcdc00c4ee10d4d151094fd94"
|
|
71
71
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createCLIConfig } from './CLIConfig.mjs';
|
|
2
|
+
import { createContext } from './context.mjs';
|
|
3
|
+
import { createMerkurConfig } from './merkurConfig.mjs';
|
|
4
|
+
|
|
5
|
+
export async function createCommandConfig({ args, command }) {
|
|
6
|
+
const context = await createContext();
|
|
7
|
+
const baseCliConfig = await createCLIConfig({ args, command });
|
|
8
|
+
|
|
9
|
+
const { merkurConfig, cliConfig } = await createMerkurConfig({
|
|
10
|
+
args,
|
|
11
|
+
cliConfig: baseCliConfig,
|
|
12
|
+
context,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return { context, merkurConfig, cliConfig };
|
|
16
|
+
}
|
package/src/commands/build.mjs
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { createContext } from '../context.mjs';
|
|
3
|
+
import { createCommandConfig } from '../commandConfig.mjs';
|
|
5
4
|
import { runTask } from '../runTask.mjs';
|
|
6
|
-
import { createMerkurConfig } from '../merkurConfig.mjs';
|
|
7
5
|
import { createLogger } from '../logger.mjs';
|
|
8
6
|
import { time } from '../utils.mjs';
|
|
9
7
|
import { handleExit } from '../handleExit.mjs';
|
|
@@ -12,14 +10,11 @@ import { clearBuildFolder } from '../clearBuildFolder.mjs';
|
|
|
12
10
|
export async function build({ args, command }) {
|
|
13
11
|
const buildTime = time();
|
|
14
12
|
|
|
15
|
-
const context = await
|
|
16
|
-
const baseCliConfig = await createCLIConfig({ args, command });
|
|
17
|
-
|
|
18
|
-
const { merkurConfig, cliConfig } = await createMerkurConfig({
|
|
13
|
+
const { context, cliConfig, merkurConfig } = await createCommandConfig({
|
|
19
14
|
args,
|
|
20
|
-
|
|
21
|
-
context,
|
|
15
|
+
command,
|
|
22
16
|
});
|
|
17
|
+
|
|
23
18
|
const logger = createLogger(undefined, cliConfig);
|
|
24
19
|
|
|
25
20
|
await handleExit({ context });
|
package/src/commands/custom.mjs
CHANGED
|
@@ -3,10 +3,8 @@ import path from 'node:path';
|
|
|
3
3
|
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { createContext } from '../context.mjs';
|
|
6
|
+
import { createCommandConfig } from '../commandConfig.mjs';
|
|
8
7
|
import { createLogger } from '../logger.mjs';
|
|
9
|
-
import { createMerkurConfig } from '../merkurConfig.mjs';
|
|
10
8
|
import { handleExit } from '../handleExit.mjs';
|
|
11
9
|
|
|
12
10
|
export const CUSTOM_PART = {
|
|
@@ -15,15 +13,10 @@ export const CUSTOM_PART = {
|
|
|
15
13
|
};
|
|
16
14
|
|
|
17
15
|
export async function custom({ args, command }) {
|
|
18
|
-
const context = await
|
|
19
|
-
let baseCliConfig = await createCLIConfig({ args, command });
|
|
20
|
-
|
|
21
|
-
const { merkurConfig, cliConfig } = await createMerkurConfig({
|
|
16
|
+
const { context, cliConfig, merkurConfig } = await createCommandConfig({
|
|
22
17
|
args,
|
|
23
|
-
|
|
24
|
-
context,
|
|
18
|
+
command,
|
|
25
19
|
});
|
|
26
|
-
|
|
27
20
|
const logger = createLogger('Custom command:', cliConfig);
|
|
28
21
|
|
|
29
22
|
await handleExit({ context });
|
package/src/commands/dev.mjs
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext } from '../context.mjs';
|
|
1
|
+
import { createCommandConfig } from '../commandConfig.mjs';
|
|
3
2
|
import { runDevServer } from '../devServer.mjs';
|
|
4
3
|
import { runTask } from '../runTask.mjs';
|
|
5
|
-
import { createMerkurConfig } from '../merkurConfig.mjs';
|
|
6
4
|
import { runSocketServer } from '../websocket.mjs';
|
|
7
5
|
import { runWidgetServer } from '../widgetServer.mjs';
|
|
8
6
|
import { handleExit } from '../handleExit.mjs';
|
|
9
7
|
import { clearBuildFolder } from '../clearBuildFolder.mjs';
|
|
10
8
|
|
|
11
9
|
export async function dev({ args, command }) {
|
|
12
|
-
const context = await
|
|
13
|
-
const baseCliConfig = await createCLIConfig({ args, command });
|
|
14
|
-
|
|
15
|
-
const { merkurConfig, cliConfig } = await createMerkurConfig({
|
|
10
|
+
const { context, cliConfig, merkurConfig } = await createCommandConfig({
|
|
16
11
|
args,
|
|
17
|
-
|
|
18
|
-
context,
|
|
12
|
+
command,
|
|
19
13
|
});
|
|
20
14
|
|
|
21
15
|
await handleExit({ context });
|
package/src/commands/start.mjs
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext } from '../context.mjs';
|
|
1
|
+
import { createCommandConfig } from '../commandConfig.mjs';
|
|
3
2
|
import { runDevServer } from '../devServer.mjs';
|
|
4
|
-
import { createMerkurConfig } from '../merkurConfig.mjs';
|
|
5
3
|
import { runWidgetServer } from '../widgetServer.mjs';
|
|
6
4
|
import { handleExit } from '../handleExit.mjs';
|
|
7
5
|
|
|
8
6
|
export async function start({ args, command }) {
|
|
9
|
-
const context = await
|
|
10
|
-
let baseCliConfig = await createCLIConfig({ args, command });
|
|
11
|
-
|
|
12
|
-
const { merkurConfig, cliConfig } = await createMerkurConfig({
|
|
7
|
+
const { context, cliConfig, merkurConfig } = await createCommandConfig({
|
|
13
8
|
args,
|
|
14
|
-
|
|
15
|
-
context,
|
|
9
|
+
command,
|
|
16
10
|
});
|
|
17
11
|
|
|
18
12
|
await handleExit({ context });
|
package/src/commands/test.mjs
CHANGED
|
@@ -3,20 +3,14 @@ import process from 'node:process';
|
|
|
3
3
|
|
|
4
4
|
import { npmRunPath } from 'npm-run-path';
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { createContext } from '../context.mjs';
|
|
6
|
+
import { createCommandConfig } from '../commandConfig.mjs';
|
|
8
7
|
import { createLogger } from '../logger.mjs';
|
|
9
|
-
import { createMerkurConfig } from '../merkurConfig.mjs';
|
|
10
8
|
import { handleExit } from '../handleExit.mjs';
|
|
11
9
|
|
|
12
10
|
export async function test({ args, commandArgs, command }) {
|
|
13
|
-
const context = await
|
|
14
|
-
let baseCliConfig = await createCLIConfig({ args, command });
|
|
15
|
-
|
|
16
|
-
const { merkurConfig, cliConfig } = await createMerkurConfig({
|
|
11
|
+
const { context, cliConfig, merkurConfig } = await createCommandConfig({
|
|
17
12
|
args,
|
|
18
|
-
|
|
19
|
-
context,
|
|
13
|
+
command,
|
|
20
14
|
});
|
|
21
15
|
const logger = createLogger('testRunner', cliConfig);
|
|
22
16
|
|
package/src/devServer.mjs
CHANGED
|
@@ -27,6 +27,7 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
|
|
|
27
27
|
template,
|
|
28
28
|
templateFolder,
|
|
29
29
|
serverTemplateFolder,
|
|
30
|
+
templateFolders,
|
|
30
31
|
path: playgroundPath,
|
|
31
32
|
widgetHandler,
|
|
32
33
|
} = merkurConfig.playground;
|
|
@@ -52,7 +53,11 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
|
|
|
52
53
|
asyncMiddleware(async (req, res) => {
|
|
53
54
|
const isDevCommand = command === COMMAND_NAME.DEV;
|
|
54
55
|
|
|
55
|
-
const widgetProperties = await widgetHandler(req, res
|
|
56
|
+
const widgetProperties = await widgetHandler(req, res, {
|
|
57
|
+
context,
|
|
58
|
+
merkurConfig,
|
|
59
|
+
cliConfig,
|
|
60
|
+
});
|
|
56
61
|
|
|
57
62
|
// TODO refactor
|
|
58
63
|
if (isDevCommand) {
|
|
@@ -127,9 +132,12 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
|
|
|
127
132
|
fs.readFileSync(template, 'utf8'),
|
|
128
133
|
{
|
|
129
134
|
views: [
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
135
|
+
...new Set([
|
|
136
|
+
serverTemplateFolder,
|
|
137
|
+
path.dirname(template),
|
|
138
|
+
templateFolder,
|
|
139
|
+
...templateFolders,
|
|
140
|
+
]),
|
|
133
141
|
],
|
|
134
142
|
},
|
|
135
143
|
);
|
|
@@ -169,7 +177,8 @@ export async function runDevServer({ context, merkurConfig, cliConfig }) {
|
|
|
169
177
|
}
|
|
170
178
|
|
|
171
179
|
logger.error(error);
|
|
172
|
-
|
|
180
|
+
// TODO send html page with preview of error for better DX
|
|
181
|
+
res.status(error?.status ?? 500).json({
|
|
173
182
|
error: {
|
|
174
183
|
message: `Something is wrong with the @merkur/cli/devServer: ${error.message}`,
|
|
175
184
|
stack: error.stack,
|
package/src/merkurConfig.mjs
CHANGED
|
@@ -189,12 +189,22 @@ emitter.on(
|
|
|
189
189
|
function playground({ merkurConfig, cliConfig }) {
|
|
190
190
|
merkurConfig.playground = {
|
|
191
191
|
template: path.resolve(`${cliConfig.cliFolder}/templates/playground.ejs`),
|
|
192
|
+
// @deprecated Use templateFolders instead.
|
|
192
193
|
templateFolder: path.resolve(`${cliConfig.cliFolder}/templates`),
|
|
194
|
+
// @deprecated Use templateFolders instead.
|
|
193
195
|
serverTemplateFolder: path.resolve(
|
|
194
196
|
`${cliConfig.projectFolder}/server/playground/templates`,
|
|
195
197
|
),
|
|
198
|
+
/**
|
|
199
|
+
* This new variable will replace the old templateFolders. So we already
|
|
200
|
+
* include all of the default folders in here.
|
|
201
|
+
*/
|
|
202
|
+
templateFolders: [
|
|
203
|
+
path.resolve(`${cliConfig.cliFolder}/templates`),
|
|
204
|
+
path.resolve(`${cliConfig.projectFolder}/server/playground/templates`),
|
|
205
|
+
],
|
|
196
206
|
path: '/',
|
|
197
|
-
widgetHandler: async (req) => {
|
|
207
|
+
widgetHandler: async (req, res, { merkurConfig }) => {
|
|
198
208
|
const { protocol, host } = merkurConfig.widgetServer;
|
|
199
209
|
let widgetProperties = null;
|
|
200
210
|
const params = merkurConfig.playground.widgetParams(req);
|
|
@@ -207,6 +217,7 @@ emitter.on(
|
|
|
207
217
|
if (!response.ok) {
|
|
208
218
|
const error = new Error(widgetProperties?.error?.message);
|
|
209
219
|
error.stack = widgetProperties?.error?.stack;
|
|
220
|
+
error.status = response.status ?? 500;
|
|
210
221
|
throw error;
|
|
211
222
|
}
|
|
212
223
|
|
package/types.d.ts
CHANGED
|
@@ -47,8 +47,15 @@ export interface DevServer {
|
|
|
47
47
|
|
|
48
48
|
export interface Playground {
|
|
49
49
|
template: string;
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated Use templateFolders instead.
|
|
52
|
+
*/
|
|
50
53
|
templateFolder: string;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use templateFolders instead.
|
|
56
|
+
*/
|
|
51
57
|
serverTemplateFolder: string;
|
|
58
|
+
templateFolders: string[];
|
|
52
59
|
path: string;
|
|
53
60
|
widgetHandler(req: Request, res: Response): Record<string, unknown>;
|
|
54
61
|
widgetParams(req: Request): URLSearchParams;
|