@equinor/echo-cli 2.2.0-beta-rrd-6 → 2.2.0-beta-0
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 +35 -7
- package/lib/config/common/buildAndCopyEchoHostForProd.js +1 -2
- package/lib/config/common/buildAndCopyEchoHostForProd.js.map +1 -1
- package/lib/config/common/echoManifest.js +3 -0
- package/lib/config/common/echoManifest.js.map +1 -1
- package/lib/config/webpack/configBuilders/devServer.js +14 -0
- package/lib/config/webpack/configBuilders/devServer.js.map +1 -1
- package/lib/config/webpack/server.js +16 -0
- package/lib/config/webpack/server.js.map +1 -1
- package/lib/const/common.js +2 -2
- package/lib/const/common.js.map +1 -1
- package/lib/echo-build-dev-host.js +3 -1
- package/lib/echo-build-dev-host.js.map +1 -1
- package/lib/echo-build.js +4 -1
- package/lib/echo-build.js.map +1 -1
- package/lib/echo-dev-host/package-lock.json +276 -165
- package/lib/echo-dev-host/package.json +7 -7
- package/lib/echo-dev-host/src/app.tsx +5 -1
- package/lib/echo-dev-host/src/index.tsx +1 -6
- package/lib/sync-dev-host-to-app.d.ts +26 -0
- package/lib/sync-dev-host-to-app.js +61 -0
- package/lib/sync-dev-host-to-app.js.map +1 -0
- package/lib/sync-echo-dev-versions.d.ts +6 -0
- package/lib/sync-echo-dev-versions.js +43 -0
- package/lib/sync-echo-dev-versions.js.map +1 -0
- package/lib/tools/buildScripts/buildAndCopyDevHost.d.ts +36 -7
- package/lib/tools/buildScripts/buildAndCopyDevHost.js +58 -39
- package/lib/tools/buildScripts/buildAndCopyDevHost.js.map +1 -1
- package/lib/tools/buildScripts/buildAndCopyDevHost.test.js +500 -0
- package/lib/tools/buildScripts/buildAndCopyDevHost.test.js.map +1 -0
- package/lib/update-echo-libs.d.ts +0 -3
- package/lib/update-echo-libs.js +64 -107
- package/lib/update-echo-libs.js.map +1 -1
- package/lib/utils/getLatestPkgVersion.d.ts +2 -2
- package/lib/utils/getLatestPkgVersion.js +4 -2
- package/lib/utils/getLatestPkgVersion.js.map +1 -1
- package/lib/utils/merge.test.d.ts +1 -0
- package/lib/{__test__/utils/merg.test.js → utils/merge.test.js} +2 -2
- package/lib/utils/merge.test.js.map +1 -0
- package/lib/utils/printEchoLibsVersions.js +1 -1
- package/lib/utils/printEchoLibsVersions.js.map +1 -1
- package/package.json +4 -3
- package/lib/__test__/utils/merg.test.js.map +0 -1
- /package/lib/{__test__/utils/merg.test.d.ts → tools/buildScripts/buildAndCopyDevHost.test.d.ts} +0 -0
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"author": "",
|
|
22
22
|
"license": "MIT",
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@equinor/echo-base": "2.2.
|
|
25
|
-
"@equinor/echo-components": "2.2.
|
|
26
|
-
"@equinor/echo-core": "2.2.
|
|
27
|
-
"@equinor/echo-framework": "2.2.
|
|
24
|
+
"@equinor/echo-base": "2.2.3",
|
|
25
|
+
"@equinor/echo-components": "2.2.3",
|
|
26
|
+
"@equinor/echo-core": "2.2.3",
|
|
27
|
+
"@equinor/echo-framework": "2.2.1",
|
|
28
28
|
"@equinor/echo-scripts": "0.1.5",
|
|
29
|
-
"@equinor/echo-search": "2.2.
|
|
30
|
-
"@equinor/echo-utils": "2.2.
|
|
29
|
+
"@equinor/echo-search": "2.2.3",
|
|
30
|
+
"@equinor/echo-utils": "2.2.3",
|
|
31
31
|
"@equinor/eds-core-react": "0.49.0",
|
|
32
32
|
"@equinor/eds-icons": "0.22.0",
|
|
33
33
|
"@equinor/eds-tokens": "0.10.0",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"lodash": "4.17.21",
|
|
43
43
|
"react": "18.3.1",
|
|
44
44
|
"react-dom": "18.3.1",
|
|
45
|
-
"react-router-dom": "
|
|
45
|
+
"react-router-dom": "5.3.4",
|
|
46
46
|
"react-sortablejs": "6.1.4",
|
|
47
47
|
"sortablejs": "1.15.6",
|
|
48
48
|
"styled-components": "6.1.19",
|
|
@@ -2,6 +2,7 @@ import { EchoEnv, useInitial } from '@equinor/echo-core';
|
|
|
2
2
|
import { displayToast, EchoContent, EchoEventHandler, EchoRoutes, Toasters } from '@equinor/echo-framework';
|
|
3
3
|
import { Syncer } from '@equinor/echo-search';
|
|
4
4
|
import React from 'react';
|
|
5
|
+
import { Redirect as TypedRedirect, Route as TypedRoute, Switch as TypedSwitch } from 'react-router-dom';
|
|
5
6
|
import { getCorePlants } from './api/api-plants';
|
|
6
7
|
import './app.css';
|
|
7
8
|
import { Home } from './components/Home/Home';
|
|
@@ -19,7 +20,10 @@ export const EchoApp: React.FC = () => {
|
|
|
19
20
|
return (
|
|
20
21
|
<EchoEventHandler>
|
|
21
22
|
<EchoContent Legend={Legend} isOnboardingCompleted={true}>
|
|
22
|
-
<
|
|
23
|
+
<TypedSwitch>
|
|
24
|
+
<EchoRoutes homeComponent={Home} />
|
|
25
|
+
<TypedRoute render={(): JSX.Element => <TypedRedirect to="/" />} />
|
|
26
|
+
</TypedSwitch>
|
|
23
27
|
<Toasters />
|
|
24
28
|
</EchoContent>
|
|
25
29
|
</EchoEventHandler>
|
|
@@ -73,12 +73,7 @@ const Echo: React.FC = (): JSX.Element => {
|
|
|
73
73
|
<QueryClientProvider client={queryClient as unknown as QueryClient}>
|
|
74
74
|
<EventHubProvider>
|
|
75
75
|
<Mediator options={moduleOptions} />
|
|
76
|
-
<BrowserRouter
|
|
77
|
-
future={{
|
|
78
|
-
v7_relativeSplatPath: true,
|
|
79
|
-
v7_startTransition: true
|
|
80
|
-
}}
|
|
81
|
-
>
|
|
76
|
+
<BrowserRouter>
|
|
82
77
|
<EchoApp />
|
|
83
78
|
</BrowserRouter>
|
|
84
79
|
</EventHubProvider>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from '@oclif/core';
|
|
3
|
+
/**
|
|
4
|
+
* Command to synchronize echo-dev-host library versions with the consumer application's package.json.
|
|
5
|
+
*
|
|
6
|
+
* This command is useful when switching between git branches that may have different versions of
|
|
7
|
+
* @equinor/echo-* dependencies. It rebuilds the echo-dev-host to use the exact versions specified
|
|
8
|
+
* in the consumer app's package.json.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* The command performs the following steps:
|
|
12
|
+
* 1. Locates the consumer app's package.json containing @equinor/echo-* dependencies
|
|
13
|
+
* 2. Displays current versions of echo libraries in both dev-host and the app
|
|
14
|
+
* 3. Rebuilds echo-dev-host using sync mode to match the app's exact dependency versions
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```bash
|
|
18
|
+
* npx sync-dev-host-to-app
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @throws {Error} Exits with code 1 if no package.json with @equinor/echo-* dependencies is found
|
|
22
|
+
*/
|
|
23
|
+
export default class SyncDevHostToApp extends Command {
|
|
24
|
+
static readonly description = "Sync echo-dev-host to use exact echo library versions from your app (useful after switching git branches)";
|
|
25
|
+
run(): Promise<void>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from '@oclif/core';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { ECHO_HOST_BUILD_OUTPUT_FOLDER, ECHO_HOST_TEMP_BUILD_FOLDER } from './const/common.js';
|
|
6
|
+
import { buildAndCopyDevHost } from './tools/buildScripts/buildAndCopyDevHost.js';
|
|
7
|
+
import { findConsumerAppPackageJson } from './utils/findConsumerAppPackageJson.js';
|
|
8
|
+
import { printEchoLibsVersions } from './utils/printEchoLibsVersions.js';
|
|
9
|
+
/**
|
|
10
|
+
* Command to synchronize echo-dev-host library versions with the consumer application's package.json.
|
|
11
|
+
*
|
|
12
|
+
* This command is useful when switching between git branches that may have different versions of
|
|
13
|
+
* @equinor/echo-* dependencies. It rebuilds the echo-dev-host to use the exact versions specified
|
|
14
|
+
* in the consumer app's package.json.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* The command performs the following steps:
|
|
18
|
+
* 1. Locates the consumer app's package.json containing @equinor/echo-* dependencies
|
|
19
|
+
* 2. Displays current versions of echo libraries in both dev-host and the app
|
|
20
|
+
* 3. Rebuilds echo-dev-host using sync mode to match the app's exact dependency versions
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```bash
|
|
24
|
+
* npx sync-dev-host-to-app
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @throws {Error} Exits with code 1 if no package.json with @equinor/echo-* dependencies is found
|
|
28
|
+
*/
|
|
29
|
+
export default class SyncDevHostToApp extends Command {
|
|
30
|
+
static description = 'Sync echo-dev-host to use exact echo library versions from your app (useful after switching git branches)';
|
|
31
|
+
async run() {
|
|
32
|
+
console.log(chalk.cyan.bold('\n🔄 Syncing echo-dev-host versions to match your app...\n'));
|
|
33
|
+
// 1. Find consumer app package.json
|
|
34
|
+
const consumerPkgPath = findConsumerAppPackageJson(process.cwd());
|
|
35
|
+
if (!consumerPkgPath) {
|
|
36
|
+
console.error(chalk.red('Could not find a package.json with @equinor/echo-* dependencies.\nMake sure you are in an Echo module project directory.'));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// 2. Show current versions
|
|
40
|
+
const devHostPkgPath = path.resolve(process.cwd(), 'node_modules', '@equinor', 'echo-cli', 'lib', 'echo-dev-host', 'package.json');
|
|
41
|
+
console.log(chalk.yellow('Current versions:\n'));
|
|
42
|
+
await printEchoLibsVersions({
|
|
43
|
+
devHostPkgPath,
|
|
44
|
+
appPkgPath: consumerPkgPath,
|
|
45
|
+
fetchLatest: false
|
|
46
|
+
});
|
|
47
|
+
console.log(chalk.cyan("\n📌 This will rebuild echo-dev-host to match your app's package.json versions exactly.\n"));
|
|
48
|
+
// 3. Rebuild dev host with sync mode (forces consumer app versions)
|
|
49
|
+
const cliNodeModules = path.resolve(process.cwd(), 'node_modules', '@equinor', 'echo-cli');
|
|
50
|
+
const finalOutput = path.join(cliNodeModules, ECHO_HOST_BUILD_OUTPUT_FOLDER);
|
|
51
|
+
await buildAndCopyDevHost({
|
|
52
|
+
cliNodeModules,
|
|
53
|
+
tmpDevHostFolder: path.resolve(process.cwd(), ECHO_HOST_TEMP_BUILD_FOLDER),
|
|
54
|
+
finalOutputDir: finalOutput
|
|
55
|
+
});
|
|
56
|
+
console.log(chalk.green.bold("\n✅ Sync complete! echo-dev-host now uses your app's echo lib versions.\n"));
|
|
57
|
+
console.log(chalk.gray('You can now run "npm start" to start your Echo app.\n'));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
SyncDevHostToApp.run();
|
|
61
|
+
//# sourceMappingURL=sync-dev-host-to-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-dev-host-to-app.js","sourceRoot":"","sources":["../src/sync-dev-host-to-app.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACjD,MAAM,CAAU,WAAW,GACvB,2GAA2G,CAAC;IAEhH,KAAK,CAAC,GAAG;QACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;QAE3F,oCAAoC;QACpC,MAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,CACL,0HAA0H,CAC7H,CACJ,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAC/B,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,EACL,eAAe,EACf,cAAc,CACjB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,MAAM,qBAAqB,CAAC;YACxB,cAAc;YACd,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAC1G,CAAC;QAEF,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;QAE7E,MAAM,mBAAmB,CAAC;YACtB,cAAc;YACd,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC;YAC1E,cAAc,EAAE,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACrF,CAAC;;AAGL,gBAAgB,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from '@oclif/core';
|
|
3
|
+
export default class SyncEchoDevVersions extends Command {
|
|
4
|
+
static readonly description = "Sync echo-dev-host to use exact echo library versions from your app (useful after switching git branches)";
|
|
5
|
+
run(): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from '@oclif/core';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { ECHO_HOST_BUILD_OUTPUT_FOLDER, ECHO_HOST_TEMP_BUILD_FOLDER } from './const/common.js';
|
|
6
|
+
import { buildAndCopyDevHost } from './tools/buildScripts/buildAndCopyDevHost.js';
|
|
7
|
+
import { findConsumerAppPackageJson } from './utils/findConsumerAppPackageJson.js';
|
|
8
|
+
import { printEchoLibsVersions } from './utils/printEchoLibsVersions.js';
|
|
9
|
+
export default class SyncEchoDevVersions extends Command {
|
|
10
|
+
static description = 'Sync echo-dev-host to use exact echo library versions from your app (useful after switching git branches)';
|
|
11
|
+
async run() {
|
|
12
|
+
console.log(chalk.cyan.bold('\n🔄 Syncing echo-dev-host versions to match your app...\n'));
|
|
13
|
+
// 1. Find consumer app package.json
|
|
14
|
+
const consumerPkgPath = findConsumerAppPackageJson(process.cwd());
|
|
15
|
+
if (!consumerPkgPath) {
|
|
16
|
+
console.error(chalk.red('Could not find a package.json with @equinor/echo-* dependencies.\nMake sure you are in an Echo module project directory.'));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
// 2. Show current versions
|
|
20
|
+
const devHostPkgPath = path.resolve(process.cwd(), 'node_modules', '@equinor', 'echo-cli', 'lib', 'echo-dev-host', 'package.json');
|
|
21
|
+
console.log(chalk.yellow('Current versions:\n'));
|
|
22
|
+
await printEchoLibsVersions({
|
|
23
|
+
devHostPkgPath,
|
|
24
|
+
appPkgPath: consumerPkgPath,
|
|
25
|
+
fetchLatest: false
|
|
26
|
+
});
|
|
27
|
+
console.log(chalk.cyan("\n📌 This will rebuild echo-dev-host to match your app's package.json versions exactly.\n"));
|
|
28
|
+
// 3. Rebuild dev host with sync mode (forces consumer app versions)
|
|
29
|
+
const cliNodeModules = path.resolve(process.cwd(), 'node_modules', '@equinor', 'echo-cli');
|
|
30
|
+
const finalOutput = path.join(cliNodeModules, ECHO_HOST_BUILD_OUTPUT_FOLDER);
|
|
31
|
+
await buildAndCopyDevHost({
|
|
32
|
+
cliNodeModules,
|
|
33
|
+
tmpDevHostFolder: path.resolve(process.cwd(), ECHO_HOST_TEMP_BUILD_FOLDER),
|
|
34
|
+
finalOutputDir: finalOutput,
|
|
35
|
+
isProdBuild: false,
|
|
36
|
+
syncMode: true // New flag to force exact version matching
|
|
37
|
+
});
|
|
38
|
+
console.log(chalk.green.bold("\n✅ Sync complete! echo-dev-host now uses your app's echo lib versions.\n"));
|
|
39
|
+
console.log(chalk.gray('You can now run "npm start" to start your Echo app.\n'));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
SyncEchoDevVersions.run();
|
|
43
|
+
//# sourceMappingURL=sync-echo-dev-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-echo-dev-versions.js","sourceRoot":"","sources":["../src/sync-echo-dev-versions.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,OAAO;IACpD,MAAM,CAAU,WAAW,GACvB,2GAA2G,CAAC;IAEhH,KAAK,CAAC,GAAG;QACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;QAE3F,oCAAoC;QACpC,MAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,CACL,0HAA0H,CAC7H,CACJ,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAC/B,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,EACL,eAAe,EACf,cAAc,CACjB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,MAAM,qBAAqB,CAAC;YACxB,cAAc;YACd,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAC1G,CAAC;QAEF,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;QAE7E,MAAM,mBAAmB,CAAC;YACtB,cAAc;YACd,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC;YAC1E,cAAc,EAAE,WAAW;YAC3B,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,IAAI,CAAC,2CAA2C;SAC7D,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACrF,CAAC;;AAGL,mBAAmB,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* This function performs the following steps:
|
|
5
5
|
* 1. Removes and recreates a temporary folder for the dev host.
|
|
6
6
|
* 2. Copies the echo-dev-host source files to the temporary folder.
|
|
7
|
-
* 3.
|
|
8
|
-
*
|
|
7
|
+
* 3. Overrides echo library dependencies:
|
|
8
|
+
* - Production builds: Uses max(consumer, devHost) versions
|
|
9
|
+
* - Development builds: Forces exact consumer app versions
|
|
9
10
|
* 4. Installs dependencies and builds the dev host application.
|
|
10
11
|
* 5. Copies the build output to the specified final output directory.
|
|
11
12
|
* 6. Cleans up the temporary folder after the build process.
|
|
@@ -14,16 +15,44 @@
|
|
|
14
15
|
* @param params.cliNodeModules - Path to the node_modules directory containing echo-dev-host.
|
|
15
16
|
* @param params.tmpDevHostFolder - Path to the temporary folder used for building the dev host.
|
|
16
17
|
* @param params.finalOutputDir - Path to the directory where the build output should be copied.
|
|
17
|
-
* @param params.isProdBuild - If true, performs a production build and synchronizes echo library versions with the consumer app.
|
|
18
|
-
* @param params.installAndBuild - (Optional) If true, installs dependencies and builds the dev host (default: true).
|
|
19
|
-
* @param params.skipFetchingLatestVersions - (Optional) If true, skips fetching the latest versions of echo libraries.
|
|
20
18
|
*
|
|
21
19
|
* @remarks
|
|
22
20
|
* - Exits the process if a suitable consumer app package.json cannot be found.
|
|
23
21
|
*/
|
|
24
|
-
export declare function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir
|
|
22
|
+
export declare function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir }: {
|
|
25
23
|
cliNodeModules: string;
|
|
26
24
|
tmpDevHostFolder: string;
|
|
27
25
|
finalOutputDir: string;
|
|
28
|
-
isProdBuild?: boolean;
|
|
29
26
|
}): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Determines the versions of Echo libraries to use for a production build of the dev host,
|
|
29
|
+
* based on the dependencies specified in the consumer application's package.json.
|
|
30
|
+
*
|
|
31
|
+
* This function compares the Echo library dependencies between the consumer app and the dev host.
|
|
32
|
+
* If the consumer app requires a newer version of an Echo library than the dev host, the dev host's
|
|
33
|
+
* package.json is updated to use the consumer app's version for that library.
|
|
34
|
+
*
|
|
35
|
+
* The function logs the source of each version decision and writes any necessary updates to the dev host's
|
|
36
|
+
* package.json file.
|
|
37
|
+
*
|
|
38
|
+
* @param appPkgPath - The file path to the consumer application's package.json.
|
|
39
|
+
* @param tmpDevHostFolder - The folder path containing the dev host's package.json.
|
|
40
|
+
* @returns A promise that resolves to a record mapping each Echo library name to the version that will be used for the build.
|
|
41
|
+
* @internal - Exported for testing purposes only
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* Forces the dev host to use the exact echo library versions from the consumer app's package.json.
|
|
45
|
+
* This is useful for developers switching between git branches with different echo lib versions.
|
|
46
|
+
*
|
|
47
|
+
* Unlike production builds which use max(consumer, devHost), this function always uses the consumer's
|
|
48
|
+
* version regardless of whether it's higher or lower than the dev host's current version.
|
|
49
|
+
*
|
|
50
|
+
* @param appPkgPath - The file path to the consumer application's package.json.
|
|
51
|
+
* @param tmpDevHostFolder - The folder path containing the dev host's package.json.
|
|
52
|
+
* @returns A promise that resolves to a record mapping each Echo library name to the version from the consumer app.
|
|
53
|
+
* @internal - Exported for testing purposes only
|
|
54
|
+
*/
|
|
55
|
+
export declare function syncDevHostToConsumerVersions({ appPkgPath, tmpDevHostFolder }: {
|
|
56
|
+
appPkgPath: string;
|
|
57
|
+
tmpDevHostFolder: string;
|
|
58
|
+
}): Promise<Record<string, string>>;
|
|
@@ -3,7 +3,6 @@ import { execSync } from 'child_process';
|
|
|
3
3
|
import figlet from 'figlet';
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
5
|
import path from 'path';
|
|
6
|
-
import semver from 'semver';
|
|
7
6
|
import { ECHO_HOST_BUILD_OUTPUT_FOLDER, SUPPORTED_ECHO_LIBS } from '../../const/common.js';
|
|
8
7
|
import { findConsumerAppPackageJson, getEchoDeps } from '../../utils/findConsumerAppPackageJson.js';
|
|
9
8
|
import { printEchoLibsVersions } from '../../utils/printEchoLibsVersions.js';
|
|
@@ -13,8 +12,9 @@ import { printEchoLibsVersions } from '../../utils/printEchoLibsVersions.js';
|
|
|
13
12
|
* This function performs the following steps:
|
|
14
13
|
* 1. Removes and recreates a temporary folder for the dev host.
|
|
15
14
|
* 2. Copies the echo-dev-host source files to the temporary folder.
|
|
16
|
-
* 3.
|
|
17
|
-
*
|
|
15
|
+
* 3. Overrides echo library dependencies:
|
|
16
|
+
* - Production builds: Uses max(consumer, devHost) versions
|
|
17
|
+
* - Development builds: Forces exact consumer app versions
|
|
18
18
|
* 4. Installs dependencies and builds the dev host application.
|
|
19
19
|
* 5. Copies the build output to the specified final output directory.
|
|
20
20
|
* 6. Cleans up the temporary folder after the build process.
|
|
@@ -23,14 +23,11 @@ import { printEchoLibsVersions } from '../../utils/printEchoLibsVersions.js';
|
|
|
23
23
|
* @param params.cliNodeModules - Path to the node_modules directory containing echo-dev-host.
|
|
24
24
|
* @param params.tmpDevHostFolder - Path to the temporary folder used for building the dev host.
|
|
25
25
|
* @param params.finalOutputDir - Path to the directory where the build output should be copied.
|
|
26
|
-
* @param params.isProdBuild - If true, performs a production build and synchronizes echo library versions with the consumer app.
|
|
27
|
-
* @param params.installAndBuild - (Optional) If true, installs dependencies and builds the dev host (default: true).
|
|
28
|
-
* @param params.skipFetchingLatestVersions - (Optional) If true, skips fetching the latest versions of echo libraries.
|
|
29
26
|
*
|
|
30
27
|
* @remarks
|
|
31
28
|
* - Exits the process if a suitable consumer app package.json cannot be found.
|
|
32
29
|
*/
|
|
33
|
-
export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir
|
|
30
|
+
export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir }) {
|
|
34
31
|
console.log(`${chalk.cyan.bold('echo-dev-host')} - by Echo Core Team`);
|
|
35
32
|
console.log('Minimalistic host application for local development of Echo applications.\n');
|
|
36
33
|
console.log(figlet.textSync('Echo Dev Host', {
|
|
@@ -40,10 +37,7 @@ export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, fi
|
|
|
40
37
|
}));
|
|
41
38
|
const devHostSrc = path.join(cliNodeModules, 'lib', 'echo-dev-host');
|
|
42
39
|
const buildOutput = path.join(tmpDevHostFolder, ECHO_HOST_BUILD_OUTPUT_FOLDER);
|
|
43
|
-
|
|
44
|
-
if (isProdBuild) {
|
|
45
|
-
console.log(chalk.blueBright.bold(`\n[echo-dev-host] Building the echo app for Production.\n`));
|
|
46
|
-
}
|
|
40
|
+
// Previously had a production (max versions) path; removed to always sync to consumer app for reproducibility.
|
|
47
41
|
// Always remove and recreate the temporary folder
|
|
48
42
|
if (fs.existsSync(tmpDevHostFolder)) {
|
|
49
43
|
console.log(chalk.yellowBright.bold(`\n[echo-dev-host] Removing existing temporary folder "${tmpDevHostFolder}"...\n`));
|
|
@@ -52,7 +46,7 @@ export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, fi
|
|
|
52
46
|
console.log(chalk.blueBright.bold(`\n[echo-dev-host] Copying echo-dev-host source to ${chalk.yellow(tmpDevHostFolder)}...\n`));
|
|
53
47
|
fs.copySync(devHostSrc, tmpDevHostFolder);
|
|
54
48
|
// 2. npm install & build
|
|
55
|
-
|
|
49
|
+
// Previously used to hold selected versions for prod path; now obsolete after strategy simplification.
|
|
56
50
|
console.log(chalk.greenBright.bold('[echo-dev-host] Installing dependencies and building echo-dev-host...\n'));
|
|
57
51
|
console.log(chalk.greenBright.bold('[echo-dev-host] Using the following versions of echo libraries'));
|
|
58
52
|
const appPkgPath = findConsumerAppPackageJson(process.cwd());
|
|
@@ -60,31 +54,33 @@ export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, fi
|
|
|
60
54
|
console.log('Could not find a package.json with supported echo libs. Supported libs are:', SUPPORTED_ECHO_LIBS.join(', '));
|
|
61
55
|
process.exit(1);
|
|
62
56
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
57
|
+
// Always force sync to consumer versions (previous prod max-version strategy removed)
|
|
58
|
+
await syncDevHostToConsumerVersions({
|
|
59
|
+
appPkgPath,
|
|
60
|
+
tmpDevHostFolder
|
|
61
|
+
});
|
|
62
|
+
// For developer visibility still show latest versions (fetchLatest true)
|
|
69
63
|
await printEchoLibsVersions({
|
|
70
|
-
devHostPkgPath:
|
|
64
|
+
devHostPkgPath: path.join(tmpDevHostFolder, 'package.json'),
|
|
71
65
|
appPkgPath: appPkgPath,
|
|
72
|
-
fetchLatest:
|
|
73
|
-
echoLibVersionsToUse: isProdBuild ? echoLibVersionsToUse : undefined
|
|
66
|
+
fetchLatest: true
|
|
74
67
|
});
|
|
75
68
|
execSync('npm install', { cwd: tmpDevHostFolder, stdio: 'inherit' });
|
|
76
69
|
execSync('npm run build', { cwd: tmpDevHostFolder, stdio: 'inherit' });
|
|
77
70
|
// 3. Copy build output to final output directory
|
|
78
71
|
console.log(chalk.magentaBright.bold(`\n[echo-dev-host] Copying build output back to ${chalk.yellow(finalOutputDir)}...\n`));
|
|
79
72
|
fs.copySync(buildOutput, finalOutputDir);
|
|
73
|
+
// 4. Copy updated package.json to final output directory
|
|
74
|
+
// This ensures printEchoLibsVersions() shows the actual runtime versions
|
|
75
|
+
const tmpPackageJsonPath = path.join(tmpDevHostFolder, 'package.json');
|
|
76
|
+
const finalPackageJsonPath = path.join(finalOutputDir, 'package.json');
|
|
77
|
+
fs.copySync(tmpPackageJsonPath, finalPackageJsonPath);
|
|
80
78
|
if (fs.existsSync(tmpDevHostFolder)) {
|
|
81
79
|
console.log(chalk.yellowBright.bold(`\n[echo-dev-host] Removing temporary folder "${tmpDevHostFolder}" used for the build...\n`));
|
|
82
80
|
fs.removeSync(tmpDevHostFolder);
|
|
83
81
|
}
|
|
84
82
|
console.log(chalk.green.bold('[echo-dev-host] Build and copy complete!\n'));
|
|
85
|
-
|
|
86
|
-
console.log(chalk.green.bold('[echo-dev-host] Now you can start your Echo app with "npm start"\n'));
|
|
87
|
-
}
|
|
83
|
+
console.log(chalk.green.bold('[echo-dev-host] Now you can start your Echo app with "npm start"\n'));
|
|
88
84
|
}
|
|
89
85
|
/**
|
|
90
86
|
* Determines the versions of Echo libraries to use for a production build of the dev host,
|
|
@@ -100,11 +96,25 @@ export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, fi
|
|
|
100
96
|
* @param appPkgPath - The file path to the consumer application's package.json.
|
|
101
97
|
* @param tmpDevHostFolder - The folder path containing the dev host's package.json.
|
|
102
98
|
* @returns A promise that resolves to a record mapping each Echo library name to the version that will be used for the build.
|
|
99
|
+
* @internal - Exported for testing purposes only
|
|
103
100
|
*/
|
|
104
|
-
|
|
101
|
+
// NOTE: Former production max-version resolution removed for simplicity & reproducibility.
|
|
102
|
+
/**
|
|
103
|
+
* Forces the dev host to use the exact echo library versions from the consumer app's package.json.
|
|
104
|
+
* This is useful for developers switching between git branches with different echo lib versions.
|
|
105
|
+
*
|
|
106
|
+
* Unlike production builds which use max(consumer, devHost), this function always uses the consumer's
|
|
107
|
+
* version regardless of whether it's higher or lower than the dev host's current version.
|
|
108
|
+
*
|
|
109
|
+
* @param appPkgPath - The file path to the consumer application's package.json.
|
|
110
|
+
* @param tmpDevHostFolder - The folder path containing the dev host's package.json.
|
|
111
|
+
* @returns A promise that resolves to a record mapping each Echo library name to the version from the consumer app.
|
|
112
|
+
* @internal - Exported for testing purposes only
|
|
113
|
+
*/
|
|
114
|
+
export async function syncDevHostToConsumerVersions({ appPkgPath, tmpDevHostFolder }) {
|
|
105
115
|
const consumerPkg = fs.readJsonSync(appPkgPath);
|
|
106
|
-
const consumerAppName = consumerPkg.name || '
|
|
107
|
-
console.log(chalk.magentaBright.bold(`\n[echo-dev-host]
|
|
116
|
+
const consumerAppName = consumerPkg.name || 'your app';
|
|
117
|
+
console.log(chalk.magentaBright.bold(`\n[echo-dev-host] Syncing to exact echo lib versions from "${consumerAppName}".\n`));
|
|
108
118
|
const devHostPkgPath = path.join(tmpDevHostFolder, 'package.json');
|
|
109
119
|
const devHostPkg = fs.readJsonSync(devHostPkgPath);
|
|
110
120
|
const echoDeps = getEchoDeps(consumerPkg);
|
|
@@ -112,23 +122,32 @@ async function determineEchoLibVersionsForProdBuild({ appPkgPath, tmpDevHostFold
|
|
|
112
122
|
const echoLibVersionsToUse = {};
|
|
113
123
|
for (const [lib, consumerVersion] of echoDeps) {
|
|
114
124
|
const devHostVersion = devHostPkg.dependencies?.[lib];
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
// Always use consumer version (force sync) but do not add
|
|
126
|
+
// libraries that are missing from dev host; dev host must
|
|
127
|
+
// only contain the curated Echo libraries set.
|
|
128
|
+
echoLibVersionsToUse[lib] = consumerVersion;
|
|
129
|
+
if (devHostVersion === undefined) {
|
|
130
|
+
console.log(chalk.hex('#FFA500')(`[echo-dev-host] Warning: ${lib} is not present in dev host.\n` +
|
|
131
|
+
'The dev host should ship the curated Echo libraries set.\n' +
|
|
132
|
+
'Continuing without modifying dev host for this library.'));
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (devHostVersion === consumerVersion) {
|
|
136
|
+
console.log(`${chalk.cyan(lib)}: ${chalk.yellow(consumerVersion)} ${chalk.gray('(already synced)')}`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
devHostPkg.dependencies[lib] = consumerVersion;
|
|
123
140
|
updated = true;
|
|
141
|
+
const wasMessage = chalk.gray(`(was ${devHostVersion})`);
|
|
142
|
+
console.log(`${chalk.cyan(lib)}: ${chalk.yellow(consumerVersion)} ${wasMessage}`);
|
|
124
143
|
}
|
|
125
|
-
// Track the version that will be used for the build
|
|
126
|
-
echoLibVersionsToUse[lib] = devHostPkg.dependencies?.[lib] || consumerVersion;
|
|
127
|
-
// Log the decision
|
|
128
|
-
console.log(`${chalk.cyan(lib)}: ${chalk.yellow(finalVersion)} (from ${source})`);
|
|
129
144
|
}
|
|
130
145
|
if (updated) {
|
|
131
146
|
fs.writeJsonSync(devHostPkgPath, devHostPkg, { spaces: 4 });
|
|
147
|
+
console.log(chalk.green('\n✓ Updated dev host package.json'));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.log(chalk.gray('\n✓ All versions already synced'));
|
|
132
151
|
}
|
|
133
152
|
return echoLibVersionsToUse;
|
|
134
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildAndCopyDevHost.js","sourceRoot":"","sources":["../../../src/tools/buildScripts/buildAndCopyDevHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"buildAndCopyDevHost.js","sourceRoot":"","sources":["../../../src/tools/buildScripts/buildAndCopyDevHost.ts"],"names":[],"mappings":"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"}
|