Skip to content

Commit 352a801

Browse files
committed
New model singleton and more
1 parent be7ed4f commit 352a801

14 files changed

Lines changed: 197 additions & 83 deletions

README.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,23 @@ Some of the functionalities will be moved from the lib
103103
model = new HDSLib.HDSModel();
104104
</script>
105105
</head>
106-
```
106+
```
107+
108+
# Dev
109+
110+
## Build
111+
112+
`npm run build` publish the code in `./docs`
113+
114+
## Tests
115+
116+
## Node
117+
- all tests: `npm run test`
118+
- specific test: `npm run test -- --grep=<string>`
119+
120+
## Browser
121+
Test suite is accessible in `docs/`
122+
run `npx backloop.dev ./docs` and open `https://whatever.backloop.dev:4443/tests.html`
123+
124+
125+

docs/browser-index.html

Lines changed: 0 additions & 25 deletions
This file was deleted.

docs/hds-lib.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/hds-lib.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/tests-browser.js

Lines changed: 93 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20785,6 +20785,27 @@ for (const [prop, Obj] of Object.entries(LAZILY_LOADED)) {
2078520785
module.exports = HDSModel;
2078620786

2078720787

20788+
/***/ }),
20789+
20790+
/***/ "./src/HDSService.js":
20791+
/*!***************************!*\
20792+
!*** ./src/HDSService.js ***!
20793+
\***************************/
20794+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20795+
20796+
const settings = __webpack_require__(/*! ./settings */ "./src/settings.js");
20797+
const pryv = __webpack_require__(/*! ./patchedPryv */ "./src/patchedPryv.js");
20798+
20799+
// makes Pryv service aware of default serviceUrl
20800+
class HDSService extends pryv.Service {
20801+
constructor (serviceInfoUrl, serviceCustomizations) {
20802+
serviceInfoUrl = serviceInfoUrl || settings.getServiceInfoURL();
20803+
super(serviceInfoUrl, serviceCustomizations);
20804+
}
20805+
}
20806+
20807+
module.exports = HDSService;
20808+
2078820809
/***/ }),
2078920810

2079020811
/***/ "./src/appTemplates/AppClientAccount.js":
@@ -22067,19 +22088,48 @@ module.exports = {
2206722088
\**********************/
2206822089
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
2206922090

22070-
const { localizeText, setPreferredLocales } = __webpack_require__(/*! ./localizeText */ "./src/localizeText.js");
22091+
const { localizeText } = __webpack_require__(/*! ./localizeText */ "./src/localizeText.js");
22092+
const settings = __webpack_require__(/*! ./settings */ "./src/settings.js");
22093+
const pryv = __webpack_require__(/*! ./patchedPryv */ "./src/patchedPryv.js");
22094+
const HDSModel = __webpack_require__(/*! ./HDSModel/HDSModel */ "./src/HDSModel/HDSModel.js");
22095+
const appTemplates = __webpack_require__(/*! ./appTemplates/appTemplates */ "./src/appTemplates/appTemplates.js");
22096+
const logger = __webpack_require__(/*! ./logger */ "./src/logger.js");
22097+
const HDService = __webpack_require__(/*! ./HDSService */ "./src/HDSService.js");
22098+
const { HDSLibError } = __webpack_require__(/*! ./errors */ "./src/errors.js");
22099+
22100+
let model = null;
2207122101

2207222102
module.exports = {
22073-
settings: __webpack_require__(/*! ./settings */ "./src/settings.js"),
22074-
HDSModel: __webpack_require__(/*! ./HDSModel/HDSModel */ "./src/HDSModel/HDSModel.js"),
22075-
appTemplates: __webpack_require__(/*! ./appTemplates/appTemplates */ "./src/appTemplates/appTemplates.js"),
22076-
pryv: __webpack_require__(/*! ./patchedPryv */ "./src/patchedPryv.js"),
22103+
pryv,
22104+
settings,
22105+
HDService,
22106+
HDSModel,
22107+
get model () {
22108+
if (model == null) throw new HDSLibError('Call await HDSLib.initHDSModel() once');
22109+
return model;
22110+
},
22111+
initHDSModel,
22112+
appTemplates,
2207722113
localizeText,
22078-
setPreferredLocales,
22079-
l: localizeText,
22080-
logger: __webpack_require__(/*! ./logger */ "./src/logger.js")
22114+
l: localizeText, // shortcut to HDSLib.localizeText
22115+
logger
2208122116
};
2208222117

22118+
/**
22119+
* Initialized model singleton
22120+
* @returns {HDSModel}
22121+
*/
22122+
async function initHDSModel (forceNew = false) {
22123+
if (!model || forceNew) {
22124+
const service = new HDService();
22125+
const serviceInfo = await service.info();
22126+
model = new HDSModel(serviceInfo.assets['hds-model']);
22127+
await model.load();
22128+
}
22129+
return model;
22130+
}
22131+
22132+
2208322133

2208422134
/***/ }),
2208522135

@@ -22240,6 +22290,7 @@ if (!pryv.Connection.prototype.apiOne) {
2224022290
return result[0];
2224122291
};
2224222292
}
22293+
2224322294
module.exports = pryv;
2224422295

2224522296

@@ -22254,9 +22305,28 @@ module.exports = pryv;
2225422305
const { setPreferredLocales } = __webpack_require__(/*! ./localizeText */ "./src/localizeText.js");
2225522306

2225622307
module.exports = {
22257-
setPreferredLocales
22308+
setPreferredLocales,
22309+
setServiceInfoURL,
22310+
getServiceInfoURL
2225822311
};
2225922312

22313+
// todo change when in production
22314+
let serviceInfoUrl = 'https://demo.datasafe.dev/reg/service/info';
22315+
/**
22316+
* Set default service info URL
22317+
* @param {string} url
22318+
*/
22319+
function setServiceInfoURL (url) {
22320+
serviceInfoUrl = url;
22321+
}
22322+
22323+
/**
22324+
* Get default service info URL
22325+
* @returns {string}
22326+
*/
22327+
function getServiceInfoURL () {
22328+
return serviceInfoUrl;
22329+
}
2226022330

2226122331
/***/ }),
2226222332

@@ -23039,8 +23109,7 @@ describe('[LISX] Lib settings', () => {
2303923109

2304023110
/* eslint-env mocha */
2304123111
const { assert } = __webpack_require__(/*! ./test-utils/deps-node */ "./tests/test-utils/deps-browser.js");
23042-
const { setPreferredLocales, localizeText } = __webpack_require__(/*! ../src */ "./src/index.js");
23043-
const { resetPreferredLocales, getPreferredLocales, getSupportedLocales } = __webpack_require__(/*! ../src/localizeText */ "./src/localizeText.js");
23112+
const { resetPreferredLocales, getPreferredLocales, getSupportedLocales, localizeText, setPreferredLocales } = __webpack_require__(/*! ../src/localizeText */ "./src/localizeText.js");
2304423113

2304523114
describe('[LOCX] Lib settings', () => {
2304623115
beforeEach(() => {
@@ -23161,12 +23230,14 @@ module.exports = {
2316123230

2316223231
__webpack_require__(/*! ./debug */ "./tests/test-utils/debug.js");
2316323232
const pryv = __webpack_require__(/*! ../../src/patchedPryv */ "./src/patchedPryv.js");
23233+
const HDSService = __webpack_require__(/*! ../../src/HDSService */ "./src/HDSService.js");
2316423234
const superagent = pryv.utils.superagent;
2316523235

2316623236
const ShortUniqueId = __webpack_require__(/*! short-unique-id */ "./node_modules/short-unique-id/dist/short-unique-id.js");
2316723237
const passwordGenerator = new ShortUniqueId({ dictionary: 'alphanum', length: 12 });
2316823238

2316923239
const config = __webpack_require__(/*! ./config */ "./tests/test-utils/config.js");
23240+
const { setServiceInfoURL } = __webpack_require__(/*! ../../src/settings */ "./src/settings.js");
2317023241

2317123242
module.exports = {
2317223243
init,
@@ -23180,7 +23251,7 @@ module.exports = {
2318023251
};
2318123252

2318223253
/**
23183-
* @type {pryv.Service}
23254+
* @type {HDSService}
2318423255
*/
2318523256
let serviceSingleton;
2318623257

@@ -23190,24 +23261,25 @@ let serviceSingleton;
2319023261
let infosSingleton;
2319123262

2319223263
/**
23193-
* Get current Pryv service
23194-
* @returns {pryv.Service}
23264+
* Get current HDSService
23265+
* @returns {HDSService}
2319523266
*/
2319623267
function service () {
2319723268
if (serviceSingleton == null) throw new Error('Init pryvService first');
2319823269
return serviceSingleton;
2319923270
}
2320023271

2320123272
/**
23202-
* Initialize Pryv service from config and creates a singleton
23273+
* Initialize HDSservice from config and creates a singleton
2320323274
* accessible via service()
23204-
* @returns {pryv.Service}
23275+
* @returns {HDSService}
2320523276
*/
2320623277
async function init () {
2320723278
if (infosSingleton) return infosSingleton;
2320823279
if (!config.appId) throw new Error('Cannot find appId in config');
2320923280
if (!config.serviceInfoURL) throw new Error('Cannot find serviceInfoURL in config');
23210-
serviceSingleton = new pryv.Service(config.serviceInfoURL);
23281+
setServiceInfoURL(config.serviceInfoURL);
23282+
serviceSingleton = new HDSService(config.serviceInfoURL);
2321123283
infosSingleton = await serviceSingleton.info();
2321223284
return infosSingleton;
2321323285
}
@@ -23434,6 +23506,10 @@ var __webpack_exports__ = {};
2343423506
/*!********************************!*\
2343523507
!*** ./tests/browser-tests.js ***!
2343623508
\********************************/
23509+
/**
23510+
* Hook for webpack to build browser test-suite
23511+
* Add new tests here
23512+
*/
2343723513
__webpack_require__(/*! ./apptemplates.test */ "./tests/apptemplates.test.js");
2343823514
__webpack_require__(/*! ./hdsModel.test */ "./tests/hdsModel.test.js");
2343923515
__webpack_require__(/*! ./libSettings.test */ "./tests/libSettings.test.js");

docs/tests-browser.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/HDSService.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const settings = require('./settings');
2+
const pryv = require('./patchedPryv');
3+
4+
// makes Pryv service aware of default serviceUrl
5+
class HDSService extends pryv.Service {
6+
constructor (serviceInfoUrl, serviceCustomizations) {
7+
serviceInfoUrl = serviceInfoUrl || settings.getServiceInfoURL();
8+
super(serviceInfoUrl, serviceCustomizations);
9+
}
10+
}
11+
12+
module.exports = HDSService;

src/index-webpack.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/index.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,40 @@
1-
const { localizeText, setPreferredLocales } = require('./localizeText');
1+
const { localizeText } = require('./localizeText');
2+
const settings = require('./settings');
3+
const pryv = require('./patchedPryv');
4+
const HDSModel = require('./HDSModel/HDSModel');
5+
const appTemplates = require('./appTemplates/appTemplates');
6+
const logger = require('./logger');
7+
const HDService = require('./HDSService');
8+
const { HDSLibError } = require('./errors');
9+
10+
let model = null;
211

312
module.exports = {
4-
settings: require('./settings'),
5-
HDSModel: require('./HDSModel/HDSModel'),
6-
appTemplates: require('./appTemplates/appTemplates'),
7-
pryv: require('./patchedPryv'),
13+
pryv,
14+
settings,
15+
HDService,
16+
HDSModel,
17+
get model () {
18+
if (model == null) throw new HDSLibError('Call await HDSLib.initHDSModel() once');
19+
return model;
20+
},
21+
initHDSModel,
22+
appTemplates,
823
localizeText,
9-
setPreferredLocales,
10-
l: localizeText,
11-
logger: require('./logger')
24+
l: localizeText, // shortcut to HDSLib.localizeText
25+
logger
1226
};
27+
28+
/**
29+
* Initialized model singleton
30+
* @returns {HDSModel}
31+
*/
32+
async function initHDSModel (forceNew = false) {
33+
if (!model || forceNew) {
34+
const service = new HDService();
35+
const serviceInfo = await service.info();
36+
model = new HDSModel(serviceInfo.assets['hds-model']);
37+
await model.load();
38+
}
39+
return model;
40+
}

src/patchedPryv.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ if (!pryv.Connection.prototype.apiOne) {
2727
return result[0];
2828
};
2929
}
30+
3031
module.exports = pryv;

0 commit comments

Comments
 (0)