feat(core): add activate key (#30250)

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #

---------

Co-authored-by: Jason Jean <jasonjean1993@gmail.com>
This commit is contained in:
Jonathan Cammisuli 2025-03-05 16:23:49 -05:00 committed by GitHub
parent 7da48d6471
commit 5b034965d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 286 additions and 256 deletions

View File

@ -78,11 +78,12 @@
"@nx/eslint-plugin": "20.5.0-rc.0",
"@nx/jest": "20.5.0-rc.0",
"@nx/js": "20.5.0-rc.0",
"@nx/key": "1.3.0-beta.1",
"@nx/next": "20.5.0-rc.0",
"@nx/playwright": "20.5.0-rc.0",
"@nx/powerpack-conformance": "1.2.5",
"@nx/powerpack-enterprise-cloud": "1.2.5",
"@nx/powerpack-license": "1.2.5",
"@nx/powerpack-conformance": "1.3.0-beta.1",
"@nx/powerpack-enterprise-cloud": "1.3.0-beta.1",
"@nx/powerpack-license": "1.3.0-beta.1",
"@nx/react": "20.5.0-rc.0",
"@nx/rsbuild": "20.5.0-rc.0",
"@nx/rspack": "20.5.0-rc.0",

View File

@ -131,6 +131,7 @@
"@nx/nx-win32-arm64-msvc",
"@nx/nx-freebsd-x64",
"@nx/powerpack-license",
"@nx/key",
// Powerpack plugin conditionally available dynamically at runtime
"@nx/powerpack-conformance"
]

View File

@ -0,0 +1,37 @@
import { workspaceRoot } from '../../utils/workspace-root';
import { ActivateKeyOptions } from './command-object';
import { prompt } from 'enquirer';
import { execSync } from 'child_process';
import { getPackageManagerCommand } from '../../utils/package-manager';
export async function handleActivateKey(options: ActivateKeyOptions) {
const key =
options.key ??
(await prompt({
type: 'input',
name: 'key',
message: 'Enter your key',
}));
const { activateNxKey } = await requireNxKey();
activateNxKey(workspaceRoot, key);
}
async function requireNxKey(): Promise<any> {
// @ts-ignore
return import('@nx/key').catch(async (e) => {
if ('code' in e && e.code === 'MODULE_NOT_FOUND') {
try {
execSync(`${getPackageManagerCommand().addDev} @nx/key@latest`, {
windowsHide: false,
});
// @ts-ignore
return await import('@nx/key');
} catch (e) {
throw new Error(
'Failed to install @nx/key. Please install @nx/key and try again.'
);
}
}
});
}

View File

@ -2,16 +2,14 @@ import { CommandModule } from 'yargs';
import { withVerbose } from '../yargs-utils/shared-options';
import { handleErrors } from '../../utils/handle-errors';
export interface ActivatePowerpackOptions {
license: string;
export interface ActivateKeyOptions {
key: string;
verbose: boolean;
}
export const yargsActivatePowerpackCommand: CommandModule<
{},
ActivatePowerpackOptions
> = {
command: 'activate-powerpack <license>',
export const yargsActivateKeyCommand: CommandModule<{}, ActivateKeyOptions> = {
command: 'activate-key <key>',
aliases: ['activate-powerpack'],
describe: false,
// describe: 'Activate a Nx Powerpack license.',
builder: (yargs) =>
@ -20,19 +18,14 @@ export const yargsActivatePowerpackCommand: CommandModule<
'strip-dashed': true,
'unknown-options-as-args': true,
})
.positional('license', {
.positional('key', {
type: 'string',
description: 'This is a License Key for Nx Powerpack.',
description: 'This is a key for Nx.',
})
.example(
'$0 activate-powerpack <license key>',
'Activate a Nx Powerpack license'
),
.example('$0 activate-key <key>', 'Activate a Nx key'),
handler: async (args) => {
const exitCode = await handleErrors(args.verbose as boolean, async () => {
return (await import('./activate-powerpack')).handleActivatePowerpack(
args
);
return (await import('./activate-key')).handleActivateKey(args);
});
process.exit(exitCode);
},

View File

@ -1,42 +0,0 @@
import { workspaceRoot } from '../../utils/workspace-root';
import { ActivatePowerpackOptions } from './command-object';
import { prompt } from 'enquirer';
import { execSync } from 'child_process';
import { getPackageManagerCommand } from '../../utils/package-manager';
export async function handleActivatePowerpack(
options: ActivatePowerpackOptions
) {
const license =
options.license ??
(await prompt({
type: 'input',
name: 'license',
message: 'Enter your License Key',
}));
const { activatePowerpack } = await requirePowerpack();
activatePowerpack(workspaceRoot, license);
}
async function requirePowerpack(): Promise<any> {
// @ts-ignore
return import('@nx/powerpack-license').catch(async (e) => {
if ('code' in e && e.code === 'MODULE_NOT_FOUND') {
try {
execSync(
`${getPackageManagerCommand().addDev} @nx/powerpack-license@latest`,
{
windowsHide: false,
}
);
// @ts-ignore
return await import('@nx/powerpack-license');
} catch (e) {
throw new Error(
'Failed to install @nx/powerpack-license. Please install @nx/powerpack-license and try again.'
);
}
}
});
}

View File

@ -1,7 +1,7 @@
import * as chalk from 'chalk';
import * as yargs from 'yargs';
import { yargsActivatePowerpackCommand } from './activate-powerpack/command-object';
import { yargsActivateKeyCommand } from './activate-key/command-object';
import {
yargsAffectedBuildCommand,
yargsAffectedCommand,
@ -65,7 +65,7 @@ export const commandsObject = yargs
.parserConfiguration(parserConfiguration)
.usage(chalk.bold('Smart Monorepos · Fast CI'))
.demandCommand(1, '')
.command(yargsActivatePowerpackCommand)
.command(yargsActivateKeyCommand)
.command(yargsAddCommand)
.command(yargsAffectedBuildCommand)
.command(yargsAffectedCommand)
@ -121,7 +121,7 @@ function createMissingConformanceCommand(
output.error({
title: `${command} is not available`,
bodyLines: [
`In order to use the \`nx ${command}\` command you must have an active Powerpack license and the \`@nx/powerpack-conformance\` plugin installed.`,
`In order to use the \`nx ${command}\` command you must have an active Nx key and the \`@nx/conformance\` plugin installed.`,
'',
'To learn more, visit https://nx.dev/nx-enterprise/powerpack/conformance',
],
@ -133,7 +133,13 @@ function createMissingConformanceCommand(
function resolveConformanceCommandObject() {
try {
const { yargsConformanceCommand } = require('@nx/powerpack-conformance');
const { yargsConformanceCommand } = (() => {
try {
return require('@nx/powerpack-conformance');
} catch {
return require('@nx/conformance');
}
})();
return yargsConformanceCommand;
} catch {
return createMissingConformanceCommand('conformance');
@ -142,9 +148,13 @@ function resolveConformanceCommandObject() {
function resolveConformanceCheckCommandObject() {
try {
const {
yargsConformanceCheckCommand,
} = require('@nx/powerpack-conformance');
const { yargsConformanceCheckCommand } = (() => {
try {
return require('@nx/powerpack-conformance');
} catch {
return require('@nx/conformance');
}
})();
return yargsConformanceCheckCommand;
} catch {
return createMissingConformanceCommand('conformance:check');

View File

@ -24,10 +24,10 @@ import { NxJsonConfiguration, readNxJson } from '../../config/nx-json';
import { ProjectGraph } from '../../config/project-graph';
import { ProjectGraphError } from '../../project-graph/error-types';
import {
getPowerpackLicenseInformation,
NxPowerpackNotInstalledError,
} from '../../utils/powerpack';
import type { PowerpackLicense } from '@nx/powerpack-license';
getNxKeyInformation,
NxKeyNotInstalledError,
} from '../../utils/nx-key';
import { type NxKey } from '@nx/key';
const nxPackageJson = readJsonFile<typeof import('../../../package.json')>(
join(__dirname, '../../../package.json')
@ -64,8 +64,8 @@ export async function reportHandler() {
const {
pm,
pmVersion,
powerpackLicense,
powerpackError,
nxKey,
nxKeyError,
localPlugins,
powerpackPlugins,
communityPlugins,
@ -97,49 +97,51 @@ export async function reportHandler() {
);
});
if (powerpackLicense) {
if (nxKey) {
bodyLines.push('');
bodyLines.push(LINE_SEPARATOR);
bodyLines.push(chalk.green('Nx Powerpack'));
const licenseExpiryDate = new Date(
(powerpackLicense.realExpiresAt ?? powerpackLicense.expiresAt) * 1000
);
bodyLines.push(chalk.green('Nx key licensed packages'));
bodyLines.push(
`Licensed to ${powerpackLicense.organizationName} for ${
powerpackLicense.seatCount
} user${powerpackLicense.seatCount > 1 ? 's' : ''} in ${
powerpackLicense.workspaceCount === 9999
`Licensed to ${nxKey.organizationName} for ${nxKey.seatCount} user${
nxKey.seatCount > 1 ? 's' : ''
} in ${
nxKey.workspaceCount === 9999
? 'an unlimited number of'
: powerpackLicense.workspaceCount
} workspace${powerpackLicense.workspaceCount > 1 ? 's' : ''}.`
: nxKey.workspaceCount
} workspace${nxKey.workspaceCount > 1 ? 's' : ''}.`
);
// license is not expired
if (licenseExpiryDate.getTime() >= Date.now()) {
if ('perpetualNxVersion' in powerpackLicense) {
bodyLines.push(
`License expires on ${licenseExpiryDate.toLocaleDateString()}, but will continue to work with Nx ${
powerpackLicense.perpetualNxVersion
} and below.`
);
if (nxKey.realExpiresAt || nxKey.expiresAt) {
const licenseExpiryDate = new Date(
(nxKey.realExpiresAt ?? nxKey.expiresAt) * 1000
);
// license is not expired
if (licenseExpiryDate.getTime() >= Date.now()) {
if ('perpetualNxVersion' in nxKey) {
bodyLines.push(
`License expires on ${licenseExpiryDate.toLocaleDateString()}, but will continue to work with Nx ${
nxKey.perpetualNxVersion
} and below.`
);
} else {
bodyLines.push(
`License expires on ${licenseExpiryDate.toLocaleDateString()}.`
);
}
} else {
bodyLines.push(
`License expires on ${licenseExpiryDate.toLocaleDateString()}.`
);
}
} else {
if ('perpetualNxVersion' in powerpackLicense) {
bodyLines.push(
`License expired on ${licenseExpiryDate.toLocaleDateString()}, but will continue to work with Nx ${
powerpackLicense.perpetualNxVersion
} and below.`
);
} else {
bodyLines.push(
`License expired on ${licenseExpiryDate.toLocaleDateString()}.`
);
if ('perpetualNxVersion' in nxKey) {
bodyLines.push(
`License expired on ${licenseExpiryDate.toLocaleDateString()}, but will continue to work with Nx ${
nxKey.perpetualNxVersion
} and below.`
);
} else {
bodyLines.push(
`License expired on ${licenseExpiryDate.toLocaleDateString()}.`
);
}
}
}
@ -159,11 +161,11 @@ export async function reportHandler() {
);
}
bodyLines.push('');
} else if (powerpackError) {
} else if (nxKeyError) {
bodyLines.push('');
bodyLines.push(chalk.red('Nx Powerpack'));
bodyLines.push(chalk.red('Nx key'));
bodyLines.push(LINE_SEPARATOR);
bodyLines.push(powerpackError.message);
bodyLines.push(nxKeyError.message);
bodyLines.push('');
}
@ -226,8 +228,8 @@ export async function reportHandler() {
export interface ReportData {
pm: PackageManager;
pmVersion: string;
powerpackLicense: PowerpackLicense | null;
powerpackError: Error | null;
nxKey: NxKey | null;
nxKeyError: Error | null;
powerpackPlugins: PackageJson[];
localPlugins: string[];
communityPlugins: PackageJson[];
@ -276,20 +278,20 @@ export async function getReportData(): Promise<ReportData> {
const native = isNativeAvailable();
let powerpackLicense = null;
let powerpackError = null;
let nxKey = null;
let nxKeyError = null;
try {
powerpackLicense = await getPowerpackLicenseInformation();
nxKey = await getNxKeyInformation();
} catch (e) {
if (!(e instanceof NxPowerpackNotInstalledError)) {
powerpackError = e;
if (!(e instanceof NxKeyNotInstalledError)) {
nxKeyError = e;
}
}
return {
pm,
powerpackLicense,
powerpackError,
nxKey,
nxKeyError,
powerpackPlugins,
pmVersion,
localPlugins,
@ -393,7 +395,9 @@ export function findMisalignedPackagesForPackage(
export function findInstalledPowerpackPlugins(): PackageJson[] {
const installedPlugins = findInstalledPlugins();
return installedPlugins.filter((dep) =>
new RegExp('@nx/powerpack*').test(dep.name)
new RegExp(
'@nx/powerpack*|@nx/(.+)-cache|@nx/(conformance|owners|enterprise*)'
).test(dep.name)
);
}

View File

@ -213,32 +213,40 @@ export class DbCache {
}
} else {
return (
(await this.getPowerpackS3Cache()) ??
(await this.getPowerpackSharedCache()) ??
(await this.getPowerpackGcsCache()) ??
(await this.getPowerpackAzureCache()) ??
(await this.getS3Cache()) ??
(await this.getSharedCache()) ??
(await this.getGcsCache()) ??
(await this.getAzureCache()) ??
null
);
}
}
private getPowerpackS3Cache(): Promise<RemoteCacheV2 | null> {
return this.getPowerpackCache('@nx/powerpack-s3-cache');
private async getS3Cache(): Promise<RemoteCacheV2 | null> {
const cache = await this.resolveRemoteCache('@nx/s3-cache');
if (cache) return cache;
return this.resolveRemoteCache('@nx/powerpack-s3-cache');
}
private getPowerpackSharedCache(): Promise<RemoteCacheV2 | null> {
return this.getPowerpackCache('@nx/powerpack-shared-fs-cache');
private async getSharedCache(): Promise<RemoteCacheV2 | null> {
const cache = await this.resolveRemoteCache('@nx/shared-fs-cache');
if (cache) return cache;
return this.resolveRemoteCache('@nx/powerpack-shared-fs-cache');
}
private getPowerpackGcsCache(): Promise<RemoteCacheV2 | null> {
return this.getPowerpackCache('@nx/powerpack-gcs-cache');
private async getGcsCache(): Promise<RemoteCacheV2 | null> {
const cache = await this.resolveRemoteCache('@nx/gcs-cache');
if (cache) return cache;
return this.resolveRemoteCache('@nx/powerpack-gcs-cache');
}
private getPowerpackAzureCache(): Promise<RemoteCacheV2 | null> {
return this.getPowerpackCache('@nx/powerpack-azure-cache');
private async getAzureCache(): Promise<RemoteCacheV2 | null> {
const cache = await this.resolveRemoteCache('@nx/azure-cache');
if (cache) return cache;
return this.resolveRemoteCache('@nx/powerpack-azure-cache');
}
private async getPowerpackCache(pkg: string): Promise<RemoteCacheV2 | null> {
private async resolveRemoteCache(pkg: string): Promise<RemoteCacheV2 | null> {
let getRemoteCache = null;
try {
getRemoteCache = (await import(this.resolvePackage(pkg))).getRemoteCache;

View File

@ -59,7 +59,7 @@ import { TasksRunner, TaskStatus } from './tasks-runner';
import { shouldStreamOutput } from './utils';
import chalk = require('chalk');
import type { Observable } from 'rxjs';
import { printPowerpackLicense } from '../utils/powerpack';
import { printNxKey } from '../utils/nx-key';
import {
runPostTasksExecution,
runPreTasksExecution,
@ -273,7 +273,7 @@ export async function runCommandForTasks(
await renderIsDone;
await printPowerpackLicense();
await printNxKey();
return taskResults;
}

View File

@ -2,13 +2,13 @@ import { logger } from './logger';
import { getPackageManagerCommand } from './package-manager';
import { workspaceRoot } from './workspace-root';
export async function printPowerpackLicense() {
export async function printNxKey() {
try {
const { organizationName, seatCount, workspaceCount } =
await getPowerpackLicenseInformation();
await getNxKeyInformation();
logger.log(
`Nx Powerpack Licensed to ${organizationName} for ${seatCount} user${
`Nx key licensed to ${organizationName} for ${seatCount} user${
seatCount > 1 ? 's' : ''
} in ${
workspaceCount === 9999 ? 'an unlimited number of' : workspaceCount
@ -17,7 +17,7 @@ export async function printPowerpackLicense() {
} catch {}
}
export async function getPowerpackLicenseInformation() {
export async function getNxKeyInformation() {
try {
const {
getPowerpackLicenseInformation,
@ -29,19 +29,26 @@ export async function getPowerpackLicenseInformation() {
getPowerpackLicenseInformationAsync ?? getPowerpackLicenseInformation
)(workspaceRoot);
} catch (e) {
if ('code' in e && e.code === 'MODULE_NOT_FOUND') {
throw new NxPowerpackNotInstalledError(e);
try {
const { getNxKeyInformationAsync } = (await import(
'@nx/key'
)) as typeof import('@nx/key');
return getNxKeyInformationAsync(workspaceRoot);
} catch (e) {
if ('code' in e && e.code === 'MODULE_NOT_FOUND') {
throw new NxKeyNotInstalledError(e);
}
throw e;
}
throw e;
}
}
export class NxPowerpackNotInstalledError extends Error {
export class NxKeyNotInstalledError extends Error {
constructor(e: Error) {
super(
`The "@nx/powerpack-license" package is needed to use Nx Powerpack enabled features. Please install the @nx/powerpack-license with ${
`The "@nx/key" package is needed to use Nx key enabled features. Please install it with ${
getPackageManagerCommand().addDev
} @nx/powerpack-license`,
} @nx/key`,
{ cause: e }
);
}

229
pnpm-lock.yaml generated
View File

@ -319,6 +319,9 @@ importers:
'@nx/js':
specifier: 20.5.0-rc.0
version: 20.5.0-rc.0(@babel/traverse@7.26.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))
'@nx/key':
specifier: 1.3.0-beta.1
version: 1.3.0-beta.1
'@nx/next':
specifier: 20.5.0-rc.0
version: 20.5.0-rc.0(qzgs3vs46mrxisyllthod36me4)
@ -326,14 +329,14 @@ importers:
specifier: 20.5.0-rc.0
version: 20.5.0-rc.0(@babel/traverse@7.26.9)(@playwright/test@1.47.1)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))
'@nx/powerpack-conformance':
specifier: 1.2.5
version: 1.2.5(@nx/js@20.5.0-rc.0(@babel/traverse@7.26.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))
specifier: 1.3.0-beta.1
version: 1.3.0-beta.1(@nx/js@20.5.0-rc.0(@babel/traverse@7.26.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))
'@nx/powerpack-enterprise-cloud':
specifier: 1.2.5
version: 1.2.5(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))
specifier: 1.3.0-beta.1
version: 1.3.0-beta.1(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))
'@nx/powerpack-license':
specifier: 1.2.5
version: 1.2.5
specifier: 1.3.0-beta.1
version: 1.3.0-beta.1
'@nx/react':
specifier: 20.5.0-rc.0
version: 20.5.0-rc.0(@babel/traverse@7.26.9)(@rspack/core@1.2.6(@swc/helpers@0.5.11))(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(@zkochan/js-yaml@0.0.7)(bufferutil@4.0.7)(esbuild@0.25.0)(eslint@8.57.0)(next@14.2.16(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.55.0))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.88.0))(webpack@5.88.0(@swc/core@1.5.7(@swc/helpers@0.5.11))(esbuild@0.25.0)(webpack-cli@5.1.4))
@ -5448,6 +5451,64 @@ packages:
verdaccio:
optional: true
'@nx/key-darwin-arm64@1.3.0-beta.1':
resolution: {integrity: sha512-ZD2swIWiThcGTfleOvbTOaj2oHOmJexfjcGSigwbLy2hjUpcGZD9hnP7mkwYqqfyvvfF+vNZmY3bpKDvcPjCCg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@nx/key-darwin-x64@1.3.0-beta.1':
resolution: {integrity: sha512-+umfBroguGQ2vHmWg7J3VzHr72AXS41XpjtmgLH1dV7/rYPfE7anppM8kQb1ERLmmx3IMCMIK4S0f9Htgaflbw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@nx/key-linux-arm-gnueabihf@1.3.0-beta.1':
resolution: {integrity: sha512-6v7PL6bsKN5F9/WP0MwSuRt/zXH2SoEzMb3usompHSQH8Z/XpKAWi07Sq6ItPRWuIMiZdxZmt9IF0EDD0SZF7w==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@nx/key-linux-arm64-gnu@1.3.0-beta.1':
resolution: {integrity: sha512-eLX9c6fr8GOHqphXXB+LlBLPCIlwX/lTMi2DZSBbXcghCIlZcZErt+v7hurPPywQ/3+eh5YJdrUARr2vXuA04w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/key-linux-arm64-musl@1.3.0-beta.1':
resolution: {integrity: sha512-lK5nqCeoVxeXmImVpUDDm0lpRJhyrb27P/Gw6Od3pbh5hIrMXzz3EX4FgITsH0SJwooIERY5R0m8UZxDEsZPXw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/key-linux-x64-gnu@1.3.0-beta.1':
resolution: {integrity: sha512-MmBhQTXLHhJPE7YuIp3eHIuMS2D26mYYFdkz8cTuDuQZoNZdFw/yQ1AG72LZkO7YhStPJ2OO3lUKk9FreKoqTQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/key-linux-x64-musl@1.3.0-beta.1':
resolution: {integrity: sha512-oQeW1Fq1ycW+qsK/Pcy/D+f24elkBA1ruRl+c3QM/+rn82AjAhQbG6HHZXVtVxJMO6zL3670JS4bQ/CJgBEnkA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/key-win32-arm64-msvc@1.3.0-beta.1':
resolution: {integrity: sha512-exytxC8FpS723c1WqS3IhFJvsgKLzqr4bY5IGUTWnkyOF1CxbqxmzONCxdHInPSVhUMbDScHe/qHRm8NUZyOKA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@nx/key-win32-x64-msvc@1.3.0-beta.1':
resolution: {integrity: sha512-fkhNQnNI/HJ04cD/Sa8IY1WEilbVfhQU2rAg4qbgHBl6vq4gMGTIl/hlUWDwxCx5VvmRa/gMRj/J7pBBoJSubA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@nx/key@1.3.0-beta.1':
resolution: {integrity: sha512-lmpC0GMpd9SAO7W1sIJZHm8e9BYBwj4x/LWhzE+b4GaYHvhFPJhoS6L86Bglhip/wVfUgm6TbQ8o3DT+Iy3bVw==}
engines: {node: '>= 10'}
'@nx/module-federation@20.5.0-rc.0':
resolution: {integrity: sha512-djY0X5TfUaHcjKsycyNiIGVfFd2kvDdNUNFY2WCBUZT2MuS+VmwJt77DjO31HVWsWJinf/sa1GKu7WNGS5+Zdw==}
peerDependencies:
@ -5526,74 +5587,20 @@ packages:
'@playwright/test':
optional: true
'@nx/powerpack-conformance@1.2.5':
resolution: {integrity: sha512-ns4ecJctMKGZlADCgfQmDV59UrzK+3TfhTrV+MW4l+pUn3PFVKGCbN9Xw1fDjv7a5c1TXKX6PaPu7iLhZKyagQ==}
'@nx/powerpack-conformance@1.3.0-beta.1':
resolution: {integrity: sha512-knzWINb+vvw8MBYh3RNjb64T94yfwe+lipgmAWdV3cE+qkQ4cSurSJ99HZt219YP/POVywlOcqj23wlu++i6qg==}
hasBin: true
peerDependencies:
'@nx/js': '>= 18 < 21'
nx: '>= 18 < 21'
'@nx/powerpack-enterprise-cloud@1.2.5':
resolution: {integrity: sha512-R/L4/9maurKMcrIcofuxCP2Gv9UoYUED+rVaQbHg1pgmekR7JCQYe5wbPKTMIUugVAWWUzhvLRq3+tetvHvjww==}
'@nx/powerpack-enterprise-cloud@1.3.0-beta.1':
resolution: {integrity: sha512-E7wEaIWPiuYWvA/xAIj+iOtbznBkoCbytGh/hHSI6/WitXkSbBJecQquOwbthiHSiScIGIEw7frMqjwgK0b+eQ==}
peerDependencies:
nx: '>= 18 < 21'
'@nx/powerpack-license-darwin-arm64@1.2.5':
resolution: {integrity: sha512-napAXiIPNVt9Na6AM74ngBppcg2VYEpZPna1y1bxXtV++BufXk+uJ5JfKiey3Z/TWi+mnJsfyxfiJH42T13Xmg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@nx/powerpack-license-darwin-x64@1.2.5':
resolution: {integrity: sha512-EKIq0N0S+QJtgkX/rgI5BRqNqonfYsKQE3UUYbZjU4I2s21zaM4poCkLCjT4wLdW6v0DvitYx/URpyq0GCXVOw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@nx/powerpack-license-linux-arm-gnueabihf@1.2.5':
resolution: {integrity: sha512-PRbqeqMm68QmelzGO89XsHIf+lVrAzQPu2yd92Y60XLGJqE/Z0hHV//B0lB0l0gtQyZU/IjbOD93VHp71bEM1A==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@nx/powerpack-license-linux-arm64-gnu@1.2.5':
resolution: {integrity: sha512-Tc4sBymzjyOPj//me7ILjdupM8bZifjZyOn1i99NciQn1eDf7ibRzf8l15X39/KfYaYZlAnFKpyvWPcAC72ofw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/powerpack-license-linux-arm64-musl@1.2.5':
resolution: {integrity: sha512-pSRd+nz7mC+2MfqmGEjz01IQUJH8J3KsnRx1MJP08qobRhjiNqvQqI42kLBu1ivaj14EhlAYxdmaREePnVOYKg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/powerpack-license-linux-x64-gnu@1.2.5':
resolution: {integrity: sha512-bLjB1QYS1f7Jm83xBjM2pcciMzhWK/T08+B/NbP++ifP9HkTAzvkygswHAUUKsGZbP3Q2nvia8r+CQGppJ5kqg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/powerpack-license-linux-x64-musl@1.2.5':
resolution: {integrity: sha512-DLN7xbZVQFW4CHXTJ+fFH+z4jOdsOX4FzhhfK8on3phezJj0HCDfl9/SHzYyvpvQyzrgyF07AeKcx6ffCrrFdw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/powerpack-license-win32-arm64-msvc@1.2.5':
resolution: {integrity: sha512-XO3djXr2Op8uBFs3i5I5ZJM3B/2wew/O+2JKaiGdkfCqziDMk6rBmKqDHKjQtQn8HqXHvDgBItwjo7AWyfiZBQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@nx/powerpack-license-win32-x64-msvc@1.2.5':
resolution: {integrity: sha512-DKM7giepoqoy1TXuB21pAqolLlW6KKY1NRyr9sf4a0LnUtFbba/Se4lrAUVa/xbVJgyOziz2CICkSBGWYp29jw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@nx/powerpack-license@1.2.5':
resolution: {integrity: sha512-Hqq+ynF76+CQ1HrezEKXAxoByWCnY1W9aSF245zjr/f2gzJj+/U/LAU0mgxGBqm0ZJ9ozxtPCD/CHrah9LqIsw==}
'@nx/powerpack-license@1.3.0-beta.1':
resolution: {integrity: sha512-ZWrDJA+sZxauTeA6yKVs/+IxZd0HBi4s63dFbjB0gqSlcQzMXT1DG7dFogG1VP+G61s1ndXqG5KSvtGAzjyXpg==}
engines: {node: '>= 10'}
'@nx/react@20.5.0-rc.0':
@ -23664,6 +23671,47 @@ snapshots:
- supports-color
- typescript
'@nx/key-darwin-arm64@1.3.0-beta.1':
optional: true
'@nx/key-darwin-x64@1.3.0-beta.1':
optional: true
'@nx/key-linux-arm-gnueabihf@1.3.0-beta.1':
optional: true
'@nx/key-linux-arm64-gnu@1.3.0-beta.1':
optional: true
'@nx/key-linux-arm64-musl@1.3.0-beta.1':
optional: true
'@nx/key-linux-x64-gnu@1.3.0-beta.1':
optional: true
'@nx/key-linux-x64-musl@1.3.0-beta.1':
optional: true
'@nx/key-win32-arm64-msvc@1.3.0-beta.1':
optional: true
'@nx/key-win32-x64-msvc@1.3.0-beta.1':
optional: true
'@nx/key@1.3.0-beta.1':
dependencies:
'@napi-rs/wasm-runtime': 0.2.4
optionalDependencies:
'@nx/key-darwin-arm64': 1.3.0-beta.1
'@nx/key-darwin-x64': 1.3.0-beta.1
'@nx/key-linux-arm-gnueabihf': 1.3.0-beta.1
'@nx/key-linux-arm64-gnu': 1.3.0-beta.1
'@nx/key-linux-arm64-musl': 1.3.0-beta.1
'@nx/key-linux-x64-gnu': 1.3.0-beta.1
'@nx/key-linux-x64-musl': 1.3.0-beta.1
'@nx/key-win32-arm64-msvc': 1.3.0-beta.1
'@nx/key-win32-x64-msvc': 1.3.0-beta.1
'@nx/module-federation@20.5.0-rc.0(@babel/traverse@7.26.9)(@rspack/core@1.2.6(@swc/helpers@0.5.11))(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(bufferutil@4.0.7)(esbuild@0.25.0)(next@14.2.16(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.55.0))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.88.0))':
dependencies:
'@module-federation/enhanced': 0.9.1(@rspack/core@1.2.6(@swc/helpers@0.5.11))(bufferutil@4.0.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(webpack@5.88.0(@swc/core@1.5.7(@swc/helpers@0.5.11))(esbuild@0.25.0)(webpack-cli@5.1.4))
@ -23804,11 +23852,11 @@ snapshots:
- typescript
- verdaccio
'@nx/powerpack-conformance@1.2.5(@nx/js@20.5.0-rc.0(@babel/traverse@7.26.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))':
'@nx/powerpack-conformance@1.3.0-beta.1(@nx/js@20.5.0-rc.0(@babel/traverse@7.26.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))':
dependencies:
'@nx/devkit': 20.2.2(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))
'@nx/js': 20.5.0-rc.0(@babel/traverse@7.26.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))
'@nx/powerpack-license': 1.2.5
'@nx/powerpack-license': 1.3.0-beta.1
ajv: 8.17.1
esbuild: 0.21.5
nx: 20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))
@ -23816,53 +23864,16 @@ snapshots:
semver: 7.5.4
yargs: 17.7.2
'@nx/powerpack-enterprise-cloud@1.2.5(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))':
'@nx/powerpack-enterprise-cloud@1.3.0-beta.1(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))':
dependencies:
'@nx/devkit': 20.2.2(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))
'@nx/powerpack-license': 1.2.5
'@nx/powerpack-license': 1.3.0-beta.1
nx: 20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))
semver: 7.5.4
'@nx/powerpack-license-darwin-arm64@1.2.5':
optional: true
'@nx/powerpack-license-darwin-x64@1.2.5':
optional: true
'@nx/powerpack-license-linux-arm-gnueabihf@1.2.5':
optional: true
'@nx/powerpack-license-linux-arm64-gnu@1.2.5':
optional: true
'@nx/powerpack-license-linux-arm64-musl@1.2.5':
optional: true
'@nx/powerpack-license-linux-x64-gnu@1.2.5':
optional: true
'@nx/powerpack-license-linux-x64-musl@1.2.5':
optional: true
'@nx/powerpack-license-win32-arm64-msvc@1.2.5':
optional: true
'@nx/powerpack-license-win32-x64-msvc@1.2.5':
optional: true
'@nx/powerpack-license@1.2.5':
'@nx/powerpack-license@1.3.0-beta.1':
dependencies:
'@napi-rs/wasm-runtime': 0.2.4
optionalDependencies:
'@nx/powerpack-license-darwin-arm64': 1.2.5
'@nx/powerpack-license-darwin-x64': 1.2.5
'@nx/powerpack-license-linux-arm-gnueabihf': 1.2.5
'@nx/powerpack-license-linux-arm64-gnu': 1.2.5
'@nx/powerpack-license-linux-arm64-musl': 1.2.5
'@nx/powerpack-license-linux-x64-gnu': 1.2.5
'@nx/powerpack-license-linux-x64-musl': 1.2.5
'@nx/powerpack-license-win32-arm64-msvc': 1.2.5
'@nx/powerpack-license-win32-x64-msvc': 1.2.5
'@nx/key': 1.3.0-beta.1
'@nx/react@20.5.0-rc.0(@babel/traverse@7.26.9)(@rspack/core@1.2.6(@swc/helpers@0.5.11))(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@20.16.10)(@zkochan/js-yaml@0.0.7)(bufferutil@4.0.7)(esbuild@0.25.0)(eslint@8.57.0)(next@14.2.16(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.47.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.55.0))(nx@20.5.0-rc.0(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.12)(typescript@5.7.3))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.88.0))(webpack@5.88.0(@swc/core@1.5.7(@swc/helpers@0.5.11))(esbuild@0.25.0)(webpack-cli@5.1.4))':
dependencies: