From d5366cc62648109d65b3ce6f42959d499cc3f6d8 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Fri, 26 Sep 2025 15:32:23 +0200 Subject: [PATCH 1/4] feat: support for enabling or disabled network services of the emulator --- package-lock.json | 18 +++++------ package.json | 2 +- src/services/emulator/_runner.services.ts | 6 ++++ src/utils/emulator.utils.ts | 38 +++++++++++++++++++++++ 4 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 src/utils/emulator.utils.ts diff --git a/package-lock.json b/package-lock.json index fe4ab73b..92c2d036 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@junobuild/admin": "^2.3.0", "@junobuild/cdn": "^1.3.2", "@junobuild/cli-tools": "^0.8.0", - "@junobuild/config": "^2.3.0", + "@junobuild/config": "^2.3.0-next-2025-09-26", "@junobuild/config-loader": "^0.4.5", "@junobuild/core": "^2.2.0", "@junobuild/did-tools": "^0.3.3", @@ -1490,13 +1490,13 @@ } }, "node_modules/@junobuild/config": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0.tgz", - "integrity": "sha512-zamZ+Jejw24FbdqQc9LjNvywiCD+MnMNr8kpoUwRrWGZzlfGkK+Q5t4TiFpA857edCRTg8qEni4pJUj38pm8sg==", + "version": "2.3.0-next-2025-09-26", + "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0-next-2025-09-26.tgz", + "integrity": "sha512-ir8kBLV0EhTRWShtDLlAsFxTaCUbT0FxUOaNIL9A2XrJGByOd9ux7yA+WgIME2Qs6BBahqq2lI7mdhwYkPWBCQ==", "license": "MIT", "peerDependencies": { - "@dfinity/zod-schemas": "^2", - "zod": "^4" + "@dfinity/zod-schemas": "*", + "zod": "*" } }, "node_modules/@junobuild/config-loader": { @@ -7304,9 +7304,9 @@ } }, "@junobuild/config": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0.tgz", - "integrity": "sha512-zamZ+Jejw24FbdqQc9LjNvywiCD+MnMNr8kpoUwRrWGZzlfGkK+Q5t4TiFpA857edCRTg8qEni4pJUj38pm8sg==", + "version": "2.3.0-next-2025-09-26", + "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0-next-2025-09-26.tgz", + "integrity": "sha512-ir8kBLV0EhTRWShtDLlAsFxTaCUbT0FxUOaNIL9A2XrJGByOd9ux7yA+WgIME2Qs6BBahqq2lI7mdhwYkPWBCQ==", "requires": {} }, "@junobuild/config-loader": { diff --git a/package.json b/package.json index 75572023..5d8aab8c 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@junobuild/admin": "^2.3.0", "@junobuild/cdn": "^1.3.2", "@junobuild/cli-tools": "^0.8.0", - "@junobuild/config": "^2.3.0", + "@junobuild/config": "^2.3.0-next-2025-09-26", "@junobuild/config-loader": "^0.4.5", "@junobuild/core": "^2.2.0", "@junobuild/did-tools": "^0.3.3", diff --git a/src/services/emulator/_runner.services.ts b/src/services/emulator/_runner.services.ts index 1f56ab9d..682ceb8c 100644 --- a/src/services/emulator/_runner.services.ts +++ b/src/services/emulator/_runner.services.ts @@ -18,6 +18,7 @@ import { type EmulatorRunnerType, type EmulatorType } from '../../types/emulator'; +import {mapEmulatorNetworkServices} from '../../utils/emulator.utils'; import {isHeadless} from '../../utils/process.utils'; import { assertContainerRunnerRunning, @@ -213,6 +214,8 @@ const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfi const platform = config.runner?.platform; + const networkServices = mapEmulatorNetworkServices({config}); + await execute({ command: runner, args: [ @@ -230,6 +233,9 @@ const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfi `${config.skylab.ports?.console ?? EMULATOR_SKYLAB.ports.console}:${EMULATOR_PORT_CONSOLE}` ] : []), + ...(nonNullish(networkServices) + ? ['-e', `NETWORK_SERVICES=${JSON.stringify(networkServices)}`] + : []), '-v', `${volume}:/juno/.juno`, ...(nonNullish(configFile) && nonNullish(configFilePath) diff --git a/src/utils/emulator.utils.ts b/src/utils/emulator.utils.ts new file mode 100644 index 00000000..3dfeda05 --- /dev/null +++ b/src/utils/emulator.utils.ts @@ -0,0 +1,38 @@ +import {isNullish} from '@dfinity/utils'; +import {type EmulatorConfig, type NetworkServices} from '@junobuild/config'; + +// The Docker image has for default the modules that are bootstrapped +// for the Console and Skylab. Satellite as a reduced +// numbers of services. +const SATELLITE_DEFAULT_NETWORK_SERVICES: Readonly = { + icp: true, + ii: true +} as const; + +export const mapEmulatorNetworkServices = ({ + config +}: { + config: EmulatorConfig; +}): NetworkServices | undefined => { + const {network} = config; + + // The Docker image use a default set of features. + // ENV NETWORK_SERVICES='{\ + // "registry": false, \ + // "cmc": true, \ + // "icp": true, \ + // "cycles": true, \ + // "nns": true, \ + // "sns": false, \ + // "ii": true, \ + // "nnsDapp": false \ + // }' + const defaultEnv = 'satellite' in config ? SATELLITE_DEFAULT_NETWORK_SERVICES : undefined; + + if (isNullish(network)) { + return defaultEnv; + } + + const {services} = network; + return services; +}; From 29b95a10d0227235ef2551f684360569508002ad Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Fri, 26 Sep 2025 16:11:22 +0200 Subject: [PATCH 2/4] feat: move default in docker --- src/services/emulator/_runner.services.ts | 3 +- src/utils/emulator.utils.ts | 38 ----------------------- 2 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 src/utils/emulator.utils.ts diff --git a/src/services/emulator/_runner.services.ts b/src/services/emulator/_runner.services.ts index 682ceb8c..ba6961a4 100644 --- a/src/services/emulator/_runner.services.ts +++ b/src/services/emulator/_runner.services.ts @@ -18,7 +18,6 @@ import { type EmulatorRunnerType, type EmulatorType } from '../../types/emulator'; -import {mapEmulatorNetworkServices} from '../../utils/emulator.utils'; import {isHeadless} from '../../utils/process.utils'; import { assertContainerRunnerRunning, @@ -214,7 +213,7 @@ const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfi const platform = config.runner?.platform; - const networkServices = mapEmulatorNetworkServices({config}); + const networkServices = config?.network?.services; await execute({ command: runner, diff --git a/src/utils/emulator.utils.ts b/src/utils/emulator.utils.ts deleted file mode 100644 index 3dfeda05..00000000 --- a/src/utils/emulator.utils.ts +++ /dev/null @@ -1,38 +0,0 @@ -import {isNullish} from '@dfinity/utils'; -import {type EmulatorConfig, type NetworkServices} from '@junobuild/config'; - -// The Docker image has for default the modules that are bootstrapped -// for the Console and Skylab. Satellite as a reduced -// numbers of services. -const SATELLITE_DEFAULT_NETWORK_SERVICES: Readonly = { - icp: true, - ii: true -} as const; - -export const mapEmulatorNetworkServices = ({ - config -}: { - config: EmulatorConfig; -}): NetworkServices | undefined => { - const {network} = config; - - // The Docker image use a default set of features. - // ENV NETWORK_SERVICES='{\ - // "registry": false, \ - // "cmc": true, \ - // "icp": true, \ - // "cycles": true, \ - // "nns": true, \ - // "sns": false, \ - // "ii": true, \ - // "nnsDapp": false \ - // }' - const defaultEnv = 'satellite' in config ? SATELLITE_DEFAULT_NETWORK_SERVICES : undefined; - - if (isNullish(network)) { - return defaultEnv; - } - - const {services} = network; - return services; -}; From f629bc52a078bbdf75359f9f8bd2fbe23bdeac4c Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 27 Sep 2025 09:06:45 +0200 Subject: [PATCH 3/4] feat: pass the all network --- src/services/emulator/_runner.services.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/services/emulator/_runner.services.ts b/src/services/emulator/_runner.services.ts index ba6961a4..637063aa 100644 --- a/src/services/emulator/_runner.services.ts +++ b/src/services/emulator/_runner.services.ts @@ -213,7 +213,7 @@ const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfi const platform = config.runner?.platform; - const networkServices = config?.network?.services; + const network = config?.network; await execute({ command: runner, @@ -232,9 +232,7 @@ const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfi `${config.skylab.ports?.console ?? EMULATOR_SKYLAB.ports.console}:${EMULATOR_PORT_CONSOLE}` ] : []), - ...(nonNullish(networkServices) - ? ['-e', `NETWORK_SERVICES=${JSON.stringify(networkServices)}`] - : []), + ...(nonNullish(network) ? ['-e', `NETWORK=${JSON.stringify(network)}`] : []), '-v', `${volume}:/juno/.juno`, ...(nonNullish(configFile) && nonNullish(configFilePath) From a481407a2d61c507a9e4e461be5ea339d9efbea2 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 27 Sep 2025 11:09:08 +0200 Subject: [PATCH 4/4] feat: config update --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 92c2d036..8630f1ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@junobuild/admin": "^2.3.0", "@junobuild/cdn": "^1.3.2", "@junobuild/cli-tools": "^0.8.0", - "@junobuild/config": "^2.3.0-next-2025-09-26", + "@junobuild/config": "^2.3.0-next-2025-09-27.1", "@junobuild/config-loader": "^0.4.5", "@junobuild/core": "^2.2.0", "@junobuild/did-tools": "^0.3.3", @@ -1490,9 +1490,9 @@ } }, "node_modules/@junobuild/config": { - "version": "2.3.0-next-2025-09-26", - "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0-next-2025-09-26.tgz", - "integrity": "sha512-ir8kBLV0EhTRWShtDLlAsFxTaCUbT0FxUOaNIL9A2XrJGByOd9ux7yA+WgIME2Qs6BBahqq2lI7mdhwYkPWBCQ==", + "version": "2.3.0-next-2025-09-27.1", + "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0-next-2025-09-27.1.tgz", + "integrity": "sha512-2BHK8B0iDDNylkYfR4gjSREqUXhfBb9EJMZjQqDU60m803XBkxeHw8q6lQpcwsV94Qiahat9an9kMOCFcIcPmw==", "license": "MIT", "peerDependencies": { "@dfinity/zod-schemas": "*", @@ -7304,9 +7304,9 @@ } }, "@junobuild/config": { - "version": "2.3.0-next-2025-09-26", - "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0-next-2025-09-26.tgz", - "integrity": "sha512-ir8kBLV0EhTRWShtDLlAsFxTaCUbT0FxUOaNIL9A2XrJGByOd9ux7yA+WgIME2Qs6BBahqq2lI7mdhwYkPWBCQ==", + "version": "2.3.0-next-2025-09-27.1", + "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.3.0-next-2025-09-27.1.tgz", + "integrity": "sha512-2BHK8B0iDDNylkYfR4gjSREqUXhfBb9EJMZjQqDU60m803XBkxeHw8q6lQpcwsV94Qiahat9an9kMOCFcIcPmw==", "requires": {} }, "@junobuild/config-loader": { diff --git a/package.json b/package.json index 5d8aab8c..6c2a203f 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@junobuild/admin": "^2.3.0", "@junobuild/cdn": "^1.3.2", "@junobuild/cli-tools": "^0.8.0", - "@junobuild/config": "^2.3.0-next-2025-09-26", + "@junobuild/config": "^2.3.0-next-2025-09-27.1", "@junobuild/config-loader": "^0.4.5", "@junobuild/core": "^2.2.0", "@junobuild/did-tools": "^0.3.3",