@kalisio/kdk 2.6.3 → 2.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/api/hooks/hooks.model.js +1 -1
- package/extras/tours/pane.top.js +9 -0
- package/map/client/i18n/map_en.json +2 -1
- package/map/client/i18n/map_fr.json +2 -1
- package/package.json +1 -1
- package/test/api/core/test-log-2026-03-26.log +0 -0
- package/client/css/core.variables.scss +0 -72
- package/client/i18n/core_en.json +0 -744
- package/client/i18n/core_fr.json +0 -744
- package/client/i18n/map_en.json +0 -800
- package/client/i18n/map_fr.json +0 -800
- package/client/kdk.client.css +0 -47
- package/client/kdk.client.js +0 -41097
- package/client/kdk.client.map.css +0 -47
- package/client/kdk.client.map.js +0 -38182
- package/client/kdk.client.map.min.css +0 -1
- package/client/kdk.client.map.min.js +0 -27032
- package/client/kdk.client.min.css +0 -1
- package/client/kdk.client.min.js +0 -29074
- package/client/schemas/capture.create.json +0 -132
- package/client/schemas/catalog.update.json +0 -44
- package/client/schemas/messages.update.json +0 -16
- package/client/schemas/projects.create.json +0 -52
- package/client/schemas/projects.update.json +0 -52
- package/client/schemas/settings.update.json +0 -286
- package/client/schemas/tags.update.json +0 -35
- package/client/schemas/users.update-profile.json +0 -34
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/core/api/application.js.html +0 -1864
- package/coverage/core/api/authentication.js.html +0 -907
- package/coverage/core/api/db.js.html +0 -817
- package/coverage/core/api/hooks/hooks.authentication.js.html +0 -139
- package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -964
- package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
- package/coverage/core/api/hooks/hooks.model.js.html +0 -967
- package/coverage/core/api/hooks/hooks.push.js.html +0 -268
- package/coverage/core/api/hooks/hooks.query.js.html +0 -910
- package/coverage/core/api/hooks/hooks.schemas.js.html +0 -298
- package/coverage/core/api/hooks/hooks.service.js.html +0 -319
- package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
- package/coverage/core/api/hooks/hooks.tags.js.html +0 -253
- package/coverage/core/api/hooks/hooks.users.js.html +0 -676
- package/coverage/core/api/hooks/index.html +0 -281
- package/coverage/core/api/hooks/index.js.html +0 -115
- package/coverage/core/api/index.html +0 -176
- package/coverage/core/api/index.js.html +0 -148
- package/coverage/core/api/marshall.js.html +0 -448
- package/coverage/core/api/models/configurations.model.mongodb.js.html +0 -97
- package/coverage/core/api/models/index.html +0 -161
- package/coverage/core/api/models/messages.model.mongodb.js.html +0 -121
- package/coverage/core/api/models/tags.model.mongodb.js.html +0 -109
- package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
- package/coverage/core/api/services/account/account.hooks.js.html +0 -208
- package/coverage/core/api/services/account/account.service.js.html +0 -436
- package/coverage/core/api/services/account/index.html +0 -131
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -520
- package/coverage/core/api/services/authorisations/index.html +0 -131
- package/coverage/core/api/services/configurations/configurations.hooks.js.html +0 -184
- package/coverage/core/api/services/configurations/index.html +0 -116
- package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
- package/coverage/core/api/services/databases/databases.service.js.html +0 -100
- package/coverage/core/api/services/databases/index.html +0 -131
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +0 -184
- package/coverage/core/api/services/import-export/import-export.service.js.html +0 -118
- package/coverage/core/api/services/import-export/index.html +0 -131
- package/coverage/core/api/services/index.html +0 -116
- package/coverage/core/api/services/index.js.html +0 -727
- package/coverage/core/api/services/mailer/index.html +0 -131
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
- package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
- package/coverage/core/api/services/messages/index.html +0 -116
- package/coverage/core/api/services/messages/messages.hooks.js.html +0 -220
- package/coverage/core/api/services/push/index.html +0 -131
- package/coverage/core/api/services/push/push.hooks.js.html +0 -190
- package/coverage/core/api/services/push/push.service.js.html +0 -121
- package/coverage/core/api/services/storage/index.html +0 -131
- package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
- package/coverage/core/api/services/storage/storage.service.js.html +0 -172
- package/coverage/core/api/services/tags/index.html +0 -116
- package/coverage/core/api/services/tags/tags.hooks.js.html +0 -226
- package/coverage/core/api/services/users/index.html +0 -131
- package/coverage/core/api/services/users/users.hooks.js.html +0 -310
- package/coverage/core/api/services/users/users.service.js.html +0 -100
- package/coverage/core/common/errors.js.html +0 -88
- package/coverage/core/common/index.html +0 -191
- package/coverage/core/common/index.js.html +0 -115
- package/coverage/core/common/permissions.js.html +0 -742
- package/coverage/core/common/schema.js.html +0 -190
- package/coverage/core/common/utils.js.html +0 -226
- package/coverage/core/common/utils.offline.js.html +0 -199
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -506
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/core/api/application.js.html +0 -1864
- package/coverage/lcov-report/core/api/authentication.js.html +0 -907
- package/coverage/lcov-report/core/api/db.js.html +0 -817
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -139
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -964
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -967
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +0 -268
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -910
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -298
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +0 -253
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -676
- package/coverage/lcov-report/core/api/hooks/index.html +0 -281
- package/coverage/lcov-report/core/api/hooks/index.js.html +0 -115
- package/coverage/lcov-report/core/api/index.html +0 -176
- package/coverage/lcov-report/core/api/index.js.html +0 -148
- package/coverage/lcov-report/core/api/marshall.js.html +0 -448
- package/coverage/lcov-report/core/api/models/configurations.model.mongodb.js.html +0 -97
- package/coverage/lcov-report/core/api/models/index.html +0 -161
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +0 -121
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -109
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -208
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -436
- package/coverage/lcov-report/core/api/services/account/index.html +0 -131
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -520
- package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
- package/coverage/lcov-report/core/api/services/configurations/configurations.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/configurations/index.html +0 -116
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
- package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +0 -118
- package/coverage/lcov-report/core/api/services/import-export/index.html +0 -131
- package/coverage/lcov-report/core/api/services/index.html +0 -116
- package/coverage/lcov-report/core/api/services/index.js.html +0 -727
- package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
- package/coverage/lcov-report/core/api/services/messages/index.html +0 -116
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +0 -220
- package/coverage/lcov-report/core/api/services/push/index.html +0 -131
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +0 -121
- package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
- package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -226
- package/coverage/lcov-report/core/api/services/users/index.html +0 -131
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -310
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
- package/coverage/lcov-report/core/common/errors.js.html +0 -88
- package/coverage/lcov-report/core/common/index.html +0 -191
- package/coverage/lcov-report/core/common/index.js.html +0 -115
- package/coverage/lcov-report/core/common/permissions.js.html +0 -742
- package/coverage/lcov-report/core/common/schema.js.html +0 -190
- package/coverage/lcov-report/core/common/utils.js.html +0 -226
- package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -506
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -595
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -397
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1309
- package/coverage/lcov-report/map/api/hooks/index.html +0 -161
- package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
- package/coverage/lcov-report/map/api/index.html +0 -131
- package/coverage/lcov-report/map/api/index.js.html +0 -139
- package/coverage/lcov-report/map/api/marshall.js.html +0 -178
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -202
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -196
- package/coverage/lcov-report/map/api/models/index.html +0 -176
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +0 -109
- package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
- package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -337
- package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
- package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -316
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -544
- package/coverage/lcov-report/map/api/services/features/index.html +0 -131
- package/coverage/lcov-report/map/api/services/index.html +0 -116
- package/coverage/lcov-report/map/api/services/index.js.html +0 -1093
- package/coverage/lcov-report/map/api/services/projects/index.html +0 -116
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +0 -439
- package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
- package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -211
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
- package/coverage/lcov-report/map/common/errors.js.html +0 -94
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -538
- package/coverage/lcov-report/map/common/grid.js.html +0 -1612
- package/coverage/lcov-report/map/common/index.html +0 -371
- package/coverage/lcov-report/map/common/index.js.html +0 -172
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
- package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
- package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -823
- package/coverage/lcov-report/map/common/permissions.js.html +0 -130
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
- package/coverage/lcov-report/map/common/tms-utils.js.html +0 -271
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
- package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -583
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
- package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -571
- package/coverage/lcov-report/map/common/wms-utils.js.html +0 -469
- package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -544
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -11012
- package/coverage/map/api/hooks/hooks.catalog.js.html +0 -595
- package/coverage/map/api/hooks/hooks.features.js.html +0 -397
- package/coverage/map/api/hooks/hooks.query.js.html +0 -1309
- package/coverage/map/api/hooks/index.html +0 -161
- package/coverage/map/api/hooks/index.js.html +0 -94
- package/coverage/map/api/index.html +0 -131
- package/coverage/map/api/index.js.html +0 -139
- package/coverage/map/api/marshall.js.html +0 -178
- package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
- package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -202
- package/coverage/map/api/models/features.model.mongodb.js.html +0 -196
- package/coverage/map/api/models/index.html +0 -176
- package/coverage/map/api/models/projects.model.mongodb.js.html +0 -109
- package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
- package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
- package/coverage/map/api/services/alerts/index.html +0 -131
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -337
- package/coverage/map/api/services/catalog/index.html +0 -116
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
- package/coverage/map/api/services/daptiles/index.html +0 -116
- package/coverage/map/api/services/features/features.hooks.js.html +0 -316
- package/coverage/map/api/services/features/features.service.js.html +0 -544
- package/coverage/map/api/services/features/index.html +0 -131
- package/coverage/map/api/services/index.html +0 -116
- package/coverage/map/api/services/index.js.html +0 -1093
- package/coverage/map/api/services/projects/index.html +0 -116
- package/coverage/map/api/services/projects/projects.hooks.js.html +0 -439
- package/coverage/map/api/services/styles/index.html +0 -116
- package/coverage/map/api/services/styles/styles.hooks.js.html +0 -211
- package/coverage/map/common/dynamic-grid-source.js.html +0 -466
- package/coverage/map/common/errors.js.html +0 -94
- package/coverage/map/common/geotiff-grid-source.js.html +0 -538
- package/coverage/map/common/grid.js.html +0 -1612
- package/coverage/map/common/index.html +0 -371
- package/coverage/map/common/index.js.html +0 -172
- package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
- package/coverage/map/common/moment-utils.js.html +0 -157
- package/coverage/map/common/opendap-grid-source.js.html +0 -868
- package/coverage/map/common/opendap-utils.js.html +0 -823
- package/coverage/map/common/permissions.js.html +0 -130
- package/coverage/map/common/time-based-grid-source.js.html +0 -418
- package/coverage/map/common/tms-utils.js.html +0 -271
- package/coverage/map/common/wcs-grid-source.js.html +0 -364
- package/coverage/map/common/wcs-utils.js.html +0 -583
- package/coverage/map/common/weacast-grid-source.js.html +0 -1033
- package/coverage/map/common/wfs-utils.js.html +0 -571
- package/coverage/map/common/wms-utils.js.html +0 -469
- package/coverage/map/common/wmts-utils.js.html +0 -544
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/tmp/coverage-222524-1765963609350-0.json +0 -1
- package/coverage/tmp/coverage-222536-1765963609335-0.json +0 -1
- package/coverage/tmp/coverage-222547-1765963609324-0.json +0 -1
- package/coverage/tmp/coverage-222559-1765963609309-0.json +0 -1
- package/coverage/tmp/coverage-222566-1765963609278-0.json +0 -1
|
@@ -1,727 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for core/api/services/index.js</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../../index.html">All files</a> / <a href="index.html">core/api/services</a> index.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">56.54% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>121/214</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">71.42% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>5/7</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">28.57% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>4/14</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">56.54% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>121/214</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line medium'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
281
|
-
<span class="cline-any cline-yes">1x</span>
|
|
282
|
-
<span class="cline-any cline-yes">1x</span>
|
|
283
|
-
<span class="cline-any cline-yes">1x</span>
|
|
284
|
-
<span class="cline-any cline-yes">1x</span>
|
|
285
|
-
<span class="cline-any cline-yes">1x</span>
|
|
286
|
-
<span class="cline-any cline-yes">1x</span>
|
|
287
|
-
<span class="cline-any cline-yes">1x</span>
|
|
288
|
-
<span class="cline-any cline-yes">1x</span>
|
|
289
|
-
<span class="cline-any cline-yes">1x</span>
|
|
290
|
-
<span class="cline-any cline-yes">1x</span>
|
|
291
|
-
<span class="cline-any cline-yes">1x</span>
|
|
292
|
-
<span class="cline-any cline-yes">1x</span>
|
|
293
|
-
<span class="cline-any cline-yes">1x</span>
|
|
294
|
-
<span class="cline-any cline-yes">1x</span>
|
|
295
|
-
<span class="cline-any cline-no"> </span>
|
|
296
|
-
<span class="cline-any cline-no"> </span>
|
|
297
|
-
<span class="cline-any cline-no"> </span>
|
|
298
|
-
<span class="cline-any cline-no"> </span>
|
|
299
|
-
<span class="cline-any cline-no"> </span>
|
|
300
|
-
<span class="cline-any cline-no"> </span>
|
|
301
|
-
<span class="cline-any cline-no"> </span>
|
|
302
|
-
<span class="cline-any cline-no"> </span>
|
|
303
|
-
<span class="cline-any cline-no"> </span>
|
|
304
|
-
<span class="cline-any cline-no"> </span>
|
|
305
|
-
<span class="cline-any cline-no"> </span>
|
|
306
|
-
<span class="cline-any cline-no"> </span>
|
|
307
|
-
<span class="cline-any cline-no"> </span>
|
|
308
|
-
<span class="cline-any cline-no"> </span>
|
|
309
|
-
<span class="cline-any cline-yes">1x</span>
|
|
310
|
-
<span class="cline-any cline-yes">1x</span>
|
|
311
|
-
<span class="cline-any cline-no"> </span>
|
|
312
|
-
<span class="cline-any cline-no"> </span>
|
|
313
|
-
<span class="cline-any cline-no"> </span>
|
|
314
|
-
<span class="cline-any cline-no"> </span>
|
|
315
|
-
<span class="cline-any cline-no"> </span>
|
|
316
|
-
<span class="cline-any cline-no"> </span>
|
|
317
|
-
<span class="cline-any cline-no"> </span>
|
|
318
|
-
<span class="cline-any cline-no"> </span>
|
|
319
|
-
<span class="cline-any cline-no"> </span>
|
|
320
|
-
<span class="cline-any cline-no"> </span>
|
|
321
|
-
<span class="cline-any cline-no"> </span>
|
|
322
|
-
<span class="cline-any cline-no"> </span>
|
|
323
|
-
<span class="cline-any cline-no"> </span>
|
|
324
|
-
<span class="cline-any cline-no"> </span>
|
|
325
|
-
<span class="cline-any cline-no"> </span>
|
|
326
|
-
<span class="cline-any cline-no"> </span>
|
|
327
|
-
<span class="cline-any cline-no"> </span>
|
|
328
|
-
<span class="cline-any cline-no"> </span>
|
|
329
|
-
<span class="cline-any cline-no"> </span>
|
|
330
|
-
<span class="cline-any cline-yes">1x</span>
|
|
331
|
-
<span class="cline-any cline-yes">1x</span>
|
|
332
|
-
<span class="cline-any cline-yes">9x</span>
|
|
333
|
-
<span class="cline-any cline-yes">9x</span>
|
|
334
|
-
<span class="cline-any cline-yes">9x</span>
|
|
335
|
-
<span class="cline-any cline-yes">9x</span>
|
|
336
|
-
<span class="cline-any cline-yes">9x</span>
|
|
337
|
-
<span class="cline-any cline-yes">9x</span>
|
|
338
|
-
<span class="cline-any cline-yes">9x</span>
|
|
339
|
-
<span class="cline-any cline-yes">9x</span>
|
|
340
|
-
<span class="cline-any cline-yes">9x</span>
|
|
341
|
-
<span class="cline-any cline-yes">1x</span>
|
|
342
|
-
<span class="cline-any cline-yes">1x</span>
|
|
343
|
-
<span class="cline-any cline-no"> </span>
|
|
344
|
-
<span class="cline-any cline-no"> </span>
|
|
345
|
-
<span class="cline-any cline-no"> </span>
|
|
346
|
-
<span class="cline-any cline-yes">1x</span>
|
|
347
|
-
<span class="cline-any cline-yes">1x</span>
|
|
348
|
-
<span class="cline-any cline-yes">1x</span>
|
|
349
|
-
<span class="cline-any cline-yes">1x</span>
|
|
350
|
-
<span class="cline-any cline-yes">1x</span>
|
|
351
|
-
<span class="cline-any cline-yes">1x</span>
|
|
352
|
-
<span class="cline-any cline-yes">1x</span>
|
|
353
|
-
<span class="cline-any cline-yes">1x</span>
|
|
354
|
-
<span class="cline-any cline-yes">1x</span>
|
|
355
|
-
<span class="cline-any cline-yes">1x</span>
|
|
356
|
-
<span class="cline-any cline-no"> </span>
|
|
357
|
-
<span class="cline-any cline-no"> </span>
|
|
358
|
-
<span class="cline-any cline-no"> </span>
|
|
359
|
-
<span class="cline-any cline-yes">1x</span>
|
|
360
|
-
<span class="cline-any cline-yes">1x</span>
|
|
361
|
-
<span class="cline-any cline-no"> </span>
|
|
362
|
-
<span class="cline-any cline-no"> </span>
|
|
363
|
-
<span class="cline-any cline-no"> </span>
|
|
364
|
-
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-no"> </span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-yes">1x</span>
|
|
368
|
-
<span class="cline-any cline-yes">1x</span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
|
-
<span class="cline-any cline-no"> </span>
|
|
371
|
-
<span class="cline-any cline-no"> </span>
|
|
372
|
-
<span class="cline-any cline-no"> </span>
|
|
373
|
-
<span class="cline-any cline-no"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-no"> </span>
|
|
377
|
-
<span class="cline-any cline-no"> </span>
|
|
378
|
-
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-no"> </span>
|
|
380
|
-
<span class="cline-any cline-no"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
|
-
<span class="cline-any cline-no"> </span>
|
|
383
|
-
<span class="cline-any cline-no"> </span>
|
|
384
|
-
<span class="cline-any cline-yes">1x</span>
|
|
385
|
-
<span class="cline-any cline-yes">1x</span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
388
|
-
<span class="cline-any cline-no"> </span>
|
|
389
|
-
<span class="cline-any cline-yes">1x</span>
|
|
390
|
-
<span class="cline-any cline-yes">1x</span>
|
|
391
|
-
<span class="cline-any cline-no"> </span>
|
|
392
|
-
<span class="cline-any cline-no"> </span>
|
|
393
|
-
<span class="cline-any cline-no"> </span>
|
|
394
|
-
<span class="cline-any cline-no"> </span>
|
|
395
|
-
<span class="cline-any cline-no"> </span>
|
|
396
|
-
<span class="cline-any cline-no"> </span>
|
|
397
|
-
<span class="cline-any cline-yes">1x</span>
|
|
398
|
-
<span class="cline-any cline-yes">1x</span>
|
|
399
|
-
<span class="cline-any cline-no"> </span>
|
|
400
|
-
<span class="cline-any cline-no"> </span>
|
|
401
|
-
<span class="cline-any cline-no"> </span>
|
|
402
|
-
<span class="cline-any cline-yes">1x</span>
|
|
403
|
-
<span class="cline-any cline-yes">1x</span>
|
|
404
|
-
<span class="cline-any cline-yes">9x</span>
|
|
405
|
-
<span class="cline-any cline-yes">9x</span>
|
|
406
|
-
<span class="cline-any cline-yes">9x</span>
|
|
407
|
-
<span class="cline-any cline-yes">9x</span>
|
|
408
|
-
<span class="cline-any cline-yes">9x</span>
|
|
409
|
-
<span class="cline-any cline-yes">9x</span>
|
|
410
|
-
<span class="cline-any cline-yes">1x</span>
|
|
411
|
-
<span class="cline-any cline-yes">1x</span>
|
|
412
|
-
<span class="cline-any cline-no"> </span>
|
|
413
|
-
<span class="cline-any cline-no"> </span>
|
|
414
|
-
<span class="cline-any cline-no"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-no"> </span>
|
|
417
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-no"> </span>
|
|
420
|
-
<span class="cline-any cline-no"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-no"> </span>
|
|
423
|
-
<span class="cline-any cline-no"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-no"> </span>
|
|
427
|
-
<span class="cline-any cline-yes">1x</span>
|
|
428
|
-
<span class="cline-any cline-yes">1x</span>
|
|
429
|
-
<span class="cline-any cline-yes">9x</span>
|
|
430
|
-
<span class="cline-any cline-yes">9x</span>
|
|
431
|
-
<span class="cline-any cline-yes">9x</span>
|
|
432
|
-
<span class="cline-any cline-yes">9x</span>
|
|
433
|
-
<span class="cline-any cline-yes">9x</span>
|
|
434
|
-
<span class="cline-any cline-yes">9x</span>
|
|
435
|
-
<span class="cline-any cline-yes">9x</span>
|
|
436
|
-
<span class="cline-any cline-yes">9x</span>
|
|
437
|
-
<span class="cline-any cline-yes">9x</span>
|
|
438
|
-
<span class="cline-any cline-yes">9x</span>
|
|
439
|
-
<span class="cline-any cline-yes">9x</span>
|
|
440
|
-
<span class="cline-any cline-yes">9x</span>
|
|
441
|
-
<span class="cline-any cline-yes">9x</span>
|
|
442
|
-
<span class="cline-any cline-yes">9x</span>
|
|
443
|
-
<span class="cline-any cline-yes">9x</span>
|
|
444
|
-
<span class="cline-any cline-yes">9x</span>
|
|
445
|
-
<span class="cline-any cline-yes">9x</span>
|
|
446
|
-
<span class="cline-any cline-yes">9x</span>
|
|
447
|
-
<span class="cline-any cline-yes">9x</span>
|
|
448
|
-
<span class="cline-any cline-yes">9x</span>
|
|
449
|
-
<span class="cline-any cline-yes">9x</span>
|
|
450
|
-
<span class="cline-any cline-yes">9x</span>
|
|
451
|
-
<span class="cline-any cline-yes">9x</span>
|
|
452
|
-
<span class="cline-any cline-yes">9x</span>
|
|
453
|
-
<span class="cline-any cline-yes">9x</span>
|
|
454
|
-
<span class="cline-any cline-yes">9x</span>
|
|
455
|
-
<span class="cline-any cline-yes">9x</span>
|
|
456
|
-
<span class="cline-any cline-yes">9x</span>
|
|
457
|
-
<span class="cline-any cline-yes">9x</span>
|
|
458
|
-
<span class="cline-any cline-yes">9x</span>
|
|
459
|
-
<span class="cline-any cline-yes">9x</span>
|
|
460
|
-
<span class="cline-any cline-yes">9x</span>
|
|
461
|
-
<span class="cline-any cline-yes">9x</span>
|
|
462
|
-
<span class="cline-any cline-yes">9x</span>
|
|
463
|
-
<span class="cline-any cline-yes">9x</span>
|
|
464
|
-
<span class="cline-any cline-yes">9x</span>
|
|
465
|
-
<span class="cline-any cline-yes">9x</span>
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
467
|
-
<span class="cline-any cline-no"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-yes">9x</span>
|
|
470
|
-
<span class="cline-any cline-yes">9x</span>
|
|
471
|
-
<span class="cline-any cline-yes">9x</span>
|
|
472
|
-
<span class="cline-any cline-yes">9x</span>
|
|
473
|
-
<span class="cline-any cline-yes">9x</span>
|
|
474
|
-
<span class="cline-any cline-yes">9x</span>
|
|
475
|
-
<span class="cline-any cline-yes">9x</span>
|
|
476
|
-
<span class="cline-any cline-yes">9x</span>
|
|
477
|
-
<span class="cline-any cline-yes">9x</span>
|
|
478
|
-
<span class="cline-any cline-yes">9x</span>
|
|
479
|
-
<span class="cline-any cline-yes">9x</span>
|
|
480
|
-
<span class="cline-any cline-yes">9x</span>
|
|
481
|
-
<span class="cline-any cline-yes">9x</span>
|
|
482
|
-
<span class="cline-any cline-yes">9x</span>
|
|
483
|
-
<span class="cline-any cline-yes">9x</span>
|
|
484
|
-
<span class="cline-any cline-yes">9x</span>
|
|
485
|
-
<span class="cline-any cline-yes">9x</span>
|
|
486
|
-
<span class="cline-any cline-yes">9x</span>
|
|
487
|
-
<span class="cline-any cline-yes">9x</span>
|
|
488
|
-
<span class="cline-any cline-yes">9x</span>
|
|
489
|
-
<span class="cline-any cline-yes">9x</span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-yes">9x</span>
|
|
494
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
495
|
-
import path from 'path'
|
|
496
|
-
import makeDebug from 'debug'
|
|
497
|
-
import { fileURLToPath } from 'url'
|
|
498
|
-
import mongodb from 'mongodb'
|
|
499
|
-
import { isValidObjectID } from '../db.js'
|
|
500
|
-
const { ObjectID } = mongodb
|
|
501
|
-
|
|
502
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
503
|
-
const modelsPath = path.join(__dirname, '..', 'models')
|
|
504
|
-
const servicesPath = path.join(__dirname, '..', 'services')
|
|
505
|
-
|
|
506
|
-
const debug = makeDebug('kdk:core:services')
|
|
507
|
-
|
|
508
|
-
export <span class="fstat-no" title="function not covered" >function getServiceNameAndContext (servicePath) {</span>
|
|
509
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
510
|
-
<span class="cstat-no" title="statement not covered" > // Get name from service path without api prefix</span>
|
|
511
|
-
<span class="cstat-no" title="statement not covered" > let name = servicePath.replace(app.get('apiPath').substring(1) + '/', '')</span>
|
|
512
|
-
<span class="cstat-no" title="statement not covered" > // Then without context if any</span>
|
|
513
|
-
<span class="cstat-no" title="statement not covered" > const lastSlash = name.lastIndexOf('/')</span>
|
|
514
|
-
<span class="cstat-no" title="statement not covered" > const contextId = (lastSlash >= 0 ? name.substring(0, lastSlash) : '')</span>
|
|
515
|
-
<span class="cstat-no" title="statement not covered" > // Check if it is a valid MongoDB Object ID otherwise it is not a context string</span>
|
|
516
|
-
<span class="cstat-no" title="statement not covered" > if (isValidObjectID(contextId)) {</span>
|
|
517
|
-
<span class="cstat-no" title="statement not covered" > name = name.replace(contextId + '/', '')</span>
|
|
518
|
-
<span class="cstat-no" title="statement not covered" > return { name, contextId }</span>
|
|
519
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
520
|
-
<span class="cstat-no" title="statement not covered" > return { name }</span>
|
|
521
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
522
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
523
|
-
|
|
524
|
-
export <span class="fstat-no" title="function not covered" >function decorateDistributedService (service) {</span>
|
|
525
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
526
|
-
<span class="cstat-no" title="statement not covered" > // Remote service are registered according to their path, ie with API prefix (but without trailing /)</span>
|
|
527
|
-
<span class="cstat-no" title="statement not covered" > const remoteService = app.service(service.path)</span>
|
|
528
|
-
<span class="cstat-no" title="statement not covered" > const { name, contextId } = getServiceNameAndContext.call(app, service.path)</span>
|
|
529
|
-
<span class="cstat-no" title="statement not covered" > remoteService.name = name</span>
|
|
530
|
-
<span class="cstat-no" title="statement not covered" > remoteService.context = contextId</span>
|
|
531
|
-
<span class="cstat-no" title="statement not covered" > // As remote services have no context, from the internal point of view path = name</span>
|
|
532
|
-
<span class="cstat-no" title="statement not covered" > // Unfortunately this property is already set and used by feathers-distributed and should not be altered</span>
|
|
533
|
-
<span class="cstat-no" title="statement not covered" > // remoteService.path = name</span>
|
|
534
|
-
<span class="cstat-no" title="statement not covered" > remoteService.app = app</span>
|
|
535
|
-
<span class="cstat-no" title="statement not covered" > remoteService.getPath = function (withApiPrefix) {</span>
|
|
536
|
-
<span class="cstat-no" title="statement not covered" > const path = (contextId ? contextId + '/' + name : name)</span>
|
|
537
|
-
<span class="cstat-no" title="statement not covered" > return (withApiPrefix ? app.get('apiPath') + '/' + path : path)</span>
|
|
538
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
539
|
-
<span class="cstat-no" title="statement not covered" > remoteService.getContextId = function () {</span>
|
|
540
|
-
<span class="cstat-no" title="statement not covered" > return contextId</span>
|
|
541
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
542
|
-
<span class="cstat-no" title="statement not covered" > return remoteService</span>
|
|
543
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
544
|
-
|
|
545
|
-
export function createStorageService (options = {}) {
|
|
546
|
-
const app = this
|
|
547
|
-
return app.createService('storage', Object.assign({
|
|
548
|
-
servicesPath,
|
|
549
|
-
modelsPath,
|
|
550
|
-
methods: ['create', 'get', 'find', 'remove', 'createMultipartUpload', 'completeMultipartUpload', 'uploadPart', 'putObject', 'uploadFile', 'downloadFile'],
|
|
551
|
-
events: ['multipart-upload-created', 'multipart-upload-completed', 'part-uploaded', 'object-put'],
|
|
552
|
-
id: '_id'
|
|
553
|
-
}, options))
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
export <span class="fstat-no" title="function not covered" >function removeStorageService (options = {}) {</span>
|
|
557
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
558
|
-
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('storage', options.context))</span>
|
|
559
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
560
|
-
|
|
561
|
-
export function createMessagesService (options = {}) {
|
|
562
|
-
const app = this
|
|
563
|
-
return app.createService('messages', Object.assign({
|
|
564
|
-
servicesPath,
|
|
565
|
-
modelsPath
|
|
566
|
-
}, options))
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
export <span class="fstat-no" title="function not covered" >function removeMessagesService (options = {}) {</span>
|
|
570
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
571
|
-
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('messages', options.context))</span>
|
|
572
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
573
|
-
|
|
574
|
-
export <span class="fstat-no" title="function not covered" >function createConfigurationsService (options = {}) {</span>
|
|
575
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
576
|
-
<span class="cstat-no" title="statement not covered" > return app.createService('configurations', Object.assign({</span>
|
|
577
|
-
<span class="cstat-no" title="statement not covered" > servicesPath,</span>
|
|
578
|
-
<span class="cstat-no" title="statement not covered" > modelsPath</span>
|
|
579
|
-
<span class="cstat-no" title="statement not covered" > }, options))</span>
|
|
580
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
581
|
-
|
|
582
|
-
export <span class="fstat-no" title="function not covered" >async function createDefaultConfigurations (context) {</span>
|
|
583
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
584
|
-
<span class="cstat-no" title="statement not covered" > const defaultConfigurations = app.get('defaultConfigurations')</span>
|
|
585
|
-
<span class="cstat-no" title="statement not covered" > if (!defaultConfigurations) return</span>
|
|
586
|
-
<span class="cstat-no" title="statement not covered" > const configurationsService = app.getService('configurations', context)</span>
|
|
587
|
-
<span class="cstat-no" title="statement not covered" > // Create default configurations if not already done</span>
|
|
588
|
-
<span class="cstat-no" title="statement not covered" > const configurations = await configurationsService.find({ paginate: false })</span>
|
|
589
|
-
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < defaultConfigurations.length; i++) {</span>
|
|
590
|
-
<span class="cstat-no" title="statement not covered" > const defaultConfiguration = defaultConfigurations[i]</span>
|
|
591
|
-
<span class="cstat-no" title="statement not covered" > const createdConfiguration = _.find(configurations, { name: defaultConfiguration.name })</span>
|
|
592
|
-
<span class="cstat-no" title="statement not covered" > if (!createdConfiguration) {</span>
|
|
593
|
-
<span class="cstat-no" title="statement not covered" > app.logger.info('Initializing default configuration (name = ' + defaultConfiguration.name + ')')</span>
|
|
594
|
-
<span class="cstat-no" title="statement not covered" > await configurationsService.create(defaultConfiguration)</span>
|
|
595
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
596
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
597
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
598
|
-
|
|
599
|
-
export <span class="fstat-no" title="function not covered" >function removeConfigurationsService (options = {}) {</span>
|
|
600
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
601
|
-
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('configurations', options.context))</span>
|
|
602
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
603
|
-
|
|
604
|
-
export <span class="fstat-no" title="function not covered" >function createDatabasesService (options = {}) {</span>
|
|
605
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
606
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
607
|
-
<span class="cstat-no" title="statement not covered" > return app.createService('databases', Object.assign({</span>
|
|
608
|
-
<span class="cstat-no" title="statement not covered" > servicesPath</span>
|
|
609
|
-
<span class="cstat-no" title="statement not covered" > }, options))</span>
|
|
610
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
611
|
-
|
|
612
|
-
export <span class="fstat-no" title="function not covered" >function removeDatabasesService (options = {}) {</span>
|
|
613
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
614
|
-
<span class="cstat-no" title="statement not covered" > return app.removeService(app.getService('databases', options.context))</span>
|
|
615
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
616
|
-
|
|
617
|
-
export function createTagsService (options = {}) {
|
|
618
|
-
const app = this
|
|
619
|
-
return app.createService('tags', Object.assign({
|
|
620
|
-
servicesPath,
|
|
621
|
-
modelsPath
|
|
622
|
-
}, options))
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
export <span class="fstat-no" title="function not covered" >async function createDefaultTags (context) {</span>
|
|
626
|
-
<span class="cstat-no" title="statement not covered" > const app = this</span>
|
|
627
|
-
<span class="cstat-no" title="statement not covered" > const defaultTags = app.get('tags').defaultTags</span>
|
|
628
|
-
<span class="cstat-no" title="statement not covered" > if (!defaultTags) return</span>
|
|
629
|
-
<span class="cstat-no" title="statement not covered" > const tagsService = app.getService('tags', context)</span>
|
|
630
|
-
<span class="cstat-no" title="statement not covered" > // Create default tags if not already done</span>
|
|
631
|
-
<span class="cstat-no" title="statement not covered" > const tags = await tagsService.find({ paginate: false })</span>
|
|
632
|
-
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < defaultTags.length; i++) {</span>
|
|
633
|
-
<span class="cstat-no" title="statement not covered" > const defaultTag = defaultTags[i]</span>
|
|
634
|
-
<span class="cstat-no" title="statement not covered" > const createdTag = _.find(tags, { name: defaultTag.name })</span>
|
|
635
|
-
<span class="cstat-no" title="statement not covered" > if (!createdTag) {</span>
|
|
636
|
-
<span class="cstat-no" title="statement not covered" > app.logger.info('Initializing default tag (name = ' + defaultTag.name + ')')</span>
|
|
637
|
-
<span class="cstat-no" title="statement not covered" > await tagsService.create(defaultTag)</span>
|
|
638
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
639
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
640
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
641
|
-
|
|
642
|
-
export default async function () {
|
|
643
|
-
const app = this
|
|
644
|
-
|
|
645
|
-
const authConfig = app.get('authentication')
|
|
646
|
-
if (authConfig) {
|
|
647
|
-
await app.createService('users', {
|
|
648
|
-
modelsPath,
|
|
649
|
-
servicesPath,
|
|
650
|
-
methods: ['create', 'get', 'find', 'update', 'patch', 'remove', 'logout'],
|
|
651
|
-
events: ['logout']
|
|
652
|
-
})
|
|
653
|
-
debug('\'users\' service created')
|
|
654
|
-
await app.createService('account', {
|
|
655
|
-
servicesPath,
|
|
656
|
-
methods: ['create', 'verifyEmail']
|
|
657
|
-
})
|
|
658
|
-
debug('\'account\' service created')
|
|
659
|
-
await app.createService('authorisations', { servicesPath })
|
|
660
|
-
debug('\'authorisations\' service created')
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
const storageConfig = app.get('storage')
|
|
664
|
-
if (storageConfig) {
|
|
665
|
-
await createStorageService.call(app)
|
|
666
|
-
debug('\'storage\' service created')
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
const importExportConfig = app.get('import-export')
|
|
670
|
-
if (importExportConfig) {
|
|
671
|
-
await app.createService('import-export', {
|
|
672
|
-
servicesPath,
|
|
673
|
-
events: ['import-created', 'import-completed', 'export-created', 'export-completed']
|
|
674
|
-
}, app)
|
|
675
|
-
debug('\'import-export\' service created')
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
const messagesConfig = app.get('messages')
|
|
679
|
-
if (messagesConfig) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
680
|
-
<span class="cstat-no" title="statement not covered" > await createMessagesService.call(app, messagesConfig)</span>
|
|
681
|
-
<span class="cstat-no" title="statement not covered" > debug('\'messages\' service created')</span>
|
|
682
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
683
|
-
|
|
684
|
-
const mailerConfig = app.get('mailer')
|
|
685
|
-
if (mailerConfig) {
|
|
686
|
-
await app.createService('mailer', { servicesPath })
|
|
687
|
-
debug('\'mailer\' service created')
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
const pushConfig = app.get('push')
|
|
691
|
-
if (pushConfig) {
|
|
692
|
-
await app.createService('push', { servicesPath })
|
|
693
|
-
debug('\'push\' service created')
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
const tagsConfig = app.get('tags')
|
|
697
|
-
if (tagsConfig) {
|
|
698
|
-
await createTagsService.call(app, tagsConfig)
|
|
699
|
-
debug('\'tags\' service created')
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
const configurationsConfig = app.get('configurations')
|
|
703
|
-
if (configurationsConfig) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
704
|
-
<span class="cstat-no" title="statement not covered" > await createConfigurationsService.call(app, configurationsConfig)</span>
|
|
705
|
-
<span class="cstat-no" title="statement not covered" > debug('\'configurations\' service created')</span>
|
|
706
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
707
|
-
}
|
|
708
|
-
</pre></td></tr></table></pre>
|
|
709
|
-
|
|
710
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
711
|
-
</div><!-- /wrapper -->
|
|
712
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
713
|
-
Code coverage generated by
|
|
714
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
715
|
-
at 2025-12-17T09:26:49.774Z
|
|
716
|
-
</div>
|
|
717
|
-
<script src="../../../prettify.js"></script>
|
|
718
|
-
<script>
|
|
719
|
-
window.onload = function () {
|
|
720
|
-
prettyPrint();
|
|
721
|
-
};
|
|
722
|
-
</script>
|
|
723
|
-
<script src="../../../sorter.js"></script>
|
|
724
|
-
<script src="../../../block-navigation.js"></script>
|
|
725
|
-
</body>
|
|
726
|
-
</html>
|
|
727
|
-
|