0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-02-03 21:48:55 -05:00
logto/packages/ui/src/utils/index.ts
Gao Sun 7400ed8896
feat(connector): apple (#966)
* feat(connector): apple

* feat(connector): apple

* fix(connector): test

* refactor(connector): per review

* refactor(connector): update issue number

Co-authored-by: Xiao Yijun <xiaoyijun@silverhand.io>
2022-05-27 15:43:42 +08:00

39 lines
1.3 KiB
TypeScript

import { fromUint8Array } from 'js-base64';
export const generateRandomString = (length = 8) =>
fromUint8Array(crypto.getRandomValues(new Uint8Array(length)), true);
export const parseQueryParameters = (parameters: string | URLSearchParams) => {
const searchParameters =
parameters instanceof URLSearchParams ? parameters : new URLSearchParams(parameters);
return Object.fromEntries(searchParameters);
};
export const queryStringify = (parameters: URLSearchParams | Record<string, string>) => {
const searchParameters =
parameters instanceof URLSearchParams ? parameters : new URLSearchParams(parameters);
return searchParameters.toString();
};
export const getSearchParameters = (parameters: string | URLSearchParams, key: string) => {
const searchParameters =
parameters instanceof URLSearchParams ? parameters : new URLSearchParams(parameters);
return searchParameters.get(key) ?? undefined;
};
type Entries<T> = Array<
{
[K in keyof T]: [K, T[K]];
}[keyof T]
>;
export const entries = <T>(object: T): Entries<T> => Object.entries(object) as Entries<T>;
// eslint-disable-next-line @typescript-eslint/ban-types
export const inOperator = <K extends string, T extends object>(
key: K,
object: T
): object is T & Record<K, unknown> => key in object;