diff --git a/packages/contentstack-utilities/package.json b/packages/contentstack-utilities/package.json index 08f28525b5..f8f4ccd4b6 100644 --- a/packages/contentstack-utilities/package.json +++ b/packages/contentstack-utilities/package.json @@ -53,6 +53,7 @@ "traverse": "^0.6.11", "tty-table": "^4.2.3", "unique-string": "^2.0.0", + "short-uuid": "^6.0.0", "uuid": "^14.0.0", "winston": "^3.19.0", "xdg-basedir": "^4.0.0" diff --git a/packages/contentstack-utilities/src/helpers.ts b/packages/contentstack-utilities/src/helpers.ts index 0e11c06888..0e9254c71e 100644 --- a/packages/contentstack-utilities/src/helpers.ts +++ b/packages/contentstack-utilities/src/helpers.ts @@ -1,5 +1,7 @@ import { checkSync } from 'recheck'; import traverse from 'traverse'; +import { v4 as uuidV4 } from 'uuid'; +import { generate as shortUuidGenerate } from 'short-uuid'; import authHandler from './auth-handler'; import { ContentstackClient, HttpClient, cliux, configHandler } from '.'; import { hasProxy, getProxyUrl } from './proxy-helper'; @@ -278,6 +280,14 @@ export function getAuthenticationMethod(): string { * @param authenticationMethod - Optional authentication method * @returns Context object with all session-level metadata */ +export function generateUid(): string { + return uuidV4(); +} + +export function generateShortUid(): string { + return shortUuidGenerate(); +} + export function createLogContext( commandId: string, apiKey: string, diff --git a/packages/contentstack-utilities/test/unit/helper.test.ts b/packages/contentstack-utilities/test/unit/helper.test.ts index 2a7e716e4b..4d735bfcf9 100644 --- a/packages/contentstack-utilities/test/unit/helper.test.ts +++ b/packages/contentstack-utilities/test/unit/helper.test.ts @@ -1,4 +1,4 @@ -import { cliux, validatePath, getBranchFromAlias } from '../../lib'; +import { cliux, validatePath, getBranchFromAlias, generateUid, generateShortUid } from '../../lib'; import { expect } from 'chai'; import { fancy } from 'fancy-test'; @@ -246,3 +246,32 @@ describe('Testing the getBranchFromAlias function', () => { }); }); }); + +describe('generateUid', () => { + it('should return a string', () => { + expect(generateUid()).to.be.a('string'); + }); + + it('should return a valid UUID v4 format', () => { + const uuidV4Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + expect(generateUid()).to.match(uuidV4Regex); + }); + + it('should return a unique value on each call', () => { + expect(generateUid()).to.not.equal(generateUid()); + }); +}); + +describe('generateShortUid', () => { + it('should return a string', () => { + expect(generateShortUid()).to.be.a('string'); + }); + + it('should return a non-empty string', () => { + expect(generateShortUid().length).to.be.greaterThan(0); + }); + + it('should return a unique value on each call', () => { + expect(generateShortUid()).to.not.equal(generateShortUid()); + }); +}); diff --git a/packages/contentstack/package.json b/packages/contentstack/package.json index c65dbfb47e..56451dff80 100755 --- a/packages/contentstack/package.json +++ b/packages/contentstack/package.json @@ -43,8 +43,7 @@ "@oclif/plugin-plugins": "^5.4.54", "figlet": "1.8.1", "node-machine-id": "^1.1.12", - "semver": "^7.7.2", - "short-uuid": "^6.0.0" + "semver": "^7.7.2" }, "overrides": { "@oclif/core": { diff --git a/packages/contentstack/src/utils/context-handler.ts b/packages/contentstack/src/utils/context-handler.ts index 32a142679c..bc4a0da678 100644 --- a/packages/contentstack/src/utils/context-handler.ts +++ b/packages/contentstack/src/utils/context-handler.ts @@ -1,6 +1,5 @@ -import * as shortUUID from 'short-uuid'; import * as path from 'path'; -import { configHandler, pathValidator, sanitizePath } from '@contentstack/cli-utilities'; +import { configHandler, pathValidator, sanitizePath, generateShortUid } from '@contentstack/cli-utilities'; import { machineIdSync } from 'node-machine-id'; export default class CsdxContext { @@ -33,7 +32,7 @@ export default class CsdxContext { configHandler.set('clientId', this.clientId); } analyticsInfo.push(this.clientId); - const sessionId = shortUUID.generate(); + const sessionId = generateShortUid(); configHandler.set('sessionId', sessionId); this.sessionId = sessionId; analyticsInfo.push(this.sessionId); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fde5456f3..08cc247ef1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,9 +99,6 @@ importers: semver: specifier: ^7.7.2 version: 7.7.4 - short-uuid: - specifier: ^6.0.0 - version: 6.0.3 devDependencies: '@oclif/test': specifier: ^4.1.16 @@ -412,6 +409,9 @@ importers: rxjs: specifier: ^6.6.7 version: 6.6.7 + short-uuid: + specifier: ^6.0.0 + version: 6.0.3 traverse: specifier: ^0.6.11 version: 0.6.11 @@ -9198,7 +9198,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@9.39.4)(typescript@4.9.5) eslint-config-xo-space: 0.35.0(eslint@9.39.4) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) eslint-plugin-mocha: 10.5.0(eslint@9.39.4) eslint-plugin-n: 15.7.0(eslint@9.39.4) eslint-plugin-perfectionist: 2.11.0(eslint@9.39.4)(typescript@4.9.5) @@ -9234,7 +9234,7 @@ snapshots: eslint-config-xo: 0.49.0(eslint@9.39.4) eslint-config-xo-space: 0.35.0(eslint@9.39.4) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) eslint-plugin-jsdoc: 50.8.0(eslint@9.39.4) eslint-plugin-mocha: 10.5.0(eslint@9.39.4) eslint-plugin-n: 17.24.0(eslint@9.39.4)(typescript@4.9.5) @@ -9286,7 +9286,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) transitivePeerDependencies: - supports-color @@ -9325,7 +9325,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9354,7 +9354,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.39.4)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4)(typescript@4.9.5))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9