From e0e5ecf670bf33d756abc55962778de1286f70e1 Mon Sep 17 00:00:00 2001
From: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Date: Thu, 3 Oct 2024 08:59:28 +0200
Subject: [PATCH] remove uuid package and switch to crypto

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
---
 __tests__/context.test.ts |  4 +---
 package.json              |  4 +---
 src/context.ts            |  5 ++---
 src/main.ts               |  3 +--
 yarn.lock                 | 18 ------------------
 5 files changed, 5 insertions(+), 29 deletions(-)

diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts
index 8a2b367..74898bb 100644
--- a/__tests__/context.test.ts
+++ b/__tests__/context.test.ts
@@ -1,7 +1,6 @@
 import {beforeEach, describe, expect, jest, test} from '@jest/globals';
 import * as fs from 'fs';
 import * as path from 'path';
-import * as uuid from 'uuid';
 import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx';
 import {Context} from '@docker/actions-toolkit/lib/context';
 import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
@@ -26,8 +25,7 @@ jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
   return tmpName;
 });
 
-jest.mock('uuid');
-jest.spyOn(uuid, 'v4').mockReturnValue('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
+jest.spyOn(crypto, 'randomUUID').mockReturnValue('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
 
 jest.spyOn(Docker, 'context').mockImplementation((): Promise<string> => {
   return Promise.resolve('default');
diff --git a/package.json b/package.json
index d183cd3..a059eff 100644
--- a/package.json
+++ b/package.json
@@ -27,13 +27,11 @@
   "dependencies": {
     "@actions/core": "^1.10.1",
     "@docker/actions-toolkit": "^0.35.0",
-    "js-yaml": "^4.1.0",
-    "uuid": "^10.0.0"
+    "js-yaml": "^4.1.0"
   },
   "devDependencies": {
     "@types/js-yaml": "^4.0.9",
     "@types/node": "^20.12.12",
-    "@types/uuid": "^10.0.0",
     "@typescript-eslint/eslint-plugin": "^7.9.0",
     "@typescript-eslint/parser": "^7.9.0",
     "@vercel/ncc": "^0.38.1",
diff --git a/src/context.ts b/src/context.ts
index 4fb8d47..263cfb2 100644
--- a/src/context.ts
+++ b/src/context.ts
@@ -1,4 +1,3 @@
-import * as uuid from 'uuid';
 import * as core from '@actions/core';
 
 import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
@@ -47,7 +46,7 @@ export async function getInputs(): Promise<Inputs> {
 }
 
 export async function getBuilderName(driver: string): Promise<string> {
-  return driver == 'docker' ? await Docker.context() : `builder-${uuid.v4()}`;
+  return driver == 'docker' ? await Docker.context() : `builder-${crypto.randomUUID()}`;
 }
 
 export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> {
@@ -84,7 +83,7 @@ export async function getAppendArgs(inputs: Inputs, node: Node, toolkit: Toolkit
   if (node.name) {
     args.push('--node', node.name);
   } else if (inputs.driver == 'kubernetes' && (await toolkit.buildx.versionSatisfies('<0.11.0'))) {
-    args.push('--node', `node-${uuid.v4()}`);
+    args.push('--node', `node-${crypto.randomUUID()}`);
   }
   if (node['driver-opts'] && (await toolkit.buildx.versionSatisfies('>=0.3.0'))) {
     await Util.asyncForEach(node['driver-opts'], async (driverOpt: string) => {
diff --git a/src/main.ts b/src/main.ts
index e214991..ffc9a71 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,6 +1,5 @@
 import * as fs from 'fs';
 import * as yaml from 'js-yaml';
-import * as uuid from 'uuid';
 import * as core from '@actions/core';
 import * as actionsToolkit from '@docker/actions-toolkit';
 
@@ -98,7 +97,7 @@ actionsToolkit.run(
         });
       });
       if (defaultContextWithTLS) {
-        const tmpDockerContext = `buildx-${uuid.v4()}`;
+        const tmpDockerContext = `buildx-${crypto.randomUUID()}`;
         await core.group(`Creating temp docker context (TLS data loaded in default one)`, async () => {
           await Docker.getExecOutput(['context', 'create', tmpDockerContext], {
             ignoreReturnCode: true
diff --git a/yarn.lock b/yarn.lock
index d60b1eb..0618021 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2124,13 +2124,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@types/uuid@npm:^10.0.0":
-  version: 10.0.0
-  resolution: "@types/uuid@npm:10.0.0"
-  checksum: e3958f8b0fe551c86c14431f5940c3470127293280830684154b91dc7eb3514aeb79fe3216968833cf79d4d1c67f580f054b5be2cd562bebf4f728913e73e944
-  languageName: node
-  linkType: hard
-
 "@types/yargs-parser@npm:*":
   version: 20.2.0
   resolution: "@types/yargs-parser@npm:20.2.0"
@@ -3171,7 +3164,6 @@ __metadata:
     "@docker/actions-toolkit": ^0.35.0
     "@types/js-yaml": ^4.0.9
     "@types/node": ^20.12.12
-    "@types/uuid": ^10.0.0
     "@typescript-eslint/eslint-plugin": ^7.9.0
     "@typescript-eslint/parser": ^7.9.0
     "@vercel/ncc": ^0.38.1
@@ -3185,7 +3177,6 @@ __metadata:
     ts-jest: ^29.1.2
     ts-node: ^10.9.2
     typescript: ^5.4.5
-    uuid: ^10.0.0
   languageName: unknown
   linkType: soft
 
@@ -6670,15 +6661,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"uuid@npm:^10.0.0":
-  version: 10.0.0
-  resolution: "uuid@npm:10.0.0"
-  bin:
-    uuid: dist/bin/uuid
-  checksum: 4b81611ade2885d2313ddd8dc865d93d8dccc13ddf901745edca8f86d99bc46d7a330d678e7532e7ebf93ce616679fb19b2e3568873ac0c14c999032acb25869
-  languageName: node
-  linkType: hard
-
 "uuid@npm:^3.3.2, uuid@npm:^3.3.3":
   version: 3.4.0
   resolution: "uuid@npm:3.4.0"