Remove uuid dependency in favor of crypto.randomUUID()
The uuid package dropped its CommonJS entry point in v14, making it incompatible with Backstage's CJS build output and Jest test runner. Rather than working around the ESM-only issue, replace all usage with the built-in crypto.randomUUID() which has been available in Node.js since v16.7 and in all major browsers since March 2022. Signed-off-by: Fredrik Adelöw <freben@spotify.com> Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/backend-test-utils': patch
|
||||
'@backstage/cli-module-new': patch
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
'@backstage/plugin-auth-backend-module-cloudflare-access-provider': patch
|
||||
'@backstage/plugin-auth-node': patch
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
'@backstage/plugin-catalog-backend-module-backstage-openapi': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
|
||||
'@backstage/plugin-catalog-backend-module-gerrit': patch
|
||||
'@backstage/plugin-catalog-backend-module-gitea': patch
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
|
||||
'@backstage/plugin-catalog-backend-module-ldap': patch
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
'@backstage/plugin-catalog-backend-module-puppetdb': patch
|
||||
'@backstage/plugin-notifications-backend': patch
|
||||
'@backstage/plugin-permission-common': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-search-backend-module-elasticsearch': patch
|
||||
'@backstage/plugin-search-backend-module-pg': patch
|
||||
'@backstage/plugin-search-backend-node': patch
|
||||
'@backstage/plugin-search-react': patch
|
||||
'@backstage/plugin-signals': patch
|
||||
'@backstage/plugin-signals-backend': patch
|
||||
---
|
||||
|
||||
Removed the `uuid` dependency and replaced usage with the built-in `crypto.randomUUID()`.
|
||||
@@ -192,7 +192,6 @@
|
||||
"selfsigned": "^2.0.0",
|
||||
"tar": "^7.5.6",
|
||||
"triple-beam": "^1.4.1",
|
||||
"uuid": "^11.0.0",
|
||||
"winston": "^3.2.1",
|
||||
"winston-transport": "^4.5.0",
|
||||
"yauzl": "^3.2.1",
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import {
|
||||
import { randomBytes } from 'node:crypto';
|
||||
import { SignJWT, exportJWK, generateKeyPair } from 'jose';
|
||||
import { DateTime } from 'luxon';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import { ConfigReader } from '@backstage/config';
|
||||
import { SignJWT, exportJWK, generateKeyPair } from 'jose';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { jwksTokenHandler } from './jwks';
|
||||
|
||||
// Simplified copy of TokenFactory in @backstage/plugin-auth-backend
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
import { DatabaseService, LoggerService } from '@backstage/backend-plugin-api';
|
||||
import { HumanDuration, durationToMilliseconds } from '@backstage/types';
|
||||
import { JWK, exportJWK, generateKeyPair } from 'jose';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { DatabaseKeyStore } from './DatabaseKeyStore';
|
||||
import { InternalKey, KeyPayload, KeyStore } from './types';
|
||||
import { PluginKeySource } from './types';
|
||||
|
||||
@@ -19,7 +19,7 @@ import { ConflictError, NotFoundError } from '@backstage/errors';
|
||||
import { CronTime } from 'cron';
|
||||
import { Knex } from 'knex';
|
||||
import { DateTime, Duration } from 'luxon';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { DB_TASKS_TABLE, DbTasksRow } from '../database/tables';
|
||||
import {
|
||||
TaskSettingsV2,
|
||||
|
||||
@@ -77,7 +77,6 @@
|
||||
"pg-connection-string": "^2.3.0",
|
||||
"testcontainers": "^11.9.0",
|
||||
"text-extensions": "^2.4.0",
|
||||
"uuid": "^11.0.0",
|
||||
"yn": "^4.0.0",
|
||||
"zod": "^3.25.76 || ^4.0.0",
|
||||
"zod-to-json-schema": "^3.25.1"
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import Keyv, { type KeyvStoreAdapter } from 'keyv';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { waitForReady } from '../util/waitForReady';
|
||||
import { Instance } from './types';
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
|
||||
import { isDockerDisabledForTests } from '../util/isDockerDisabledForTests';
|
||||
import { startMemcachedContainer } from './memcache';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
|
||||
const itIfDocker = isDockerDisabledForTests() ? it.skip : it;
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
|
||||
import { isDockerDisabledForTests } from '../util/isDockerDisabledForTests';
|
||||
import { startRedisContainer } from './redis';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
|
||||
const itIfDocker = isDockerDisabledForTests() ? it.skip : it;
|
||||
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import { isDockerDisabledForTests } from '../util/isDockerDisabledForTests';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { startValkeyContainer } from './valkey';
|
||||
|
||||
const itIfDocker = isDockerDisabledForTests() ? it.skip : it;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import { randomBytes } from 'node:crypto';
|
||||
import knexFactory, { Knex } from 'knex';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import yn from 'yn';
|
||||
import { waitForReady } from '../util/waitForReady';
|
||||
import { Engine, LARGER_POOL_CONFIG, TestDatabaseProperties } from './types';
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
import { randomBytes } from 'node:crypto';
|
||||
import knexFactory, { Knex } from 'knex';
|
||||
import { parse as parsePgConnectionString } from 'pg-connection-string';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { waitForReady } from '../util/waitForReady';
|
||||
import { Engine, LARGER_POOL_CONFIG, TestDatabaseProperties } from './types';
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ import {
|
||||
EntityProvider,
|
||||
EntityProviderConnection,
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { readProviderConfigs } from './readProviderConfigs';
|
||||
import {
|
||||
LoggerService,
|
||||
@@ -74,7 +74,7 @@ export class {{providerClass}} implements EntityProvider {
|
||||
fn: async () => {
|
||||
const logger = this.#logger.child({
|
||||
taskId: id,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -49,8 +49,7 @@
|
||||
"@backstage/plugin-auth-backend": "workspace:^",
|
||||
"@backstage/types": "workspace:^",
|
||||
"msw": "^2.0.0",
|
||||
"node-mocks-http": "^1.0.0",
|
||||
"uuid": "^11.0.0"
|
||||
"node-mocks-http": "^1.0.0"
|
||||
},
|
||||
"configSchema": "config.d.ts"
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import { SignJWT, exportJWK, generateKeyPair } from 'jose';
|
||||
import { HttpResponse, http } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
import { createRequest } from 'node-mocks-http';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { AuthHelper } from './helpers';
|
||||
import { CF_JWT_HEADER, CloudflareAccessIdentityProfile } from './types';
|
||||
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
"matcher": "^4.0.0",
|
||||
"minimatch": "^10.2.1",
|
||||
"passport": "^0.7.0",
|
||||
"uuid": "^11.0.0",
|
||||
"zod": "^3.25.76 || ^4.0.0",
|
||||
"zod-validation-error": "^5.0.0"
|
||||
},
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import { exportJWK, generateKeyPair, JWK } from 'jose';
|
||||
import { DateTime } from 'luxon';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { LoggerService } from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
BackstageSignInResult,
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
import { AuthenticationError } from '@backstage/errors';
|
||||
import { readDurationFromConfig } from '@backstage/config';
|
||||
import { durationToMilliseconds } from '@backstage/types';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { OfflineSessionDatabase } from '../database/OfflineSessionDatabase';
|
||||
import {
|
||||
generateRefreshToken,
|
||||
|
||||
@@ -61,7 +61,6 @@
|
||||
"cookie-parser": "^1.4.6",
|
||||
"express-promise-router": "^4.1.1",
|
||||
"msw": "^1.0.0",
|
||||
"supertest": "^7.0.0",
|
||||
"uuid": "^11.0.0"
|
||||
"supertest": "^7.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
import { cloneDeep } from 'lodash';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
|
||||
import { DefaultIdentityClient } from './DefaultIdentityClient';
|
||||
import { IdentityApiGetIdentityRequest } from './IdentityApi';
|
||||
|
||||
@@ -24,7 +24,7 @@ import {
|
||||
import { cloneDeep } from 'lodash';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
|
||||
import { IdentityClient } from './IdentityClient';
|
||||
import { DiscoveryService } from '@backstage/backend-plugin-api';
|
||||
|
||||
@@ -66,8 +66,7 @@
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/plugin-kubernetes-common": "workspace:^",
|
||||
"p-limit": "^3.0.2",
|
||||
"uuid": "^11.0.0"
|
||||
"p-limit": "^3.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@aws-sdk/util-stream-node": "^3.350.0",
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
ListObjectsV2Output,
|
||||
S3,
|
||||
} from '@aws-sdk/client-s3';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { getEndpointFromInstructions } from '@aws-sdk/middleware-endpoint';
|
||||
import {
|
||||
AwsCredentialsManager,
|
||||
@@ -137,7 +137,7 @@ export class AwsS3EntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: AwsS3EntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
"@backstage/integration": "workspace:^",
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/plugin-events-node": "workspace:^",
|
||||
"uuid": "^11.0.0"
|
||||
"@backstage/plugin-events-node": "workspace:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+2
-2
@@ -32,7 +32,7 @@ import {
|
||||
locationSpecToLocationEntity,
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import { LocationSpec } from '@backstage/plugin-catalog-common';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { readAzureBlobStorageConfigs } from './config';
|
||||
import {
|
||||
AzureBlobStorageIntergation,
|
||||
@@ -134,7 +134,7 @@ export class AzureBlobStorageEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: AzureBlobStorageEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
import { LocationSpec } from '@backstage/plugin-catalog-common';
|
||||
import { readAzureDevOpsConfigs } from './config';
|
||||
import { AzureDevOpsConfig } from './types';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { codeSearch, CodeSearchResultItem } from '../lib';
|
||||
import {
|
||||
SchedulerService,
|
||||
@@ -129,7 +129,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: AzureDevOpsEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
"cross-fetch": "^4.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"openapi-merge": "^1.3.2",
|
||||
"uuid": "^11.0.0",
|
||||
"yaml": "^2.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
+2
-2
@@ -40,7 +40,7 @@ import {
|
||||
SchedulerService,
|
||||
SchedulerServiceTaskRunner,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import lodash from 'lodash';
|
||||
|
||||
const HTTP_VERBS: (keyof PathItemObject)[] = [
|
||||
@@ -238,7 +238,7 @@ export class InternalOpenApiDocumentationProvider implements EntityProvider {
|
||||
class:
|
||||
InternalOpenApiDocumentationProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
await this.refresh(logger);
|
||||
},
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
"@backstage/plugin-bitbucket-cloud-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/plugin-events-node": "workspace:^",
|
||||
"uuid": "^11.0.0"
|
||||
"@backstage/plugin-events-node": "workspace:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+2
-2
@@ -44,7 +44,7 @@ import {
|
||||
BitbucketCloudEntityProviderConfig,
|
||||
readProviderConfigs,
|
||||
} from './BitbucketCloudEntityProviderConfig';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
|
||||
const DEFAULT_BRANCH = 'master';
|
||||
const TOPIC_REPO_PUSH = 'bitbucketCloud.repo:push';
|
||||
@@ -154,7 +154,7 @@ export class BitbucketCloudEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: BitbucketCloudEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -53,8 +53,7 @@
|
||||
"@backstage/integration": "workspace:^",
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/plugin-events-node": "workspace:^",
|
||||
"uuid": "^11.0.0"
|
||||
"@backstage/plugin-events-node": "workspace:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ import {
|
||||
DeferredEntity,
|
||||
CatalogService,
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { BitbucketServerClient, paginated } from '../lib';
|
||||
import {
|
||||
BitbucketServerEntityProviderConfig,
|
||||
@@ -157,7 +157,7 @@ export class BitbucketServerEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: BitbucketServerEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -54,8 +54,7 @@
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"fs-extra": "^11.2.0",
|
||||
"p-limit": "^3.1.0",
|
||||
"uuid": "^11.0.0"
|
||||
"p-limit": "^3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
parseGerritJsonResponse,
|
||||
ScmIntegrations,
|
||||
} from '@backstage/integration';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import pLimit from 'p-limit';
|
||||
|
||||
import { readGerritConfigs } from './config';
|
||||
@@ -128,7 +128,7 @@ export class GerritEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: GerritEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -39,8 +39,7 @@
|
||||
"@backstage/integration": "workspace:^",
|
||||
"@backstage/plugin-catalog-common": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"p-limit": "^3.0.2",
|
||||
"uuid": "^11.0.0"
|
||||
"p-limit": "^3.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
@@ -17,14 +17,17 @@ import { mockServices } from '@backstage/backend-test-utils';
|
||||
import { ConfigReader } from '@backstage/config';
|
||||
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
|
||||
import { GiteaEntityProvider } from './GiteaEntityProvider';
|
||||
import * as uuid from 'uuid';
|
||||
import * as nodeCrypto from 'node:crypto';
|
||||
import { readGiteaConfigs } from './config';
|
||||
import { getGiteaApiUrl } from './core';
|
||||
import { GiteaIntegration } from '@backstage/integration';
|
||||
|
||||
jest.mock('./config');
|
||||
jest.mock('./core');
|
||||
jest.mock('uuid');
|
||||
jest.mock('node:crypto', () => ({
|
||||
...jest.requireActual('node:crypto'),
|
||||
randomUUID: jest.fn(),
|
||||
}));
|
||||
|
||||
describe('GiteaEntityProvider', () => {
|
||||
const logger = mockServices.logger.mock();
|
||||
@@ -59,7 +62,7 @@ describe('GiteaEntityProvider', () => {
|
||||
'https://gitea.example.com/api/v1/',
|
||||
);
|
||||
mockScheduler.createScheduledTaskRunner.mockReturnValue(mockTaskRunner);
|
||||
(uuid.v4 as jest.Mock).mockReturnValue('test-uuid');
|
||||
(nodeCrypto.randomUUID as jest.Mock).mockReturnValue('test-uuid');
|
||||
|
||||
// Mock global fetch
|
||||
global.fetch = jest.fn();
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { Config } from '@backstage/config';
|
||||
import { InputError } from '@backstage/errors';
|
||||
import {
|
||||
@@ -141,7 +141,7 @@ export class GiteaEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: GiteaEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -70,8 +70,7 @@
|
||||
"git-url-parse": "^15.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"minimatch": "^10.2.1",
|
||||
"octokit": "^3.0.0",
|
||||
"uuid": "^11.0.0"
|
||||
"octokit": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-defaults": "workspace:^",
|
||||
|
||||
@@ -32,7 +32,7 @@ import {
|
||||
|
||||
import { LocationSpec } from '@backstage/plugin-catalog-common';
|
||||
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import {
|
||||
GithubEntityProviderConfig,
|
||||
readProviderConfigs,
|
||||
@@ -189,7 +189,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber {
|
||||
const logger = this.logger.child({
|
||||
class: GithubEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
try {
|
||||
await this.refresh(logger);
|
||||
|
||||
@@ -52,7 +52,7 @@ import {
|
||||
TeamEvent,
|
||||
} from '@octokit/webhooks-types';
|
||||
import { merge } from 'lodash';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
|
||||
import {
|
||||
assignGroupsToUsers,
|
||||
@@ -894,7 +894,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider {
|
||||
const logger = this.options.logger.child({
|
||||
class: GithubMultiOrgEntityProvider.prototype.constructor.name,
|
||||
taskId: id,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -41,7 +41,7 @@ import {
|
||||
TeamEditedEvent,
|
||||
TeamEvent,
|
||||
} from '@octokit/webhooks-types';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import {
|
||||
defaultOrganizationTeamTransformer,
|
||||
defaultUserTransformer,
|
||||
@@ -653,7 +653,7 @@ export class GithubOrgEntityProvider implements EntityProvider {
|
||||
const logger = this.options.logger.child({
|
||||
class: GithubOrgEntityProvider.prototype.constructor.name,
|
||||
taskId: id,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -61,8 +61,7 @@
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/plugin-events-node": "workspace:^",
|
||||
"@gitbeaker/rest": "^40.0.3",
|
||||
"lodash": "^4.17.21",
|
||||
"uuid": "^11.0.0"
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ import {
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import { EventsService } from '@backstage/plugin-events-node';
|
||||
import { WebhookProjectSchema, WebhookPushEventSchema } from '@gitbeaker/rest';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import {
|
||||
GitLabClient,
|
||||
GitLabGroup,
|
||||
@@ -180,7 +180,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: GitlabDiscoveryEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ import {
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import { EventsService } from '@backstage/plugin-events-node';
|
||||
import { merge } from 'lodash';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
|
||||
import {
|
||||
GitLabClient,
|
||||
@@ -340,7 +340,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: GitlabOrgDiscoveryEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
"express": "^4.22.0",
|
||||
"express-promise-router": "^4.1.0",
|
||||
"knex": "^3.0.0",
|
||||
"luxon": "^3.0.0",
|
||||
"uuid": "^11.0.0"
|
||||
"luxon": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
|
||||
import { TestDatabases } from '@backstage/backend-test-utils';
|
||||
import { IncrementalIngestionDatabaseManager } from './IncrementalIngestionDatabaseManager';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { DeferredEntity } from '@backstage/plugin-catalog-node';
|
||||
|
||||
const migrationsDir = `${__dirname}/../../migrations`;
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import { Knex } from 'knex';
|
||||
import type { DeferredEntity } from '@backstage/plugin-catalog-node';
|
||||
import { stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { Duration } from 'luxon';
|
||||
import { v4 } from 'uuid';
|
||||
import { randomUUID as v4 } from 'node:crypto';
|
||||
import {
|
||||
IngestionRecord,
|
||||
IngestionRecordUpdate,
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import { IterationEngine, IterationEngineOptions } from '../types';
|
||||
import { IncrementalIngestionDatabaseManager } from '../database/IncrementalIngestionDatabaseManager';
|
||||
import { performance } from 'node:perf_hooks';
|
||||
import { Duration } from 'luxon';
|
||||
import { v4 } from 'uuid';
|
||||
import { randomUUID as v4 } from 'node:crypto';
|
||||
import { stringifyError, toError } from '@backstage/errors';
|
||||
import { EventParams } from '@backstage/plugin-events-node';
|
||||
import { HumanDuration } from '@backstage/types';
|
||||
|
||||
@@ -46,8 +46,7 @@
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/types": "workspace:^",
|
||||
"ldapts": "^8.0.6",
|
||||
"lodash": "^4.17.21",
|
||||
"uuid": "^11.0.0"
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "workspace:^",
|
||||
|
||||
@@ -25,7 +25,7 @@ import {
|
||||
EntityProviderConnection,
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import { merge } from 'lodash';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import {
|
||||
GroupTransformer,
|
||||
LdapClient,
|
||||
@@ -324,7 +324,7 @@ export class LdapOrgEntityProvider implements EntityProvider {
|
||||
const logger = this.options.logger.child({
|
||||
class: LdapOrgEntityProvider.prototype.constructor.name,
|
||||
taskId: id,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -60,8 +60,7 @@
|
||||
"@microsoft/microsoft-graph-types": "^2.6.0",
|
||||
"lodash": "^4.17.21",
|
||||
"p-limit": "^3.0.2",
|
||||
"qs": "^6.9.4",
|
||||
"uuid": "^11.0.0"
|
||||
"qs": "^6.9.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import {
|
||||
EntityProviderConnection,
|
||||
} from '@backstage/plugin-catalog-node';
|
||||
import { merge } from 'lodash';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import {
|
||||
GroupTransformer,
|
||||
MICROSOFT_GRAPH_GROUP_ID_ANNOTATION,
|
||||
@@ -391,7 +391,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider {
|
||||
const logger = this.options.logger.child({
|
||||
class: MicrosoftGraphOrgEntityProvider.prototype.constructor.name,
|
||||
taskId: id,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
@@ -55,8 +55,7 @@
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@backstage/plugin-catalog-node": "workspace:^",
|
||||
"@backstage/types": "workspace:^",
|
||||
"lodash": "^4.17.21",
|
||||
"uuid": "^11.0.0"
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
readProviderConfigs,
|
||||
} from './PuppetDbEntityProviderConfig';
|
||||
import { Config } from '@backstage/config';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { defaultResourceTransformer, ResourceTransformer } from '../puppet';
|
||||
import {
|
||||
ANNOTATION_LOCATION,
|
||||
@@ -145,7 +145,7 @@ export class PuppetDbEntityProvider implements EntityProvider {
|
||||
const logger = this.logger.child({
|
||||
class: PuppetDbEntityProvider.prototype.constructor.name,
|
||||
taskId,
|
||||
taskInstanceId: uuid.v4(),
|
||||
taskInstanceId: randomUUID(),
|
||||
});
|
||||
try {
|
||||
await this.refresh(logger);
|
||||
|
||||
@@ -23,7 +23,7 @@ exports.up = async function up(knex) {
|
||||
// Adds a single 'bootstrap' location that can be used to trigger work in processors.
|
||||
// This is primarily here to fulfill foreign key constraints.
|
||||
await knex('locations').insert({
|
||||
id: require('uuid').v4(),
|
||||
id: require('node:crypto').randomUUID(),
|
||||
type: 'bootstrap',
|
||||
target: 'bootstrap',
|
||||
});
|
||||
|
||||
@@ -94,7 +94,6 @@
|
||||
"minimatch": "^10.2.1",
|
||||
"p-limit": "^3.0.2",
|
||||
"prom-client": "^15.0.0",
|
||||
"uuid": "^11.0.0",
|
||||
"yaml": "^2.0.0",
|
||||
"yn": "^4.0.0",
|
||||
"zod": "^3.25.76 || ^4.0.0",
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
} from '@backstage/backend-test-utils';
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { Knex } from 'knex';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { Logger } from 'winston';
|
||||
import { DateTime } from 'luxon';
|
||||
import { applyDatabaseMigrations } from './migrations';
|
||||
@@ -80,7 +80,7 @@ describe('DefaultProcessingDatabase', () => {
|
||||
let processedEntity: Entity;
|
||||
|
||||
beforeEach(() => {
|
||||
id = uuid.v4();
|
||||
id = uuid();
|
||||
processedEntity = {
|
||||
apiVersion: '1',
|
||||
kind: 'Location',
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
} from '@backstage/backend-test-utils';
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { Knex } from 'knex';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { DefaultProviderDatabase } from './DefaultProviderDatabase';
|
||||
import { applyDatabaseMigrations } from './migrations';
|
||||
import { DbRefreshStateReferencesRow, DbRefreshStateRow } from './tables';
|
||||
@@ -62,7 +62,7 @@ describe('DefaultProviderDatabase', () => {
|
||||
const createLocations = async (db: Knex, entityRefs: string[]) => {
|
||||
for (const ref of entityRefs) {
|
||||
await insertRefreshStateRow(db, {
|
||||
entity_id: uuid.v4(),
|
||||
entity_id: uuid(),
|
||||
entity_ref: ref,
|
||||
unprocessed_entity: '{}',
|
||||
processed_entity: '{}',
|
||||
@@ -501,7 +501,7 @@ describe('DefaultProviderDatabase', () => {
|
||||
const { knex, db } = await createDatabase(databaseId);
|
||||
await createLocations(knex, ['location:default/removed']);
|
||||
await insertRefreshStateRow(knex, {
|
||||
entity_id: uuid.v4(),
|
||||
entity_id: uuid(),
|
||||
entity_ref: 'location:default/replaced',
|
||||
unprocessed_entity: '{}',
|
||||
processed_entity: '{}',
|
||||
|
||||
@@ -18,7 +18,7 @@ import { stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { DeferredEntity } from '@backstage/plugin-catalog-node';
|
||||
import { Knex } from 'knex';
|
||||
import lodash from 'lodash';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { rethrowError } from './conversion';
|
||||
import { deleteWithEagerPruningOfChildren } from './operations/provider/deleteWithEagerPruningOfChildren';
|
||||
import { refreshByRefreshKeys } from './operations/provider/refreshByRefreshKeys';
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
|
||||
import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils';
|
||||
import { Knex } from 'knex';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { applyDatabaseMigrations } from '../../migrations';
|
||||
import {
|
||||
DbRefreshStateReferencesRow,
|
||||
@@ -64,7 +64,7 @@ describe('deleteWithEagerPruningOfChildren', () => {
|
||||
async function insertEntity(knex: Knex, ...entityRefs: string[]) {
|
||||
for (const ref of entityRefs) {
|
||||
await knex<DbRefreshStateRow>('refresh_state').insert({
|
||||
entity_id: uuid.v4(),
|
||||
entity_id: uuid(),
|
||||
entity_ref: ref,
|
||||
unprocessed_entity: '{}',
|
||||
processed_entity: '{}',
|
||||
|
||||
+3
-3
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils';
|
||||
import * as uuid from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { applyDatabaseMigrations } from '../../migrations';
|
||||
import { DbRefreshKeysRow, DbRefreshStateRow } from '../../tables';
|
||||
import { generateTargetKey } from '../../util';
|
||||
@@ -37,7 +37,7 @@ describe('refreshByRefreshKeys', () => {
|
||||
async databaseId => {
|
||||
const knex = await createDatabase(databaseId);
|
||||
|
||||
const eid1 = uuid.v4();
|
||||
const eid1 = uuid();
|
||||
await knex<DbRefreshStateRow>('refresh_state').insert({
|
||||
entity_id: eid1,
|
||||
entity_ref: 'k:ns/n1',
|
||||
@@ -48,7 +48,7 @@ describe('refreshByRefreshKeys', () => {
|
||||
last_discovery_at: '2021-04-01 13:37:00',
|
||||
});
|
||||
|
||||
const eid2 = uuid.v4();
|
||||
const eid2 = uuid();
|
||||
await knex<DbRefreshStateRow>('refresh_state').insert({
|
||||
entity_id: eid2,
|
||||
entity_ref: 'k:ns/n2',
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { Knex } from 'knex';
|
||||
import { DbRefreshStateRow } from '../../tables';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import {
|
||||
LoggerService,
|
||||
isDatabaseConflictError,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import { Knex } from 'knex';
|
||||
import splitToChunks from 'lodash/chunk';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { StitchingStrategy } from '../../../stitching/types';
|
||||
import {
|
||||
DbFinalEntitiesRow,
|
||||
|
||||
@@ -19,7 +19,7 @@ import {
|
||||
ANNOTATION_ORIGIN_LOCATION,
|
||||
stringifyEntityRef,
|
||||
} from '@backstage/catalog-model';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { applyDatabaseMigrations } from '../database/migrations';
|
||||
import {
|
||||
DbFinalEntitiesRow,
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
import { Location } from '@backstage/catalog-client';
|
||||
import { ConflictError, InputError, NotFoundError } from '@backstage/errors';
|
||||
import { Knex } from 'knex';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import {
|
||||
DbLocationsRow,
|
||||
DbRefreshStateRow,
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
} from '@backstage/backend-test-utils';
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { Knex } from 'knex';
|
||||
import { v4 as uuid, v4 } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import {
|
||||
QueryEntitiesCursorRequest,
|
||||
QueryEntitiesInitialRequest,
|
||||
@@ -99,7 +99,7 @@ describe('DefaultEntitiesCatalog', () => {
|
||||
}
|
||||
|
||||
async function addEntityToSearch(entity: Entity) {
|
||||
const id = entity.metadata.uid || v4();
|
||||
const id = entity.metadata.uid || uuid();
|
||||
const entityRef = stringifyEntityRef(entity);
|
||||
const entityJson = JSON.stringify(entity);
|
||||
|
||||
@@ -1518,7 +1518,7 @@ describe('DefaultEntitiesCatalog', () => {
|
||||
addEntityToSearch({
|
||||
apiVersion: 'a',
|
||||
kind: 'k',
|
||||
metadata: { name: v4() },
|
||||
metadata: { name: uuid() },
|
||||
}),
|
||||
),
|
||||
);
|
||||
@@ -1554,7 +1554,7 @@ describe('DefaultEntitiesCatalog', () => {
|
||||
addEntityToSearch({
|
||||
apiVersion: 'a',
|
||||
kind: 'k',
|
||||
metadata: { name: v4() },
|
||||
metadata: { name: uuid() },
|
||||
}),
|
||||
),
|
||||
);
|
||||
@@ -2465,7 +2465,7 @@ describe('DefaultEntitiesCatalog', () => {
|
||||
|
||||
// Insert an unstitched entity: final_entity is NULL but search
|
||||
// rows exist. This simulates a race or future tombstone state.
|
||||
const unstitchedId = v4();
|
||||
const unstitchedId = uuid();
|
||||
await knex<DbRefreshStateRow>('refresh_state').insert({
|
||||
entity_id: unstitchedId,
|
||||
entity_ref: 'component:default/unstitched',
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { createHash } from 'node:crypto';
|
||||
import { Knex } from 'knex';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { DefaultCatalogDatabase } from '../database/DefaultCatalogDatabase';
|
||||
import { DefaultProcessingDatabase } from '../database/DefaultProcessingDatabase';
|
||||
import { applyDatabaseMigrations } from '../database/migrations';
|
||||
|
||||
@@ -25,7 +25,7 @@ import { Knex } from 'knex';
|
||||
import { applyDatabaseMigrations } from '../../database/migrations';
|
||||
import { EntityFilter } from '@backstage/plugin-catalog-node';
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { buildEntitySearch } from '../../database/operations/stitcher/buildEntitySearch';
|
||||
|
||||
jest.setTimeout(60_000);
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import { Knex } from 'knex';
|
||||
import { applyDatabaseMigrations } from '../../database/migrations';
|
||||
import { FilterPredicate } from '@backstage/filter-predicates';
|
||||
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { buildEntitySearch } from '../../database/operations/stitcher/buildEntitySearch';
|
||||
|
||||
jest.setTimeout(60_000);
|
||||
|
||||
@@ -42,8 +42,7 @@
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@types/express": "^4.17.6",
|
||||
"express": "^4.22.0",
|
||||
"express-promise-router": "^4.1.0",
|
||||
"uuid": "^11.0.0"
|
||||
"express-promise-router": "^4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-defaults": "workspace:^",
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { NotFoundError } from '@backstage/errors';
|
||||
|
||||
export type Todo = {
|
||||
|
||||
@@ -54,8 +54,7 @@
|
||||
"express": "^4.22.0",
|
||||
"express-promise-router": "^4.1.0",
|
||||
"knex": "^3.0.0",
|
||||
"p-throttle": "^4.1.1",
|
||||
"uuid": "^11.0.0"
|
||||
"p-throttle": "^4.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-defaults": "workspace:^",
|
||||
|
||||
@@ -32,7 +32,7 @@ import {
|
||||
} from '@backstage/plugin-notifications-node';
|
||||
import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils';
|
||||
import { DatabaseService } from '@backstage/backend-plugin-api';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { DatabaseNotificationsStore, generateSettingsHash } from '../database';
|
||||
|
||||
const databases = TestDatabases.create();
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
NotificationsStore,
|
||||
TopicGetOptions,
|
||||
} from '../database';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { CatalogService } from '@backstage/plugin-catalog-node';
|
||||
import {
|
||||
NotificationProcessor,
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@backstage/types": "workspace:^",
|
||||
"cross-fetch": "^4.0.0",
|
||||
"uuid": "^11.0.0",
|
||||
"zod": "^3.25.76 || ^4.0.0",
|
||||
"zod-to-json-schema": "^3.25.1"
|
||||
},
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
import { Config } from '@backstage/config';
|
||||
import { ResponseError } from '@backstage/errors';
|
||||
import fetch from 'cross-fetch';
|
||||
import * as uuid from 'uuid';
|
||||
|
||||
import { z } from 'zod/v3';
|
||||
import {
|
||||
AuthorizeResult,
|
||||
@@ -181,7 +181,7 @@ export class PermissionClient implements PermissionEvaluator {
|
||||
) {
|
||||
const request: PermissionMessageBatch<TQuery> = {
|
||||
items: queries.map(query => ({
|
||||
id: uuid.v4(),
|
||||
id: globalThis.crypto.randomUUID(),
|
||||
...query,
|
||||
})),
|
||||
};
|
||||
@@ -213,7 +213,7 @@ export class PermissionClient implements PermissionEvaluator {
|
||||
request[permission.name] ||= {
|
||||
permission,
|
||||
resourceRef: [],
|
||||
id: uuid.v4(),
|
||||
id: globalThis.crypto.randomUUID(),
|
||||
};
|
||||
|
||||
if (resourceRef) {
|
||||
@@ -222,7 +222,7 @@ export class PermissionClient implements PermissionEvaluator {
|
||||
} else {
|
||||
request[permission.name] ||= {
|
||||
permission,
|
||||
id: uuid.v4(),
|
||||
id: globalThis.crypto.randomUUID(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,6 @@
|
||||
"p-queue": "^6.6.2",
|
||||
"prom-client": "^15.0.0",
|
||||
"triple-beam": "^1.4.1",
|
||||
"uuid": "^11.0.0",
|
||||
"winston": "^3.2.1",
|
||||
"winston-transport": "^4.7.0",
|
||||
"yaml": "^2.0.0",
|
||||
|
||||
@@ -42,7 +42,7 @@ import { JsonObject } from '@backstage/types';
|
||||
import fs from 'fs-extra';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { NunjucksWorkflowRunner } from '../tasks/NunjucksWorkflowRunner';
|
||||
import { DecoratedActionsRegistry } from './DecoratedActionsRegistry';
|
||||
import { TemplateActionRegistry } from '../actions';
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { ConflictError, NotFoundError } from '@backstage/errors';
|
||||
import { Knex } from 'knex';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import {
|
||||
TaskStore,
|
||||
TaskStoreCreateTaskOptions,
|
||||
|
||||
@@ -84,7 +84,7 @@ import { HumanDuration, JsonObject } from '@backstage/types';
|
||||
import express from 'express';
|
||||
import { Duration } from 'luxon';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { z } from 'zod/v3';
|
||||
import {
|
||||
DatabaseTaskStore,
|
||||
|
||||
@@ -57,8 +57,7 @@
|
||||
"@opensearch-project/opensearch": "^2.2.1",
|
||||
"aws4": "^1.12.0",
|
||||
"elastic-builder": "^2.16.0",
|
||||
"lodash": "^4.17.21",
|
||||
"uuid": "^11.0.0"
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
+4
-1
@@ -27,7 +27,10 @@ import {
|
||||
import { ElasticSearchSearchEngineIndexer } from './ElasticSearchSearchEngineIndexer';
|
||||
import { mockServices } from '@backstage/backend-test-utils';
|
||||
|
||||
jest.mock('uuid', () => ({ v4: () => 'tag' }));
|
||||
jest.mock('node:crypto', () => ({
|
||||
...jest.requireActual('node:crypto'),
|
||||
randomUUID: () => 'tag',
|
||||
}));
|
||||
|
||||
class ElasticSearchSearchEngineForTranslatorTests extends ElasticSearchSearchEngine {
|
||||
getTranslator() {
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ import { ElasticSearchCustomIndexTemplate } from './types';
|
||||
import { ElasticSearchSearchEngineIndexer } from './ElasticSearchSearchEngineIndexer';
|
||||
import { MissingIndexError } from '@backstage/plugin-search-backend-node';
|
||||
import esb from 'elastic-builder';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import {
|
||||
AwsCredentialProvider,
|
||||
DefaultAwsCredentialsManager,
|
||||
|
||||
@@ -54,8 +54,7 @@
|
||||
"@backstage/plugin-search-backend-node": "workspace:^",
|
||||
"@backstage/plugin-search-common": "workspace:^",
|
||||
"knex": "^3.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"uuid": "^11.0.0"
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
|
||||
@@ -36,7 +36,10 @@ const highlightOptions: PgSearchHighlightOptions = {
|
||||
fragmentDelimiter: ' ... ',
|
||||
};
|
||||
|
||||
jest.mock('uuid', () => ({ v4: () => 'tag' }));
|
||||
jest.mock('node:crypto', () => ({
|
||||
...jest.requireActual('node:crypto'),
|
||||
randomUUID: () => 'tag',
|
||||
}));
|
||||
|
||||
jest.mock('./PgSearchEngineIndexer', () => ({
|
||||
PgSearchEngineIndexer: jest
|
||||
|
||||
@@ -26,7 +26,7 @@ import {
|
||||
DatabaseStore,
|
||||
PgSearchQuery,
|
||||
} from '../database';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { Config } from '@backstage/config';
|
||||
import { DatabaseService, LoggerService } from '@backstage/backend-plugin-api';
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
import { IndexableDocument } from '@backstage/plugin-search-common';
|
||||
import { PgSearchHighlightOptions } from '../PgSearchEngine';
|
||||
import { DatabaseDocumentStore } from './DatabaseDocumentStore';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import { randomUUID as uuidv4 } from 'node:crypto';
|
||||
|
||||
const highlightOptions: PgSearchHighlightOptions = {
|
||||
preTag: '<tag>',
|
||||
|
||||
@@ -61,8 +61,7 @@
|
||||
"@types/lunr": "^2.3.3",
|
||||
"lodash": "^4.17.21",
|
||||
"lunr": "^2.3.9",
|
||||
"ndjson": "^2.0.0",
|
||||
"uuid": "^11.0.0"
|
||||
"ndjson": "^2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-defaults": "workspace:^",
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
import { QueryTranslator, SearchEngine } from '../types';
|
||||
import { MissingIndexError } from '../errors';
|
||||
import lunr from 'lunr';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { LunrSearchEngineIndexer } from './LunrSearchEngineIndexer';
|
||||
import { LoggerService } from '@backstage/backend-plugin-api';
|
||||
|
||||
|
||||
@@ -69,7 +69,6 @@
|
||||
"lodash": "^4.17.21",
|
||||
"qs": "^6.9.4",
|
||||
"react-use": "^17.3.2",
|
||||
"uuid": "^11.0.2",
|
||||
"zod": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import { ReactElement, ChangeEvent, useRef } from 'react';
|
||||
import { capitalize } from 'lodash';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
|
||||
import FormControl from '@material-ui/core/FormControl';
|
||||
import FormControlLabel from '@material-ui/core/FormControlLabel';
|
||||
import Checkbox from '@material-ui/core/Checkbox';
|
||||
@@ -181,7 +181,7 @@ export const SelectFilter = (props: SearchFilterComponentProps) => {
|
||||
defaultValues,
|
||||
valuesDebounceMs,
|
||||
);
|
||||
const allOptionValue = useRef(uuid());
|
||||
const allOptionValue = useRef(globalThis.crypto.randomUUID());
|
||||
const allOption = {
|
||||
value: allOptionValue.current,
|
||||
label: t('searchFilter.allOptionTitle'),
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
"@backstage/types": "workspace:^",
|
||||
"express": "^4.22.0",
|
||||
"express-promise-router": "^4.1.0",
|
||||
"uuid": "^11.0.0",
|
||||
"ws": "^8.18.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -18,7 +18,7 @@ import { EventParams, EventsService } from '@backstage/plugin-events-node';
|
||||
import { SignalPayload } from '@backstage/plugin-signals-node';
|
||||
import crypto from 'node:crypto';
|
||||
import { RawData, WebSocket } from 'ws';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { randomUUID as uuid } from 'node:crypto';
|
||||
import { JsonObject } from '@backstage/types';
|
||||
import {
|
||||
BackstageUserInfo,
|
||||
|
||||
@@ -58,8 +58,7 @@
|
||||
"@backstage/theme": "workspace:^",
|
||||
"@backstage/types": "workspace:^",
|
||||
"@material-ui/core": "^4.12.4",
|
||||
"@remixicon/react": "^4.6.0",
|
||||
"uuid": "^11.0.0"
|
||||
"@remixicon/react": "^4.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "workspace:^",
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
import { SignalApi, SignalSubscriber } from '@backstage/plugin-signals-react';
|
||||
import { JsonObject } from '@backstage/types';
|
||||
import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
|
||||
type Subscription = {
|
||||
channel: string;
|
||||
@@ -76,7 +75,7 @@ export class SignalClient implements SignalApi {
|
||||
channel: string,
|
||||
onMessage: (message: TMessage) => void,
|
||||
): SignalSubscriber {
|
||||
const subscriptionId = uuid();
|
||||
const subscriptionId = globalThis.crypto.randomUUID();
|
||||
const exists = [...this.subscriptions.values()].find(
|
||||
sub => sub.channel === channel,
|
||||
);
|
||||
|
||||
@@ -2623,7 +2623,6 @@ __metadata:
|
||||
supertest: "npm:^7.0.0"
|
||||
tar: "npm:^7.5.6"
|
||||
triple-beam: "npm:^1.4.1"
|
||||
uuid: "npm:^11.0.0"
|
||||
wait-for-expect: "npm:^4.0.0"
|
||||
winston: "npm:^3.2.1"
|
||||
winston-transport: "npm:^4.5.0"
|
||||
@@ -2779,7 +2778,6 @@ __metadata:
|
||||
supertest: "npm:^7.0.0"
|
||||
testcontainers: "npm:^11.9.0"
|
||||
text-extensions: "npm:^2.4.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
yn: "npm:^4.0.0"
|
||||
zod: "npm:^3.25.76 || ^4.0.0"
|
||||
zod-to-json-schema: "npm:^3.25.1"
|
||||
@@ -4340,7 +4338,6 @@ __metadata:
|
||||
jose: "npm:^5.0.0"
|
||||
msw: "npm:^2.0.0"
|
||||
node-mocks-http: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
zod: "npm:^3.25.76 || ^4.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@@ -4652,7 +4649,6 @@ __metadata:
|
||||
msw: "npm:^1.0.0"
|
||||
passport: "npm:^0.7.0"
|
||||
supertest: "npm:^7.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
zod: "npm:^3.25.76 || ^4.0.0"
|
||||
zod-validation-error: "npm:^5.0.0"
|
||||
languageName: unknown
|
||||
@@ -4681,7 +4677,6 @@ __metadata:
|
||||
msw: "npm:^1.0.0"
|
||||
passport: "npm:^0.7.0"
|
||||
supertest: "npm:^7.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
zod: "npm:^3.25.76 || ^4.0.0"
|
||||
zod-to-json-schema: "npm:^3.25.1"
|
||||
zod-validation-error: "npm:^4.0.2"
|
||||
@@ -4789,7 +4784,6 @@ __metadata:
|
||||
aws-sdk-client-mock: "npm:^4.0.0"
|
||||
aws-sdk-client-mock-jest: "npm:^4.0.0"
|
||||
p-limit: "npm:^3.0.2"
|
||||
uuid: "npm:^11.0.0"
|
||||
yaml: "npm:^2.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@@ -4810,7 +4804,6 @@ __metadata:
|
||||
"@backstage/plugin-catalog-node": "workspace:^"
|
||||
"@backstage/plugin-events-node": "workspace:^"
|
||||
msw: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -4829,7 +4822,6 @@ __metadata:
|
||||
lodash: "npm:^4.17.21"
|
||||
openapi-merge: "npm:^1.3.2"
|
||||
openapi3-ts: "npm:^3.1.2"
|
||||
uuid: "npm:^11.0.0"
|
||||
yaml: "npm:^2.7.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@@ -4851,7 +4843,6 @@ __metadata:
|
||||
"@backstage/plugin-events-backend-test-utils": "workspace:^"
|
||||
"@backstage/plugin-events-node": "workspace:^"
|
||||
msw: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -4871,7 +4862,6 @@ __metadata:
|
||||
"@backstage/plugin-events-backend-test-utils": "workspace:^"
|
||||
"@backstage/plugin-events-node": "workspace:^"
|
||||
msw: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -4906,7 +4896,6 @@ __metadata:
|
||||
fs-extra: "npm:^11.2.0"
|
||||
msw: "npm:^1.0.0"
|
||||
p-limit: "npm:^3.1.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -4923,7 +4912,6 @@ __metadata:
|
||||
"@backstage/plugin-catalog-common": "workspace:^"
|
||||
"@backstage/plugin-catalog-node": "workspace:^"
|
||||
p-limit: "npm:^3.0.2"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -4974,7 +4962,6 @@ __metadata:
|
||||
minimatch: "npm:^10.2.1"
|
||||
msw: "npm:^2.0.0"
|
||||
octokit: "npm:^3.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -5012,7 +4999,6 @@ __metadata:
|
||||
"@types/lodash": "npm:^4.14.151"
|
||||
lodash: "npm:^4.17.21"
|
||||
msw: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -5036,7 +5022,6 @@ __metadata:
|
||||
express-promise-router: "npm:^4.1.0"
|
||||
knex: "npm:^3.0.0"
|
||||
luxon: "npm:^3.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -5055,7 +5040,6 @@ __metadata:
|
||||
"@types/lodash": "npm:^4.14.151"
|
||||
ldapts: "npm:^8.0.6"
|
||||
lodash: "npm:^4.17.21"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -5090,7 +5074,6 @@ __metadata:
|
||||
msw: "npm:^1.0.0"
|
||||
p-limit: "npm:^3.0.2"
|
||||
qs: "npm:^6.9.4"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -5127,7 +5110,6 @@ __metadata:
|
||||
"@types/lodash": "npm:^4.14.151"
|
||||
lodash: "npm:^4.17.21"
|
||||
msw: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -5211,7 +5193,6 @@ __metadata:
|
||||
p-limit: "npm:^3.0.2"
|
||||
prom-client: "npm:^15.0.0"
|
||||
supertest: "npm:^7.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
wait-for-expect: "npm:^4.0.0"
|
||||
winston: "npm:^3.13.0"
|
||||
yaml: "npm:^2.0.0"
|
||||
@@ -6279,7 +6260,6 @@ __metadata:
|
||||
knex: "npm:^3.0.0"
|
||||
p-throttle: "npm:^4.1.1"
|
||||
supertest: "npm:^7.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -6480,7 +6460,6 @@ __metadata:
|
||||
"@backstage/types": "workspace:^"
|
||||
cross-fetch: "npm:^4.0.0"
|
||||
msw: "npm:^1.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
zod: "npm:^3.25.76 || ^4.0.0"
|
||||
zod-to-json-schema: "npm:^3.25.1"
|
||||
languageName: unknown
|
||||
@@ -6876,7 +6855,6 @@ __metadata:
|
||||
strip-ansi: "npm:^7.1.0"
|
||||
supertest: "npm:^7.0.0"
|
||||
triple-beam: "npm:^1.4.1"
|
||||
uuid: "npm:^11.0.0"
|
||||
wait-for-expect: "npm:^4.0.0"
|
||||
winston: "npm:^3.2.1"
|
||||
winston-transport: "npm:^4.7.0"
|
||||
@@ -7165,7 +7143,6 @@ __metadata:
|
||||
aws4: "npm:^1.12.0"
|
||||
elastic-builder: "npm:^2.16.0"
|
||||
lodash: "npm:^4.17.21"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -7196,7 +7173,6 @@ __metadata:
|
||||
"@backstage/plugin-search-common": "workspace:^"
|
||||
knex: "npm:^3.0.0"
|
||||
lodash: "npm:^4.17.21"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -7254,7 +7230,6 @@ __metadata:
|
||||
lodash: "npm:^4.17.21"
|
||||
lunr: "npm:^2.3.9"
|
||||
ndjson: "npm:^2.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -7326,7 +7301,6 @@ __metadata:
|
||||
react-dom: "npm:^18.0.2"
|
||||
react-router-dom: "npm:^6.30.2"
|
||||
react-use: "npm:^17.3.2"
|
||||
uuid: "npm:^11.0.2"
|
||||
zod: "npm:^4.0.0"
|
||||
peerDependencies:
|
||||
"@types/react": ^17.0.0 || ^18.0.0
|
||||
@@ -7403,7 +7377,6 @@ __metadata:
|
||||
express: "npm:^4.22.0"
|
||||
express-promise-router: "npm:^4.1.0"
|
||||
supertest: "npm:^7.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
ws: "npm:^8.18.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
@@ -7468,7 +7441,6 @@ __metadata:
|
||||
react: "npm:^18.0.2"
|
||||
react-dom: "npm:^18.0.2"
|
||||
react-router-dom: "npm:^6.30.2"
|
||||
uuid: "npm:^11.0.0"
|
||||
wait-for-expect: "npm:^4.0.0"
|
||||
peerDependencies:
|
||||
"@types/react": ^17.0.0 || ^18.0.0
|
||||
@@ -10076,7 +10048,6 @@ __metadata:
|
||||
express: "npm:^4.22.0"
|
||||
express-promise-router: "npm:^4.1.0"
|
||||
supertest: "npm:^7.0.0"
|
||||
uuid: "npm:^11.0.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -47882,7 +47853,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uuid@npm:^11.0.0, uuid@npm:^11.0.2, uuid@npm:^11.0.3":
|
||||
"uuid@npm:^11.0.3":
|
||||
version: 11.1.0
|
||||
resolution: "uuid@npm:11.1.0"
|
||||
bin:
|
||||
|
||||
Reference in New Issue
Block a user