Repository navigation
Replace custom generateUuid with crypto.randomUUID - #1789
Remco Haszing (remcohaszing) wants to merge 1 commit into
Conversation
This replaces the custom `Math.random()` based UUID generated with the cryptographically secure builtin `crypto.randomUUID()`. Other functions from he `uuid` modules were unused.
There was a problem hiding this comment.
🟡 Changes recommended
The common TypeScript projects do not declare the Web Crypto global, causing the new calls to fail compilation.
2 open findings
What changed in this PR
Replaces custom Math.random() UUID generation with native crypto.randomUUID() and removes obsolete UUID utilities.
Changes:
- Migrates client/server registration and progress tokens.
- Deletes duplicate UUID utility modules.
- Introduces unresolved Web Crypto typings in common projects.
| File | Description |
|---|---|
server/src/common/utils/uuid.ts |
Removes UUID utility. |
server/src/common/server.ts |
Migrates registration IDs. |
server/src/common/progress.ts |
Migrates progress tokens. |
client/src/common/workspaceSymbol.ts |
Migrates registration ID. |
client/src/common/workspaceFolder.ts |
Migrates registration ID. |
client/src/common/utils/uuid.ts |
Removes UUID utility. |
client/src/common/textSynchronization.ts |
Migrates synchronization IDs. |
client/src/common/textDocumentContent.ts |
Migrates registration ID. |
client/src/common/signatureHelp.ts |
Migrates registration ID. |
client/src/common/rename.ts |
Migrates registration ID. |
client/src/common/reference.ts |
Migrates registration ID. |
client/src/common/notebook.ts |
Migrates synchronization ID. |
client/src/common/inlineCompletion.ts |
Migrates registration ID. |
client/src/common/hover.ts |
Migrates registration ID. |
client/src/common/formatting.ts |
Migrates formatting IDs. |
client/src/common/fileOperations.ts |
Migrates registration ID. |
client/src/common/features.ts |
Migrates shared feature IDs. |
client/src/common/executeCommand.ts |
Migrates registration ID. |
client/src/common/documentSymbol.ts |
Migrates registration ID. |
client/src/common/documentLink.ts |
Migrates registration ID. |
client/src/common/documentHighlight.ts |
Migrates registration ID. |
client/src/common/diagnostic.ts |
Migrates partial-result token. |
client/src/common/definition.ts |
Migrates registration ID. |
client/src/common/configuration.ts |
Migrates registration ID. |
client/src/common/completion.ts |
Migrates registration ID. |
client/src/common/codeLens.ts |
Migrates registration ID. |
client/src/common/codeAction.ts |
Migrates registration ID. |
client/src/common/client.ts |
Migrates initialization and watcher IDs. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| return [undefined, undefined]; | ||
| } else if (TextDocumentRegistrationOptions.is(capability)) { | ||
| const id = StaticRegistrationOptions.hasId(capability) ? capability.id : UUID.generateUuid(); | ||
| const id = StaticRegistrationOptions.hasId(capability) ? capability.id : crypto.randomUUID(); |
There was a problem hiding this comment.
This is true to some extent, but not completely. crypto.randomUUID() is available in both browsers and Node.js, but it requires either the dom lib types or @types/node. This problem affects more than just the global crypto. Also for example console, URL, and URLSearchParams are available in both environments, but require type definitions of at least one of them.
| throw new Error(`${method} is already added to this registration`); | ||
| } | ||
| const id = UUID.generateUuid(); | ||
| const id = crypto.randomUUID(); |
|
Covered by #1893 |

This replaces the custom
Math.random()based UUID generated with the cryptographically secure builtincrypto.randomUUID().Other functions from he
uuidmodules were unused.