diff --git a/packages/hoppscotch-common/src/components/environments/my/Details.vue b/packages/hoppscotch-common/src/components/environments/my/Details.vue index 7b8969249..b300b689b 100644 --- a/packages/hoppscotch-common/src/components/environments/my/Details.vue +++ b/packages/hoppscotch-common/src/components/environments/my/Details.vue @@ -165,7 +165,7 @@ import { environmentsStore } from "~/newstore/environments" import { platform } from "~/platform" import { useService } from "dioc/vue" import { SecretEnvironmentService } from "~/services/secret-environment.service" -import { uniqueId } from "lodash-es" +import { uniqueID } from "~/helpers/utils/uniqueID" type EnvironmentVariable = { id: number @@ -277,7 +277,7 @@ const workingEnv = computed(() => { } as Environment } else if (props.action === "new") { return { - id: uniqueId(), + id: uniqueID(), name: "", variables: props.envVars(), } @@ -331,7 +331,7 @@ watch( : "variables" if (props.editingEnvironmentIndex !== "Global") { - editingID.value = workingEnv.value?.id ?? uniqueId() + editingID.value = workingEnv.value?.id ?? uniqueID() } vars.value = pipe( workingEnv.value?.variables ?? [], @@ -421,7 +421,7 @@ const saveEnvironment = () => { const environmentUpdated: Environment = { v: 1, - id: uniqueId(), + id: uniqueID(), name: editingName.value, variables, } diff --git a/packages/hoppscotch-common/src/helpers/import-export/import/insomniaEnv.ts b/packages/hoppscotch-common/src/helpers/import-export/import/insomniaEnv.ts index f92c358fd..ae0af9091 100644 --- a/packages/hoppscotch-common/src/helpers/import-export/import/insomniaEnv.ts +++ b/packages/hoppscotch-common/src/helpers/import-export/import/insomniaEnv.ts @@ -6,7 +6,7 @@ import { IMPORTER_INVALID_FILE_FORMAT } from "." import { z } from "zod" import { NonSecretEnvironment } from "@hoppscotch/data" import { safeParseJSONOrYAML } from "~/helpers/functional/yaml" -import { uniqueId } from "lodash-es" +import { uniqueID } from "~/helpers/utils/uniqueID" const insomniaResourcesSchema = z.object({ resources: z.array( @@ -67,7 +67,7 @@ export const insomniaEnvImporter = (contents: string[]) => { if (parsedInsomniaEnv.success) { const environment: NonSecretEnvironment = { - id: uniqueId(), + id: uniqueID(), v: 1, name: parsedInsomniaEnv.data.name, variables: Object.entries(parsedInsomniaEnv.data.data).map( diff --git a/packages/hoppscotch-common/src/helpers/import-export/import/postmanEnv.ts b/packages/hoppscotch-common/src/helpers/import-export/import/postmanEnv.ts index 15176c37c..f77753695 100644 --- a/packages/hoppscotch-common/src/helpers/import-export/import/postmanEnv.ts +++ b/packages/hoppscotch-common/src/helpers/import-export/import/postmanEnv.ts @@ -1,11 +1,11 @@ import { Environment } from "@hoppscotch/data" import * as O from "fp-ts/Option" import * as TE from "fp-ts/TaskEither" -import { uniqueId } from "lodash-es" import { z } from "zod" import { safeParseJSON } from "~/helpers/functional/json" import { IMPORTER_INVALID_FILE_FORMAT } from "." +import { uniqueID } from "~/helpers/utils/uniqueID" const postmanEnvSchema = z.object({ name: z.string(), @@ -49,7 +49,7 @@ export const postmanEnvImporter = (contents: string[]) => { // Convert `values` to `variables` to match the format expected by the system const environments: Environment[] = validationResult.data.map( ({ name, values }) => ({ - id: uniqueId(), + id: uniqueID(), v: 1, name, variables: values.map((entires) => ({ ...entires, secret: false })), diff --git a/packages/hoppscotch-common/src/helpers/utils/uniqueID.ts b/packages/hoppscotch-common/src/helpers/utils/uniqueID.ts new file mode 100644 index 000000000..8e8833f9d --- /dev/null +++ b/packages/hoppscotch-common/src/helpers/utils/uniqueID.ts @@ -0,0 +1,3 @@ +export const uniqueID = (length = 16) => { + return Math.random().toString(36).substring(2, length) +} diff --git a/packages/hoppscotch-common/src/newstore/environments.ts b/packages/hoppscotch-common/src/newstore/environments.ts index 3c5672655..69bd09918 100644 --- a/packages/hoppscotch-common/src/newstore/environments.ts +++ b/packages/hoppscotch-common/src/newstore/environments.ts @@ -1,7 +1,8 @@ import { Environment } from "@hoppscotch/data" -import { cloneDeep, isEqual, uniqueId } from "lodash-es" +import { cloneDeep, isEqual } from "lodash-es" import { combineLatest, Observable } from "rxjs" import { distinctUntilChanged, map, pluck } from "rxjs/operators" +import { uniqueID } from "~/helpers/utils/uniqueID" import { getService } from "~/modules/dioc" import DispatchingStore, { defineDispatchers, @@ -22,7 +23,7 @@ const defaultEnvironmentsState = { environments: [ { v: 1, - id: uniqueId(), + id: uniqueID(), name: "My Environment Variables", variables: [], }, @@ -100,7 +101,7 @@ const dispatchers = defineDispatchers({ } : { v: 1, - id: "", + id: uniqueID(), name, variables, }, @@ -123,7 +124,7 @@ const dispatchers = defineDispatchers({ ...environments, { ...cloneDeep(newEnvironment), - id: uniqueId(), + id: uniqueID(), name: `${newEnvironment.name} - Duplicate`, }, ], diff --git a/packages/hoppscotch-data/src/environment/index.ts b/packages/hoppscotch-data/src/environment/index.ts index 3f801f2bd..185dfd0dd 100644 --- a/packages/hoppscotch-data/src/environment/index.ts +++ b/packages/hoppscotch-data/src/environment/index.ts @@ -5,7 +5,7 @@ import { InferredEntity, createVersionedEntity } from "verzod" import { z } from "zod" import V0_VERSION from "./v/0" -import V1_VERSION from "./v/1" +import V1_VERSION, { uniqueID } from "./v/1" const versionedObject = z.object({ v: z.number(), @@ -165,7 +165,7 @@ export const translateToNewEnvironment = (x: any): Environment => { if (x.v && x.v === EnvironmentSchemaVersion) return x // Legacy - const id = x.id ?? "" + const id = x.id ?? uniqueID() const name = x.name ?? "Untitled" const variables = (x.variables ?? []).map(translateToNewEnvironmentVariables) diff --git a/packages/hoppscotch-data/src/environment/v/1.ts b/packages/hoppscotch-data/src/environment/v/1.ts index 795e6746b..47692c11d 100644 --- a/packages/hoppscotch-data/src/environment/v/1.ts +++ b/packages/hoppscotch-data/src/environment/v/1.ts @@ -1,7 +1,8 @@ import { z } from "zod" import { defineVersion } from "verzod" import { V0_SCHEMA } from "./0" -import { uniqueId } from "lodash" + +export const uniqueID = () => Math.random().toString(36).substring(2, 16) export const V1_SCHEMA = z.object({ v: z.literal(1), @@ -29,7 +30,7 @@ export default defineVersion({ const result: z.infer = { ...old, v: 1, - id: old.id ?? uniqueId(), + id: old.id ?? uniqueID(), variables: old.variables.map((variable) => { return { ...variable,