@wordpress/sync
Version:
37 lines (34 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.connectIndexDb = connectIndexDb;
var _yIndexeddb = require("y-indexeddb");
/**
* External dependencies
*/
// @ts-ignore
/** @typedef {import('./types').ObjectType} ObjectType */
/** @typedef {import('./types').ObjectID} ObjectID */
/** @typedef {import('./types').CRDTDoc} CRDTDoc */
/** @typedef {import('./types').ConnectDoc} ConnectDoc */
/** @typedef {import('./types').SyncProvider} SyncProvider */
/**
* Connect function to the IndexedDB persistence provider.
*
* @param {ObjectID} objectId The object ID.
* @param {ObjectType} objectType The object type.
* @param {CRDTDoc} doc The CRDT document.
*
* @return {Promise<() => void>} Promise that resolves when the connection is established.
*/
function connectIndexDb(objectId, objectType, doc) {
const roomName = `${objectType}-${objectId}`;
const provider = new _yIndexeddb.IndexeddbPersistence(roomName, doc);
return new Promise(resolve => {
provider.on('synced', () => {
resolve(() => provider.destroy());
});
});
}
//# sourceMappingURL=connect-indexdb.js.map