forked from hashicorp/vault
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
backport of commit 16e9c14 (hashicorp#19442)
Co-authored-by: Jordan Reimer <zofskeez@gmail.com>
- Loading branch information
1 parent
9f545bd
commit 90d3dc6
Showing
2 changed files
with
29 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
```release-note:bug | ||
ui: Fixes crypto.randomUUID error in unsecure contexts from third party ember-data library | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import { setIdentifierGenerationMethod } from '@ember-data/store'; | ||
import { dasherize } from '@ember/string'; | ||
import { v4 as uuidv4 } from 'uuid'; | ||
|
||
export function initialize() { | ||
// see this GH issue for more information https://github.com/emberjs/data/issues/8106 | ||
// Ember Data uses uuidv4 library to generate ids which relies on the crypto API which is no available in unsecure contexts | ||
// the suggested polyfill was added in 4.6.2 so until we upgrade we need to define our own id generation method | ||
// https://api.emberjs.com/ember-data/4.5/classes/IdentifierCache/methods/getOrCreateRecordIdentifier?anchor=getOrCreateRecordIdentifier | ||
// the uuid library was brought in to replace other usages of crypto in the app so it is safe to use in unsecure contexts | ||
// adapted from defaultGenerationMethod -- https://github.com/emberjs/data/blob/v4.5.0/packages/store/addon/-private/identifier-cache.ts#LL82-L94C2 | ||
setIdentifierGenerationMethod((data) => { | ||
if (data.lid) { | ||
return data.lid; | ||
} | ||
if (data.id) { | ||
return `@lid:${dasherize(data.type)}-${data.id}`; | ||
} | ||
return uuidv4(); | ||
}); | ||
} | ||
|
||
export default { | ||
name: 'ember-data-identifiers', | ||
initialize, | ||
}; |