@vyer-technologies/relay-offline
Version:
Forked from @wora Relay Offline Capabilities
40 lines • 1.52 kB
JavaScript
import { IDBStorage } from '@vyer-technologies/cache-persist/idbstorage.js';
import { Store, RecordSource } from '@vyer-technologies/relay-store';
import { Environment } from './Environment';
class EnvironmentIDB {
static create(config, idbOptions = {}, recordSourceOptions = {}, storeOptions = {}, offlineStoreOptions = {}) {
const { options, persistOptions } = storeOptions;
const idbStore = {
serialize: false,
prefix: null,
...persistOptions,
};
const idbRecords = {
serialize: false,
prefix: null,
...recordSourceOptions,
};
const idbOffline = {
serialize: false,
prefix: null,
...offlineStoreOptions,
};
if (typeof window !== 'undefined') {
const { name = 'relay', onUpgrade, version } = idbOptions;
const idbStorages = IDBStorage.create({
name,
storeNames: ['store', 'records', 'offline'],
onUpgrade,
version,
});
idbStore.storage = idbStorages[0];
idbRecords.storage = idbStorages[1];
idbOffline.storage = idbStorages[2];
}
const recordSource = new RecordSource(idbRecords);
const store = new Store(recordSource, idbStore, options);
return new Environment({ ...config, store }, idbOffline);
}
}
export default EnvironmentIDB;
//# sourceMappingURL=EnvironmentIDB.js.map