2016-03-24 13:15:04 -07:00
|
|
|
const EventEmitter = require('events').EventEmitter
|
|
|
|
const bindings = process.atomBinding('session')
|
|
|
|
const PERSIST_PREFIX = 'persist:'
|
2016-01-11 18:40:23 -08:00
|
|
|
|
2016-01-14 10:35:29 -08:00
|
|
|
// Returns the Session from |partition| string.
|
2016-03-24 13:15:04 -07:00
|
|
|
exports.fromPartition = function (partition) {
|
2016-01-11 18:40:23 -08:00
|
|
|
if (partition == null) {
|
2016-03-24 13:15:04 -07:00
|
|
|
partition = ''
|
2016-01-11 18:40:23 -08:00
|
|
|
}
|
|
|
|
if (partition === '') {
|
2016-03-24 13:15:04 -07:00
|
|
|
return exports.defaultSession
|
2016-01-11 18:40:23 -08:00
|
|
|
}
|
2016-02-21 00:14:34 -08:00
|
|
|
if (partition.startsWith(PERSIST_PREFIX)) {
|
2016-03-24 13:15:04 -07:00
|
|
|
return bindings.fromPartition(partition.substr(PERSIST_PREFIX.length), false)
|
2016-01-11 18:40:23 -08:00
|
|
|
} else {
|
2016-03-24 13:15:04 -07:00
|
|
|
return bindings.fromPartition(partition, true)
|
2016-01-11 18:40:23 -08:00
|
|
|
}
|
2016-03-24 13:15:04 -07:00
|
|
|
}
|
2016-01-11 18:40:23 -08:00
|
|
|
|
2016-01-14 10:35:29 -08:00
|
|
|
// Returns the default session.
|
2016-01-11 18:40:23 -08:00
|
|
|
Object.defineProperty(exports, 'defaultSession', {
|
|
|
|
enumerable: true,
|
2016-03-24 13:15:04 -07:00
|
|
|
get: function () {
|
|
|
|
return bindings.fromPartition('', false)
|
2016-01-11 18:40:23 -08:00
|
|
|
}
|
2016-03-24 13:15:04 -07:00
|
|
|
})
|
2016-01-11 18:40:23 -08:00
|
|
|
|
2016-03-24 13:15:04 -07:00
|
|
|
var wrapSession = function (session) {
|
2016-01-14 10:35:29 -08:00
|
|
|
// session is an EventEmitter.
|
2016-03-28 17:51:11 -07:00
|
|
|
Object.setPrototypeOf(session, EventEmitter.prototype)
|
2016-03-24 13:15:04 -07:00
|
|
|
}
|
2016-01-11 18:40:23 -08:00
|
|
|
|
2016-03-24 13:15:04 -07:00
|
|
|
bindings._setWrapSession(wrapSession)
|