-
Notifications
You must be signed in to change notification settings - Fork 25
/
index.js
57 lines (47 loc) · 1.38 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
module.exports = Hoodie
var Store = require('hoodie-client-store')
var Account = require('hoodie-client-account')
var ConnectionStatus = require('hoodie-client-connection-status')
var Log = require('hoodie-client-log')
var getState = require('./lib/get-state')
var init = require('./lib/init')
function Hoodie (options) {
var state = getState(options)
var api = {
get url () {
return state.url + '/hoodie'
}
}
var account = new Account({ url: api.url + '/account/api' })
var CustomStore = Store.defaults({
remoteBaseUrl: api.url + '/store/api'
})
var dbName = 'user/' + account.id
var store = new CustomStore(dbName, {
ajax: function () {
var session = api.account.get('session')
if (!session) {
return
}
return {
headers: {
authorization: 'Bearer ' + session.id
}
}
}
})
// core modules
api.account = account
api.store = store
api.request = require('./lib/request').bind(this, state)
api.connectionStatus = new ConnectionStatus(api.url)
api.log = new Log('hoodie')
api.plugin = require('./lib/plugin')
// events
api.on = require('./lib/events').on.bind(this, state)
api.one = require('./lib/events').one.bind(this, state)
api.off = require('./lib/events').off.bind(this, state)
api.trigger = require('./lib/events').trigger.bind(this, state)
init(api)
return api
}