Skip to content

Commit c1eff1c

Browse files
authored
More getters (#7)
* Soft rename getProvider to getProviderById * Add getProviderByMatch * Better types for getters
1 parent b67d76f commit c1eff1c

File tree

3 files changed

+56
-6
lines changed

3 files changed

+56
-6
lines changed

index.d.ts

+26-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,31 @@
1-
export const PROVIDERS: {
1+
/**
2+
* @typedef {Object} Provider
3+
* @property {string} id
4+
* @property {string} url — url of web interface
5+
* @property {string} label — label that will can be outputed into UI
6+
* @property {string[]} keywords — keyword that can be used to determine that email belongs to the provider
7+
*/
8+
/** @constant
9+
* @type {Provider[]}
10+
*/
11+
export const PROVIDERS: Provider[];
12+
export function getProvider(id: string): (Provider | undefined);
13+
export function getProviderById(id: string): (Provider | undefined);
14+
export function getProviderByEmail(email: string): (Provider | undefined);
15+
export default PROVIDERS;
16+
export type Provider = {
217
id: string;
18+
/**
19+
* — url of web interface
20+
*/
321
url: string;
22+
/**
23+
* — label that will can be outputed into UI
24+
*/
425
label: string;
26+
/**
27+
* — keyword that can be used to determine that email belongs to the provider
28+
*/
529
keywords: string[];
6-
}[];
7-
export function getProvider(id: any): any;
8-
export default PROVIDERS;
30+
};
931
//# sourceMappingURL=index.d.ts.map

index.d.ts.map

+1-1
Original file line numberDiff line numberDiff line change

index.js

+29-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
/**
2+
* @typedef {Object} Provider
3+
* @property {string} id
4+
* @property {string} url — url of web interface
5+
* @property {string} label — label that can be outputed into UI
6+
* @property {string[]} keywords — keyword that can be used to determine that email belongs to the provider
7+
*/
8+
9+
/** @constant
10+
* @type {Provider[]}
11+
*/
112
export const PROVIDERS = [
213
{
314
id: 'GMAIL',
@@ -43,6 +54,23 @@ export const PROVIDERS = [
4354
},
4455
];
4556

46-
export const getProvider = (id) => PROVIDERS.find((provider) => provider.id === id);
57+
/**
58+
* Gets provider by id
59+
* @param {string} id - id of provider
60+
* @returns {(Provider | undefined)} — returns provider object if found, and undefined if not found
61+
*/
62+
export const getProvider = (id) =>
63+
PROVIDERS.find((provider) => provider.id === id); //#FIXME Completely rename to getProviderById in next version
64+
export const getProviderById = getProvider;
65+
66+
/**
67+
* Gets provider from email
68+
* @param {string} email - email to search
69+
* @returns {(Provider | undefined)} — returns provider object if found, and undefined if not found
70+
*/
71+
export const getProviderByEmail = (email) =>
72+
PROVIDERS.find((provider) => {
73+
return provider.keywords.find((keyword) => email.includes(keyword));
74+
});
4775

4876
export default PROVIDERS;

0 commit comments

Comments
 (0)