diff --git a/plugins/nextjs-plugin/README.md b/plugins/nextjs-plugin/README.md index cd70b81..093118d 100644 --- a/plugins/nextjs-plugin/README.md +++ b/plugins/nextjs-plugin/README.md @@ -31,6 +31,8 @@ Those following environment variables are injected by this plugin: | NEXT_PUBLIC_INTERNET_IDENTITY_ID | `rdmx6-jaaaa-aaaaa-aaadq-cai` | `rdmx6-jaaaa-aaaaa-aaadq-cai` | | NEXT_PUBLIC_ICP_LEDGER_ID | `ryjl3-tyaaa-aaaaa-aaaba-cai` | `ryjl3-tyaaa-aaaaa-aaaba-cai` | | NEXT_PUBLIC_ICP_INDEX_ID | `qhbym-qaaaa-aaaaa-aaafq-cai` | `qhbym-qaaaa-aaaaa-aaafq-cai` | +| NEXT_PUBLIC_NNS_GOVERNANCE_ID | `rrkah-fqaaa-aaaaa-aaaaq-cai` | `rrkah-fqaaa-aaaaa-aaaaq-cai` | +| NEXT_PUBLIC_CMC_ID | `rkp4c-7iaaa-aaaaa-aaaca-cai` | `rkp4c-7iaaa-aaaaa-aaaca-cai` | > Variables prefixed with `NEXT_PUBLIC_` are clearly marked for browser availability, but they are injected into the environment ([documentation](https://nextjs.org/docs/pages/api-reference/next-config-js/env)) by the plugin. If you prefer to remove or change this prefix, it is possible using the option `prefix`. diff --git a/plugins/nextjs-plugin/src/index.spec.ts b/plugins/nextjs-plugin/src/index.spec.ts index 051d7bb..c862e3e 100644 --- a/plugins/nextjs-plugin/src/index.spec.ts +++ b/plugins/nextjs-plugin/src/index.spec.ts @@ -17,7 +17,9 @@ describe('withJuno', () => { icpIds: { internetIdentityId: 'ii-id', icpLedgerId: 'ledger-id', - icpIndexId: 'index-id' + icpIndexId: 'index-id', + nnsGovernanceId: 'nns-governance-id', + cmcId: 'cmc-id' }, container: 'http://localhost:1234' }); @@ -37,6 +39,8 @@ describe('withJuno', () => { NEXT_PUBLIC_INTERNET_IDENTITY_ID: 'ii-id', NEXT_PUBLIC_ICP_LEDGER_ID: 'ledger-id', NEXT_PUBLIC_ICP_INDEX_ID: 'index-id', + NEXT_PUBLIC_NNS_GOVERNANCE_ID: 'nns-governance-id', + NEXT_PUBLIC_CMC_ID: 'cmc-id', NEXT_PUBLIC_CONTAINER: 'http://localhost:1234' } }); diff --git a/plugins/nextjs-plugin/src/index.ts b/plugins/nextjs-plugin/src/index.ts index 04e5af0..4836882 100644 --- a/plugins/nextjs-plugin/src/index.ts +++ b/plugins/nextjs-plugin/src/index.ts @@ -53,6 +53,12 @@ export const withJuno = async (params?: { ...(icpIds?.icpIndexId !== undefined && { [`${prefix}ICP_INDEX_ID`]: icpIds.icpIndexId }), + ...(icpIds?.nnsGovernanceId !== undefined && { + [`${prefix}NNS_GOVERNANCE_ID`]: icpIds.nnsGovernanceId + }), + ...(icpIds?.cmcId !== undefined && { + [`${prefix}CMC_ID`]: icpIds.cmcId + }), ...(container !== undefined && { [`${prefix}CONTAINER`]: container }) diff --git a/plugins/plugin-tools/src/config.spec.ts b/plugins/plugin-tools/src/config.spec.ts index fa52f8c..0adffa5 100644 --- a/plugins/plugin-tools/src/config.spec.ts +++ b/plugins/plugin-tools/src/config.spec.ts @@ -10,11 +10,13 @@ import { useDockerContainer } from './config'; import { + CMC_ID, DOCKER_SATELLITE_ID, ICP_INDEX_ID, ICP_LEDGER_ID, INTERNET_IDENTITY_ID, - MODE_DEVELOPMENT + MODE_DEVELOPMENT, + NNS_GOVERNANCE_ID } from './constants'; import {JunoPluginError} from './error'; @@ -216,7 +218,9 @@ describe('config', () => { expect(icpIds()).toEqual({ internetIdentityId: INTERNET_IDENTITY_ID, icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID + icpIndexId: ICP_INDEX_ID, + nnsGovernanceId: NNS_GOVERNANCE_ID, + cmcId: CMC_ID }); }); }); diff --git a/plugins/plugin-tools/src/config.ts b/plugins/plugin-tools/src/config.ts index 11eaef6..935eb9f 100644 --- a/plugins/plugin-tools/src/config.ts +++ b/plugins/plugin-tools/src/config.ts @@ -5,12 +5,14 @@ import { type ConfigFilename } from '@junobuild/config-loader'; import { + CMC_ID, DOCKER_CONTAINER_URL, DOCKER_SATELLITE_ID, ICP_INDEX_ID, ICP_LEDGER_ID, INTERNET_IDENTITY_ID, - MODE_DEVELOPMENT + MODE_DEVELOPMENT, + NNS_GOVERNANCE_ID } from './constants'; import {JunoPluginError} from './error'; import type {ConfigArgs, IcpIds, JunoParams} from './types'; @@ -76,7 +78,9 @@ export const orbiterId = async (args: ConfigArgs): Promise = export const icpIds = (): IcpIds | undefined => ({ internetIdentityId: INTERNET_IDENTITY_ID, icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID + icpIndexId: ICP_INDEX_ID, + nnsGovernanceId: NNS_GOVERNANCE_ID, + cmcId: CMC_ID }); export const container = ({ diff --git a/plugins/plugin-tools/src/constants.ts b/plugins/plugin-tools/src/constants.ts index 75bc832..ba449a2 100644 --- a/plugins/plugin-tools/src/constants.ts +++ b/plugins/plugin-tools/src/constants.ts @@ -6,3 +6,5 @@ export const DOCKER_SATELLITE_ID = 'jx5yt-yyaaa-aaaal-abzbq-cai'; export const INTERNET_IDENTITY_ID = 'rdmx6-jaaaa-aaaaa-aaadq-cai'; export const ICP_LEDGER_ID = 'ryjl3-tyaaa-aaaaa-aaaba-cai'; export const ICP_INDEX_ID = 'qhbym-qaaaa-aaaaa-aaafq-cai'; +export const NNS_GOVERNANCE_ID = 'rrkah-fqaaa-aaaaa-aaaaq-cai'; +export const CMC_ID = 'rkp4c-7iaaa-aaaaa-aaaca-cai'; diff --git a/plugins/plugin-tools/src/init.spec.ts b/plugins/plugin-tools/src/init.spec.ts index ec431a8..8beb09d 100644 --- a/plugins/plugin-tools/src/init.spec.ts +++ b/plugins/plugin-tools/src/init.spec.ts @@ -2,12 +2,14 @@ import type {JunoConfig} from '@junobuild/config'; import * as configLoader from '@junobuild/config-loader'; import {type MockInstance, beforeEach, describe, expect, it, vi} from 'vitest'; import { + CMC_ID, DOCKER_CONTAINER_URL, DOCKER_SATELLITE_ID, ICP_INDEX_ID, ICP_LEDGER_ID, INTERNET_IDENTITY_ID, - MODE_DEVELOPMENT + MODE_DEVELOPMENT, + NNS_GOVERNANCE_ID } from './constants'; import {initConfig} from './init'; import type {ConfigArgs} from './types'; @@ -31,6 +33,14 @@ describe('init', () => { mode: 'production' }; + const expectedIcpIds = { + internetIdentityId: INTERNET_IDENTITY_ID, + icpLedgerId: ICP_LEDGER_ID, + icpIndexId: ICP_INDEX_ID, + nnsGovernanceId: NNS_GOVERNANCE_ID, + cmcId: CMC_ID + }; + let spyJunoConfigExist: MockInstance; let spyReadJunoConfig: MockInstance; @@ -55,11 +65,7 @@ describe('init', () => { expect(result).toEqual({ orbiterId: undefined, satelliteId: DOCKER_SATELLITE_ID, - icpIds: { - internetIdentityId: INTERNET_IDENTITY_ID, - icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID - }, + icpIds: expectedIcpIds, container: DOCKER_CONTAINER_URL }); @@ -73,11 +79,7 @@ describe('init', () => { expect(result).toEqual({ satelliteId: 'mock-satellite-id', orbiterId: 'mock-orbiter-id', - icpIds: { - internetIdentityId: INTERNET_IDENTITY_ID, - icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID - }, + icpIds: expectedIcpIds, container: undefined }); @@ -97,11 +99,7 @@ describe('init', () => { expect(result).toEqual({ orbiterId: undefined, satelliteId: DOCKER_SATELLITE_ID, - icpIds: { - internetIdentityId: INTERNET_IDENTITY_ID, - icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID - }, + icpIds: expectedIcpIds, container: DOCKER_CONTAINER_URL }); @@ -120,11 +118,7 @@ describe('init', () => { expect(result).toEqual({ satelliteId: DOCKER_SATELLITE_ID, orbiterId: undefined, - icpIds: { - internetIdentityId: INTERNET_IDENTITY_ID, - icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID - }, + icpIds: expectedIcpIds, container: DOCKER_CONTAINER_URL }); @@ -141,11 +135,7 @@ describe('init', () => { expect(result).toEqual({ satelliteId: 'mock-satellite-id', orbiterId: 'mock-orbiter-id', - icpIds: { - internetIdentityId: INTERNET_IDENTITY_ID, - icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID - }, + icpIds: expectedIcpIds, container: undefined }); @@ -167,11 +157,7 @@ describe('init', () => { expect(result).toEqual({ satelliteId: 'custom-docker-id', orbiterId: undefined, - icpIds: { - internetIdentityId: INTERNET_IDENTITY_ID, - icpLedgerId: ICP_LEDGER_ID, - icpIndexId: ICP_INDEX_ID - }, + icpIds: expectedIcpIds, container: DOCKER_CONTAINER_URL }); diff --git a/plugins/plugin-tools/src/types.ts b/plugins/plugin-tools/src/types.ts index c69eac1..1f302ee 100644 --- a/plugins/plugin-tools/src/types.ts +++ b/plugins/plugin-tools/src/types.ts @@ -72,4 +72,16 @@ export interface IcpIds { * @type {string} */ icpIndexId: string; + + /** + * The NNS Governance ID. + * @type {string} + */ + nnsGovernanceId: string; + + /** + * The CMC (Cycles Minting) ID. + * @type {string} + */ + cmcId: string; } diff --git a/plugins/vite-plugin/README.md b/plugins/vite-plugin/README.md index 7069464..e3c4160 100644 --- a/plugins/vite-plugin/README.md +++ b/plugins/vite-plugin/README.md @@ -31,6 +31,8 @@ Those following environment variables are injected by this plugin: | VITE_INTERNET_IDENTITY_ID | `rdmx6-jaaaa-aaaaa-aaadq-cai` | `rdmx6-jaaaa-aaaaa-aaadq-cai` | | VITE_ICP_LEDGER_ID | `ryjl3-tyaaa-aaaaa-aaaba-cai` | `ryjl3-tyaaa-aaaaa-aaaba-cai` | | VITE_ICP_INDEX_ID | `qhbym-qaaaa-aaaaa-aaafq-cai` | `qhbym-qaaaa-aaaaa-aaafq-cai` | +| VITE_NNS_GOVERNANCE_ID | `rrkah-fqaaa-aaaaa-aaaaq-cai` | `rrkah-fqaaa-aaaaa-aaaaq-cai` | +| VITE_CMC_ID | `rkp4c-7iaaa-aaaaa-aaaca-cai` | `rkp4c-7iaaa-aaaaa-aaaca-cai` | > `VITE_` is the default prefix used by Vite. It can be customized as described in Vite's [documentation](https://vitejs.dev/guide/env-and-mode). diff --git a/plugins/vite-plugin/src/index.spec.ts b/plugins/vite-plugin/src/index.spec.ts index 063112c..1f4804d 100644 --- a/plugins/vite-plugin/src/index.spec.ts +++ b/plugins/vite-plugin/src/index.spec.ts @@ -15,7 +15,9 @@ describe('vite-plugin-juno', () => { icpIds: { internetIdentityId: 'ii-id', icpLedgerId: 'ledger-id', - icpIndexId: 'index-id' + icpIndexId: 'index-id', + nnsGovernanceId: 'nns-governance-id', + cmcId: 'cmc-id' }, container: 'http://localhost:1234' }); @@ -40,6 +42,8 @@ describe('vite-plugin-juno', () => { 'import.meta.env.VITE_INTERNET_IDENTITY_ID': JSON.stringify('ii-id'), 'import.meta.env.VITE_ICP_LEDGER_ID': JSON.stringify('ledger-id'), 'import.meta.env.VITE_ICP_INDEX_ID': JSON.stringify('index-id'), + 'import.meta.env.VITE_NNS_GOVERNANCE_ID': JSON.stringify('nns-governance-id'), + 'import.meta.env.VITE_CMC_ID': JSON.stringify('cmc-id'), 'import.meta.env.VITE_CONTAINER': JSON.stringify('http://localhost:1234') } }); diff --git a/plugins/vite-plugin/src/index.ts b/plugins/vite-plugin/src/index.ts index 530da35..9d3dfaa 100644 --- a/plugins/vite-plugin/src/index.ts +++ b/plugins/vite-plugin/src/index.ts @@ -38,6 +38,12 @@ export default function Juno(params?: JunoParams): Plugin { ...(icpIds?.icpIndexId !== undefined && { [`${prefix}ICP_INDEX_ID`]: JSON.stringify(icpIds.icpIndexId) }), + ...(icpIds?.nnsGovernanceId !== undefined && { + [`${prefix}NNS_GOVERNANCE_ID`]: JSON.stringify(icpIds.nnsGovernanceId) + }), + ...(icpIds?.cmcId !== undefined && { + [`${prefix}CMC_ID`]: JSON.stringify(icpIds.cmcId) + }), ...(container !== undefined && { [`${prefix}CONTAINER`]: JSON.stringify(container) })