forked from pryv/open-pryv.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
72 lines (62 loc) · 2.66 KB
/
index.ts
File metadata and controls
72 lines (62 loc) · 2.66 KB
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/**
* @license
* Copyright (C) Pryv https://pryv.com
* This file is part of Pryv.io and released under BSD-Clause-3 License
* Refer to LICENSE file
*/
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const { StorageLayer } = require('./StorageLayer.ts');
const { Size } = require('./Size.ts');
const userLocalDirectory = require('./userLocalDirectory.ts');
const interfaces = {
UserAccountStorage: require('storages/interfaces/baseStorage/UserAccountStorage.ts'),
UsersLocalIndexDB: require('storages/interfaces/baseStorage/UsersLocalIndexDB.ts'),
EventFiles: require('storages/interfaces/fileStorage/EventFiles.ts'),
UserStorage: require('storages/interfaces/baseStorage/UserStorage.ts'),
Sessions: require('storages/interfaces/baseStorage/Sessions.ts'),
PasswordResetRequests: require('storages/interfaces/baseStorage/PasswordResetRequests.ts'),
AuditStorage: require('storages/interfaces/auditStorage/AuditStorage.ts'),
UserAuditDatabase: require('storages/interfaces/auditStorage/UserAuditDatabase.ts')
};
export { Size, StorageLayer, getStorageLayer, getDatabaseSync, userLocalDirectory, getUsersLocalIndex, getUserAccountStorage, interfaces };
/**
* Ensure the storages barrel is initialized (lazy fallback).
*/
async function ensureBarrel () {
const storages = require('storages');
if (!storages.storageLayer) await storages.init();
return storages;
}
async function getUsersLocalIndex () {
return (await ensureBarrel()).usersLocalIndex;
}
async function getUserAccountStorage () {
return (await ensureBarrel()).userAccountStorage;
}
async function getStorageLayer () {
return (await ensureBarrel()).storageLayer;
}
// Lazy-created MongoDB database — used by getDatabaseSync before barrel init
// (e.g. test-helpers/dependencies.js at module load).
let _lazyDatabase: any;
function _ensureMongoDatabase () {
if (!_lazyDatabase) {
const { getConfigUnsafe, getLogger } = require('@pryv/boiler');
const { dataBaseTracer } = require('tracing');
const config = getConfigUnsafe(true);
const { _internals: mongoInternals } = require('storages/engines/mongodb/src/_internals.ts');
if (!mongoInternals.getLogger) mongoInternals.set('getLogger', getLogger);
const { Database } = require('storages/engines/mongodb/src/Database.ts');
_lazyDatabase = new Database(config.get('storages:engines:mongodb'));
dataBaseTracer(_lazyDatabase);
}
return _lazyDatabase;
}
/**
* Get the MongoDB database connection (sync).
* Falls back to lazy construction for test code that needs it before barrel init.
*/
function getDatabaseSync () {
return require('storages').database || _ensureMongoDatabase();
}