2016-01-14 21:18:52 +00:00
|
|
|
const EventEmitter = require('events').EventEmitter;
|
|
|
|
const bindings = process.atomBinding('session');
|
2016-02-21 08:14:34 +00:00
|
|
|
const PERSIST_PREFIX = 'persist:';
|
2016-01-12 02:40:23 +00:00
|
|
|
|
2016-01-14 18:35:29 +00:00
|
|
|
// Returns the Session from |partition| string.
|
2016-01-12 02:40:23 +00:00
|
|
|
exports.fromPartition = function(partition) {
|
|
|
|
if (partition == null) {
|
|
|
|
partition = '';
|
|
|
|
}
|
|
|
|
if (partition === '') {
|
|
|
|
return exports.defaultSession;
|
|
|
|
}
|
2016-02-21 08:14:34 +00:00
|
|
|
if (partition.startsWith(PERSIST_PREFIX)) {
|
|
|
|
return bindings.fromPartition(partition.substr(PERSIST_PREFIX.length), false);
|
2016-01-12 02:40:23 +00:00
|
|
|
} else {
|
|
|
|
return bindings.fromPartition(partition, true);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-01-14 18:35:29 +00:00
|
|
|
// Returns the default session.
|
2016-01-12 02:40:23 +00:00
|
|
|
Object.defineProperty(exports, 'defaultSession', {
|
|
|
|
enumerable: true,
|
|
|
|
get: function() {
|
|
|
|
return bindings.fromPartition('', false);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2016-01-14 21:18:52 +00:00
|
|
|
var wrapSession = function(session) {
|
2016-01-14 18:35:29 +00:00
|
|
|
// session is an EventEmitter.
|
2016-01-12 02:40:23 +00:00
|
|
|
return session.__proto__ = EventEmitter.prototype;
|
|
|
|
};
|
|
|
|
|
|
|
|
bindings._setWrapSession(wrapSession);
|