diff --git a/CHANGELOG.md b/CHANGELOG.md index c14922e7..4cd89322 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] - ### Fixed - [python] Add a LICENSE file for Python ([#278](https://github.com/cucumber/messages/pull/278)) - [.NET] Fix NuGet package generation +### Removed +- [JavaScript] Remove dependency on `uuid` package ([#284](https://github.com/cucumber/messages/pull/284) + ## [27.2.0] - 2025-01-31 ### Added - [python] Added Python implementation ([#165](https://github.com/cucumber/messages/pull/165)) diff --git a/javascript/package-lock.json b/javascript/package-lock.json index 88962ca5..34595616 100644 --- a/javascript/package-lock.json +++ b/javascript/package-lock.json @@ -9,10 +9,8 @@ "version": "27.2.0", "license": "MIT", "dependencies": { - "@types/uuid": "10.0.0", "class-transformer": "0.5.1", - "reflect-metadata": "0.2.2", - "uuid": "11.0.5" + "reflect-metadata": "0.2.2" }, "devDependencies": { "@types/mocha": "10.0.10", @@ -206,11 +204,6 @@ "undici-types": "~6.20.0" } }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==" - }, "node_modules/acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", @@ -1625,18 +1618,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -1930,11 +1911,6 @@ "undici-types": "~6.20.0" } }, - "@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==" - }, "acorn": { "version": "8.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", @@ -2971,11 +2947,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==" - }, "v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", diff --git a/javascript/package.json b/javascript/package.json index 4bba3f49..8508e1e8 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -36,10 +36,8 @@ "prepublishOnly": "npm run build && npm run copy-schemas" }, "dependencies": { - "@types/uuid": "10.0.0", "class-transformer": "0.5.1", - "reflect-metadata": "0.2.2", - "uuid": "11.0.5" + "reflect-metadata": "0.2.2" }, "devDependencies": { "@types/mocha": "10.0.10", diff --git a/javascript/src/IdGenerator.ts b/javascript/src/IdGenerator.ts index 5240abb7..81cd8ddc 100644 --- a/javascript/src/IdGenerator.ts +++ b/javascript/src/IdGenerator.ts @@ -1,9 +1,7 @@ -import { v4 as uuidv4 } from 'uuid' - export type NewId = () => string export function uuid(): NewId { - return () => uuidv4() + return () => crypto.randomUUID() } export function incrementing(): NewId { diff --git a/javascript/test/IdGeneratorTest.ts b/javascript/test/IdGeneratorTest.ts new file mode 100644 index 00000000..9ca8ab7e --- /dev/null +++ b/javascript/test/IdGeneratorTest.ts @@ -0,0 +1,17 @@ +import assert from "node:assert" +import {IdGenerator} from "../src/index.js" + +describe('IdGenerator', () => { + it('generates uuids', () => { + const generator = IdGenerator.uuid() + const result = generator() + assert.equal(result.length, 36) + }); + + it('increments ids', () => { + const generator = IdGenerator.incrementing() + assert.equal(generator(), '0') + assert.equal(generator(), '1') + assert.equal(generator(), '2') + }) +}) \ No newline at end of file