@forge/storage v1.5.15
Common library for both Forge environment and Harmonised Connect app environment.
Usage example:
// https://hello.atlassian.net/wiki/spaces/ECO/pages/955640295/Explore+-+Making+a+Hosted+storage+call+from+a+Harmonised+app
import fetch, { RequestInit } from 'node-fetch';
import { GlobalStorage } from './global-storage';
import { APIResponse, getStorageInstanceWithQuery } from './index';
const API_BASE = 'https://api.atlassian.com';
// For user agent header
const version = '0.0.1';
const appAri = 'ari:cloud:ecosystem::app/7746820b-fbb0-48d1-a251-7b802ba1aab8';
// For Storage service auth
const appContextAri = 'ari:cloud:jira::site/dd7fa939-ad77-48c9-894f-bd7da936d769';
const token =
'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik16bERNemsxTVRoRlFVRTJRa0ZGT0VGRk9URkJOREJDTVRRek5EZzJSRVpDT1VKRFJrVXdNZyJ9.eyJodHRwczovL2F0bGFzc2lhbi5jb20vc3lzdGVtQWNjb3VudElkIjoiNWZkMDAyZjFmZWU3OTMwMDc1MTRiODFjIiwiaHR0cHM6Ly9hdGxhc3NpYW4uY29tL3N5c3RlbUFjY291bnRFbWFpbCI6IjQ1ZWM2ODE4LWNjNmQtNGI5OC1iOWU4LWZlODI1NDIwZmQ0MUBjb25uZWN0LmF0bGFzc2lhbi5jb20iLCJodHRwczovL2F0bGFzc2lhbi5jb20vZmlyc3RQYXJ0eSI6ZmFsc2UsImh0dHBzOi8vYXRsYXNzaWFuLmNvbS8zbG8iOmZhbHNlLCJpc3MiOiJodHRwczovL2F0bGFzc2lhbi1hY2NvdW50LXByb2QucHVzMi5hdXRoMC5jb20vIiwic3ViIjoiV0dyaDJSZWMwdnBkS25KNEhNM0hMNjk4ckNLS1NFazBAY2xpZW50cyIsImF1ZCI6ImFwaS5hdGxhc3NpYW4uY29tIiwiaWF0IjoxNjA3NDY5OTkzLCJleHAiOjE2MDc0NzM1OTMsImF6cCI6IldHcmgyUmVjMHZwZEtuSjRITTNITDY5OHJDS0tTRWswIiwic2NvcGUiOiJyZWFkOmppcmEtd29yayBtYW5hZ2U6amlyYS1wcm9qZWN0IG1hbmFnZTpqaXJhLWNvbmZpZ3VyYXRpb24gcmVhZDpqaXJhLXVzZXIgd3JpdGU6amlyYS13b3JrIG1hbmFnZTpqaXJhLWRhdGEtcHJvdmlkZXIgd3JpdGU6Y29uZmx1ZW5jZS1jb250ZW50IHJlYWQ6Y29uZmx1ZW5jZS1zcGFjZS5zdW1tYXJ5IHdyaXRlOmNvbmZsdWVuY2Utc3BhY2Ugd3JpdGU6Y29uZmx1ZW5jZS1maWxlIHJlYWQ6Y29uZmx1ZW5jZS1wcm9wcyB3cml0ZTpjb25mbHVlbmNlLXByb3BzIG1hbmFnZTpjb25mbHVlbmNlLWNvbmZpZ3VyYXRpb24gcmVhZDpjb25mbHVlbmNlLWNvbnRlbnQuYWxsIHJlYWQ6Y29uZmx1ZW5jZS1jb250ZW50LnN1bW1hcnkgc2VhcmNoOmNvbmZsdWVuY2UgcmVhZDpjb25mbHVlbmNlLWdyb3VwcyB3cml0ZTpjb25mbHVlbmNlLWdyb3VwcyByZWFkOmNvbmZsdWVuY2UtdXNlciByZWFkOm1lIHN0b3JhZ2U6YXBwIHJlYWQ6Y29ubmVjdC1jb25mbHVlbmNlIHdyaXRlOmNvbm5lY3QtY29uZmx1ZW5jZSByZWFkOmNvbm5lY3QtamlyYSB3cml0ZTpjb25uZWN0LWppcmEiLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMifQ.t-l2ZqbQbSmG04qqtQTX7YPvjB23w5cbmNNHFe0zdNdthGwJOtDl9G-ZzNc8o5v3b1bcd2taJtfNrsZvIzw7UQ5n9VA0xIiAouoFCb7h4JHB4ROL2CkaN8MPA68wn0xSCDPim24hR2mFVw42dZayG19rmoWJ3Uzi3_sJw7yOXxpmDO1x5_7DG9Mgr58gN2fuDZ9XfMDO0LWjxcjBSUDKTZkZVe-fv4p0kNDBrwwkijVQWewr3G64LP9nD85TdEFaVxMdEo-eRlaMhNOmvVkkn_9LtzTJD85n_a3MWwAjtLbbBPwNfghzOi_7T6yH7FAa3oOog1IipdmApbFWPPuWIQ';
async function apiClient(path: string, init: RequestInit): Promise<APIResponse> {
const url = API_BASE + path;
const extraHeaders = {
// See add-forge-user-agent.ts
'User-Agent': `H11n/${version} ${appAri}`,
'X-Forge-Context': appContextAri,
Authorization: `Bearer ${token}`
// Only required when accessing Storage service via the GraphQL gateway
// https://api.atlassian.com/graphql
// 'X-ExperimentalApi': 'AppEntityStorage'
};
init.headers = Object.assign(init.headers!, extraHeaders);
return fetch(url, init);
}
const adapter = new GlobalStorage(() => appContextAri, apiClient);
const storage = getStorageInstanceWithQuery(adapter);
async function demo() {
await storage.set('key', 'vvv');
console.log(await storage.get('key'));
await storage.delete('key');
}
demo();
29 days ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
6 months ago
8 months ago
8 months ago
6 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
6 months ago
7 months ago
6 months ago
7 months ago
10 months ago
8 months ago
8 months ago
9 months ago
10 months ago
7 months ago
6 months ago
10 months ago
7 months ago
10 months ago
6 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago