-
Notifications
You must be signed in to change notification settings - Fork 1
/
functions-cache.ts
57 lines (48 loc) · 1.2 KB
/
functions-cache.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import type {
FunctionsCacheFetch,
FunctionsCacheUpdate,
FunctionsCache,
} from 'nx-cloud-functions-deployer';
import axios from 'axios';
const baseURL = 'https://api.jsonbin.io/v3/b';
const getBinId = (flavor: string): string => {
switch (flavor) {
case 'production':
return '632f4a58a1610e63863362f0';
case 'development':
return '632f4a58a1610e63863762f0';
default:
throw new Error(`Unknown flavor: ${flavor}`);
}
};
const jsonbinMasterKey =
'$2b$10$SZkinpMz0Faiv/pl4/Nt7OdyYsnHj9p/unvhZUmjNQyzWcj6hIT.m';
export const fetch: FunctionsCacheFetch = async ({ flavor }) => {
const binId = getBinId(flavor);
const response = await axios.get<FunctionsCache>(
`${baseURL}/${binId}/latest`,
{
headers: {
'X-Master-Key': jsonbinMasterKey,
'X-Bin-Meta': 'false',
},
},
);
return response.data;
};
export const update: FunctionsCacheUpdate = async ({
flavor,
newFunctionsCache,
}) => {
const oldFunctionsCache = await fetch({ flavor });
const mergedFunctionsCache = {
...oldFunctionsCache,
...newFunctionsCache,
};
const binId = getBinId(flavor);
await axios.put(`${baseURL}/${binId}`, mergedFunctionsCache, {
headers: {
'X-Master-Key': jsonbinMasterKey,
},
});
};