@underpostnet/cyberia 3.3.73 → 3.3.77

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.
Files changed (269) hide show
  1. package/.env.example +17 -5
  2. package/.github/workflows/coverall.cyberia.ci.yml +10 -0
  3. package/.github/workflows/docker-image.cyberia-client.ci.yml +1 -1
  4. package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +1 -1
  5. package/.github/workflows/docker-image.cyberia-server.ci.yml +1 -1
  6. package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +1 -1
  7. package/.github/workflows/docker-image.engine-cyberia.ci.yml +1 -1
  8. package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +1 -1
  9. package/.github/workflows/engine-cyberia.ci.yml +1 -1
  10. package/.github/workflows/publish.cyberia.ci.yml +44 -0
  11. package/AGENTS.md +61 -12
  12. package/CHANGELOG.md +159 -161
  13. package/CLI-HELP.md +20 -13
  14. package/Dockerfile +1 -1
  15. package/Dockerfile.dev +1 -1
  16. package/Dockerfile.test +2 -2
  17. package/README.md +28 -28
  18. package/bin/build.js +96 -21
  19. package/bin/cyberia.js +1247 -1373
  20. package/bin/index.js +1247 -1373
  21. package/compose.env +17 -5
  22. package/conf.js +7 -4
  23. package/deploy/cyberia-client/deploy.sh +10 -11
  24. package/deploy/cyberia-client/package.sh +0 -1
  25. package/deploy/cyberia-client/state.sh +3 -2
  26. package/deploy/cyberia-server/deploy.sh +10 -11
  27. package/deploy/cyberia-server/package.sh +0 -1
  28. package/deploy/cyberia-server/state.sh +3 -2
  29. package/deploy/dd-cyberia/deploy.sh +5 -5
  30. package/deploy/dd-cyberia/init.sh +15 -14
  31. package/deploy/dd-cyberia/package.sh +0 -1
  32. package/deploy/dd-cyberia/state.sh +2 -2
  33. package/deploy/dd-cyberia/sync-deploy.sh +139 -75
  34. package/deploy/lib/config.sh +29 -0
  35. package/deploy/lib/github-actions-logging.sh +92 -76
  36. package/deploy/lib/host.sh +28 -19
  37. package/deploy/lib/state.sh +4 -1
  38. package/deploy/pwa-microservices-template/deploy.sh +10 -8
  39. package/deploy/release/deploy.sh +0 -2
  40. package/deployment.yaml +1 -1
  41. package/docker-compose.yml +23 -17
  42. package/docs/coverage/cyberia/api/cyberia-instance/cyberia-fallback-capture.js.html +1591 -0
  43. package/docs/coverage/cyberia/api/cyberia-instance/index.html +116 -0
  44. package/docs/coverage/cyberia/api/cyberia-server-defaults/cyberia-server-defaults.js.html +4138 -0
  45. package/docs/coverage/cyberia/api/cyberia-server-defaults/index.html +116 -0
  46. package/docs/coverage/cyberia/api/object-layer/index.html +116 -0
  47. package/docs/coverage/cyberia/api/object-layer/object-layer.model.js.html +1393 -0
  48. package/docs/coverage/cyberia/base.css +362 -0
  49. package/docs/coverage/cyberia/block-navigation.js +82 -0
  50. package/docs/coverage/cyberia/favicon.png +0 -0
  51. package/docs/coverage/cyberia/index.html +161 -0
  52. package/docs/coverage/cyberia/prettify.css +101 -0
  53. package/docs/coverage/cyberia/prettify.js +937 -0
  54. package/docs/coverage/cyberia/projects/cyberia/atlas-sprite-sheet-generator.js.html +1315 -0
  55. package/docs/coverage/cyberia/projects/cyberia/index.html +176 -0
  56. package/docs/coverage/cyberia/projects/cyberia/instance-backup.js.html +715 -0
  57. package/docs/coverage/cyberia/projects/cyberia/instance-data.js.html +2182 -0
  58. package/docs/coverage/cyberia/projects/cyberia/shape-generator.js.html +3265 -0
  59. package/docs/coverage/cyberia/projects/cyberia/stat-balance.js.html +328 -0
  60. package/docs/coverage/cyberia/sort-arrow-sprite.png +0 -0
  61. package/docs/coverage/cyberia/sorter.js +205 -0
  62. package/hardhat/package-lock.json +2 -2
  63. package/hardhat/package.json +1 -1
  64. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  65. package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +1 -1
  66. package/manifests/deployment/dd-cyberia-development/deployment.yaml +1 -1
  67. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  68. package/manifests/deployment/mongo-express/deployment.yaml +46 -27
  69. package/manifests/deployment/mongo-express/kustomization.yaml +9 -0
  70. package/manifests/deployment/mongo-express/mongo-express-nodeport.yaml +18 -0
  71. package/manifests/deployment/mongo-express/service.yaml +16 -0
  72. package/manifests/deployment/mongo-express-no-auth/disable-mongodb-auth.yaml +16 -0
  73. package/manifests/deployment/mongo-express-no-auth/kustomization.yaml +16 -0
  74. package/package.json +19 -17
  75. package/scripts/test-monitor.sh +3 -3
  76. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +14 -9
  77. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +36 -5
  78. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +5 -0
  79. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +88 -184
  80. package/src/api/cyberia-action/cyberia-action.router.js +2 -2
  81. package/src/api/cyberia-action/cyberia-action.service.js +3 -4
  82. package/src/api/cyberia-audio/cyberia-audio.controller.js +6 -0
  83. package/src/api/cyberia-audio/cyberia-audio.model.js +61 -0
  84. package/src/api/cyberia-audio/cyberia-audio.router.js +21 -0
  85. package/src/api/cyberia-audio/cyberia-audio.service.js +220 -0
  86. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +1 -3
  87. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +10 -19
  88. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +12 -34
  89. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +15 -32
  90. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +1 -1
  91. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +1 -1
  92. package/src/api/cyberia-entity/cyberia-entity.model.js +2 -0
  93. package/src/api/cyberia-entity/cyberia-entity.service.js +1 -1
  94. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +8 -2
  95. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +31 -20
  96. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +16 -1
  97. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +466 -3
  98. package/src/api/cyberia-instance/cyberia-fallback-capture.js +87 -51
  99. package/src/api/cyberia-instance/cyberia-fallback-world.js +21 -40
  100. package/src/api/cyberia-instance/cyberia-instance-boot.service.js +5 -5
  101. package/src/api/cyberia-instance/cyberia-instance-items.js +98 -0
  102. package/src/api/cyberia-instance/cyberia-instance-map.service.js +34 -141
  103. package/src/api/cyberia-instance/cyberia-instance.controller.js +1 -4
  104. package/src/api/cyberia-instance/cyberia-instance.model.js +0 -14
  105. package/src/api/cyberia-instance/cyberia-instance.router.js +3 -16
  106. package/src/api/cyberia-instance/cyberia-instance.service.js +3 -43
  107. package/src/api/cyberia-instance/cyberia-world-generator.js +8 -13
  108. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +49 -75
  109. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +74 -1
  110. package/src/api/cyberia-map/cyberia-map.service.js +6 -2
  111. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.controller.js +31 -0
  112. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.model.js +56 -0
  113. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.router.js +33 -0
  114. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +189 -0
  115. package/src/api/cyberia-quest/cyberia-quest.router.js +3 -3
  116. package/src/api/cyberia-quest/cyberia-quest.service.js +3 -3
  117. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +1 -1
  118. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +403 -188
  119. package/src/api/cyberia-skill/cyberia-skill.model.js +6 -6
  120. package/src/api/file/file.ref.js +153 -0
  121. package/src/api/file/file.ref.json +11 -2
  122. package/src/api/object-layer/object-layer.model.js +47 -12
  123. package/src/api/object-layer/object-layer.router.js +10 -3
  124. package/src/api/object-layer/object-layer.service.js +113 -120
  125. package/src/cli/app.js +12 -1
  126. package/src/cli/client.js +2 -2
  127. package/src/cli/cluster.js +80 -18
  128. package/src/cli/deploy.js +215 -34
  129. package/src/cli/docker-compose.js +1 -1
  130. package/src/cli/fs-selection.js +115 -0
  131. package/src/cli/fs.js +158 -342
  132. package/src/cli/index.js +22 -10
  133. package/src/cli/release.js +3 -1
  134. package/src/cli/repository.js +35 -9
  135. package/src/cli/run.js +80 -199
  136. package/src/cli/test.js +4 -0
  137. package/src/cli/wireguard.js +32 -31
  138. package/src/client/components/core/Badge.js +0 -1
  139. package/src/client/components/core/CssCore.js +8 -1
  140. package/src/client/components/core/Docs.js +77 -100
  141. package/src/client/components/core/Modal.js +77 -23
  142. package/src/client/components/core/ToolTip.js +15 -0
  143. package/src/client/components/cryptokoyn/AppShellCryptokoyn.js +0 -2
  144. package/src/client/components/cyberia/ActionEngineCyberia.js +12 -36
  145. package/src/client/components/cyberia/EntityEngineCyberia.js +492 -121
  146. package/src/client/components/cyberia/InstanceEngineCyberia.js +129 -160
  147. package/src/client/components/cyberia/InstanceSelectionView.js +7 -1
  148. package/src/client/components/cyberia/MapEngineCyberia.js +175 -69
  149. package/src/client/components/cyberia/ObjectLayerEngine.js +1011 -97
  150. package/src/client/components/cyberia/ObjectLayerEngineModal.js +81 -155
  151. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +113 -98
  152. package/src/client/components/cyberia/SharedDefaultsCyberia.js +215 -56
  153. package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +0 -34
  154. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +1 -1
  155. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +712 -76
  156. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +0 -4
  157. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +0 -4
  158. package/src/client/components/default/AppShellDefault.js +1 -4
  159. package/src/client/components/itemledger/AppShellItemledger.js +0 -2
  160. package/src/client/components/underpost/AppShellUnderpost.js +1 -1
  161. package/src/client/public/cyberia-docs/ARCHITECTURE.md +15 -15
  162. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +280 -24
  163. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +51 -29
  164. package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +52 -53
  165. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +16 -11
  166. package/src/client/public/cyberia-docs/CYBERIA.md +28 -28
  167. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +11 -5
  168. package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
  169. package/src/client/public/cyberia-docs/STATS-PROGRESSION.md +217 -0
  170. package/src/client/public/cyberia-docs/WHITE-PAPER.md +20 -12
  171. package/src/client/services/cyberia-audio/cyberia-audio.service.js +99 -0
  172. package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +38 -0
  173. package/src/client/services/cyberia-instance/cyberia-instance.management.js +5 -4
  174. package/src/client/services/cyberia-instance/cyberia-instance.service.js +0 -40
  175. package/src/client/services/cyberia-map/cyberia-map.management.js +5 -4
  176. package/src/client/services/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +138 -0
  177. package/src/client/services/object-layer/object-layer.management.js +6 -10
  178. package/src/client/services/object-layer/object-layer.service.js +3 -1
  179. package/src/client/ssr/views/Cyberia404.js +3 -3
  180. package/src/client-builder/client-build-docs.js +52 -52
  181. package/src/client-builder/client-build.js +67 -44
  182. package/src/client-builder/client-bundle.js +347 -0
  183. package/src/db/mongo/MongoExpress.js +187 -0
  184. package/src/grpc/cyberia/grpc-server.js +5 -7
  185. package/src/index.js +1 -1
  186. package/src/projects/cyberia/atlas-sprite-sheet-generator.js +143 -146
  187. package/src/projects/cyberia/atlas-sprite-sheet-store.js +391 -0
  188. package/src/projects/cyberia/besu-genesis-generator.js +5 -14
  189. package/src/projects/cyberia/boot-contract-fixtures.js +32 -0
  190. package/src/projects/cyberia/catalog-cyberia.js +3 -2
  191. package/src/projects/cyberia/gemini-client.js +3 -3
  192. package/src/projects/cyberia/generate-saga.js +4 -11
  193. package/src/projects/cyberia/hot-reload-trigger.js +17 -28
  194. package/src/projects/cyberia/instance-backup.js +210 -0
  195. package/src/projects/cyberia/instance-data.js +177 -257
  196. package/src/projects/cyberia/map-preview-generator.js +32 -68
  197. package/src/projects/cyberia/object-layer.js +152 -319
  198. package/src/projects/cyberia/seed-audio.js +139 -0
  199. package/src/projects/cyberia/semantic-layer-generator-skin.js +2 -8
  200. package/src/projects/cyberia/semantic-layer-generator.js +2 -18
  201. package/src/projects/cyberia/stat-balance.js +81 -0
  202. package/src/projects/cyberia/stat-commands.js +23 -0
  203. package/src/projects/cyberia/stat-contract-generator.js +101 -0
  204. package/src/runtime/cyberia-client/Dockerfile +8 -4
  205. package/src/runtime/cyberia-client/Dockerfile.dev +5 -2
  206. package/src/runtime/cyberia-server/Dockerfile +9 -2
  207. package/src/runtime/cyberia-server/Dockerfile.dev +8 -1
  208. package/src/runtime/engine-cyberia/Dockerfile +1 -1
  209. package/src/runtime/engine-cyberia/Dockerfile.dev +1 -1
  210. package/src/runtime/engine-cyberia/Dockerfile.test +2 -2
  211. package/src/runtime/engine-cyberia/compose.env +17 -5
  212. package/src/runtime/engine-cyberia/docker-compose.yml +23 -17
  213. package/src/server/build/coverage.js +113 -42
  214. package/src/server/build/package.js +55 -12
  215. package/src/server/build/testing.js +59 -9
  216. package/src/server/network/middlewares.js +8 -2
  217. package/src/server/network/underpost-gateway.js +113 -14
  218. package/src/server/ops/logger.js +70 -35
  219. package/src/server/runtime/conf.js +40 -9
  220. package/src/server/runtime/start.js +11 -2
  221. package/src/server/storage/data-query.js +16 -0
  222. package/src/server/storage/downloader.js +62 -14
  223. package/src/server/storage/zip.js +153 -0
  224. package/test/integration/app/cyberia/atlas-sprite-sheet-store.test.js +402 -0
  225. package/test/integration/app/cyberia/atlas-sprite-sheet.test.js +86 -0
  226. package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +34 -0
  227. package/test/integration/app/cyberia/cyberia-entity-type-default.test.js +842 -0
  228. package/test/integration/app/cyberia/cyberia-instance-conf-coerce.test.js +53 -0
  229. package/test/integration/app/cyberia/cyberia-instance-conf-defaults.test.js +16 -22
  230. package/test/integration/app/cyberia/cyberia-instance-items.test.js +90 -0
  231. package/test/integration/app/cyberia/cyberia-load.test.js +6 -7
  232. package/test/integration/app/cyberia/cyberia-map-audio-conf.test.js +256 -0
  233. package/test/integration/app/cyberia/cyberia-stats.test.js +150 -0
  234. package/test/integration/app/cyberia/fallback-world-capture.test.js +87 -2
  235. package/test/integration/app/cyberia/object-layer-item-selection.test.js +56 -0
  236. package/test/integration/app/cyberia/object-layer-natural-key.test.js +32 -0
  237. package/test/integration/app/cyberia/seed-audio.test.js +275 -0
  238. package/test/integration/infra/2-network/wireguard-cli.test.js +33 -9
  239. package/test/integration/infra/2-network/wireguard-edge.test.js +58 -18
  240. package/test/integration/infra/3-cluster/mongo-express-deploy.test.js +156 -0
  241. package/test/integration/infra/4-ingress/api-cross-origin.test.js +79 -0
  242. package/test/integration/infra/4-ingress/underpost-ingress.test.js +1 -1
  243. package/test/unit/catalog.test.js +13 -2
  244. package/test/unit/client-build-docs.test.js +97 -70
  245. package/test/unit/client-bundle.test.js +313 -0
  246. package/test/unit/conf-resolution.test.js +58 -7
  247. package/test/unit/coverage-artifact.test.js +120 -29
  248. package/test/unit/cyberia/instance-backup.test.js +183 -0
  249. package/test/unit/cyberia/instance-data.test.js +314 -0
  250. package/test/unit/cyberia/instance-object-layer-items.test.js +46 -0
  251. package/test/unit/cyberia/publish-workflow.test.js +22 -0
  252. package/test/unit/cyberia/stat-balance.test.js +69 -0
  253. package/test/unit/deploy-legacy-gateway-sweep.test.js +63 -0
  254. package/test/unit/deploy-log-table.test.js +76 -5
  255. package/test/unit/downloader-integrity.test.js +98 -0
  256. package/test/unit/file-reference-registry.test.js +141 -0
  257. package/test/unit/fs-storage-paths.test.js +596 -0
  258. package/test/unit/gateway-pod-fetch.test.js +95 -0
  259. package/test/unit/letsencrypt-issuer.test.js +101 -0
  260. package/test/unit/logger-redaction.test.js +29 -0
  261. package/test/unit/package.test.js +70 -16
  262. package/test/unit/prepare-host.test.js +84 -1
  263. package/test/unit/release-bump.test.js +3 -1
  264. package/test/unit/start-options.test.js +12 -0
  265. package/test/unit/test-tiers.test.js +27 -0
  266. package/test/unit/zip-archive.test.js +142 -0
  267. package/vitest.config.js +11 -3
  268. package/src/api/cyberia-instance/cyberia-fallback-default-items.js +0 -63
  269. package/src/client/components/cyberia/FallbackWorldEngineCyberia.js +0 -368
@@ -0,0 +1,362 @@
1
+ body,
2
+ html {
3
+ margin: 0;
4
+ padding: 0;
5
+ height: 100%;
6
+ }
7
+ body {
8
+ font-family:
9
+ Helvetica Neue,
10
+ Helvetica,
11
+ Arial;
12
+ font-size: 14px;
13
+ color: #333;
14
+ }
15
+ .small {
16
+ font-size: 12px;
17
+ }
18
+ *,
19
+ *:after,
20
+ *:before {
21
+ -webkit-box-sizing: border-box;
22
+ -moz-box-sizing: border-box;
23
+ box-sizing: border-box;
24
+ }
25
+ h1 {
26
+ font-size: 20px;
27
+ margin: 0;
28
+ }
29
+ h2 {
30
+ font-size: 14px;
31
+ }
32
+ pre {
33
+ font:
34
+ 12px/1.4 Consolas,
35
+ "Liberation Mono",
36
+ Menlo,
37
+ Courier,
38
+ monospace;
39
+ margin: 0;
40
+ padding: 0;
41
+ -moz-tab-size: 2;
42
+ -o-tab-size: 2;
43
+ tab-size: 2;
44
+ }
45
+ a {
46
+ color: #0074d9;
47
+ text-decoration: none;
48
+ }
49
+ a:hover {
50
+ text-decoration: underline;
51
+ }
52
+ .strong {
53
+ font-weight: bold;
54
+ }
55
+ .space-top1 {
56
+ padding: 10px 0 0 0;
57
+ }
58
+ .pad2y {
59
+ padding: 20px 0;
60
+ }
61
+ .pad1y {
62
+ padding: 10px 0;
63
+ }
64
+ .pad2x {
65
+ padding: 0 20px;
66
+ }
67
+ .pad2 {
68
+ padding: 20px;
69
+ }
70
+ .pad1 {
71
+ padding: 10px;
72
+ }
73
+ .space-left2 {
74
+ padding-left: 55px;
75
+ }
76
+ .space-right2 {
77
+ padding-right: 20px;
78
+ }
79
+ .center {
80
+ text-align: center;
81
+ }
82
+ .clearfix {
83
+ display: block;
84
+ }
85
+ .clearfix:after {
86
+ content: "";
87
+ display: block;
88
+ height: 0;
89
+ clear: both;
90
+ visibility: hidden;
91
+ }
92
+ .fl {
93
+ float: left;
94
+ }
95
+ @media only screen and (max-width: 640px) {
96
+ .col3 {
97
+ width: 100%;
98
+ max-width: 100%;
99
+ }
100
+ .hide-mobile {
101
+ display: none !important;
102
+ }
103
+ }
104
+
105
+ .quiet {
106
+ color: #7f7f7f;
107
+ color: rgba(0, 0, 0, 0.5);
108
+ }
109
+ .quiet a {
110
+ opacity: 0.7;
111
+ }
112
+
113
+ .fraction {
114
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
115
+ font-size: 10px;
116
+ color: #555;
117
+ background: #e8e8e8;
118
+ padding: 4px 5px;
119
+ border-radius: 3px;
120
+ vertical-align: middle;
121
+ }
122
+
123
+ div.path a:link,
124
+ div.path a:visited {
125
+ color: #333;
126
+ }
127
+ table.coverage {
128
+ border-collapse: collapse;
129
+ margin: 10px 0 0 0;
130
+ padding: 0;
131
+ }
132
+
133
+ table.coverage td {
134
+ margin: 0;
135
+ padding: 0;
136
+ vertical-align: top;
137
+ }
138
+ table.coverage td.line-count {
139
+ text-align: right;
140
+ padding: 0 5px 0 20px;
141
+ }
142
+ table.coverage td.line-coverage {
143
+ text-align: right;
144
+ padding-right: 10px;
145
+ min-width: 20px;
146
+ }
147
+
148
+ table.coverage td span.cline-any {
149
+ display: inline-block;
150
+ padding: 0 5px;
151
+ width: 100%;
152
+ }
153
+ .missing-if-branch {
154
+ display: inline-block;
155
+ margin-right: 5px;
156
+ border-radius: 3px;
157
+ position: relative;
158
+ padding: 0 4px;
159
+ background: #333;
160
+ color: yellow;
161
+ }
162
+
163
+ .skip-if-branch {
164
+ display: none;
165
+ margin-right: 10px;
166
+ position: relative;
167
+ padding: 0 4px;
168
+ background: #ccc;
169
+ color: white;
170
+ }
171
+ .missing-if-branch .typ,
172
+ .skip-if-branch .typ {
173
+ color: inherit !important;
174
+ }
175
+ .coverage-summary {
176
+ border-collapse: collapse;
177
+ width: 100%;
178
+ }
179
+ .coverage-summary tr {
180
+ border-bottom: 1px solid #bbb;
181
+ }
182
+ .keyline-all {
183
+ border: 1px solid #ddd;
184
+ }
185
+ .coverage-summary td,
186
+ .coverage-summary th {
187
+ padding: 10px;
188
+ }
189
+ .coverage-summary tbody {
190
+ border: 1px solid #bbb;
191
+ }
192
+ .coverage-summary td {
193
+ border-right: 1px solid #bbb;
194
+ }
195
+ .coverage-summary td:last-child {
196
+ border-right: none;
197
+ }
198
+ .coverage-summary th {
199
+ text-align: left;
200
+ font-weight: normal;
201
+ white-space: nowrap;
202
+ }
203
+ .coverage-summary th.file {
204
+ border-right: none !important;
205
+ }
206
+ .coverage-summary th.pct {
207
+ }
208
+ .coverage-summary th.pic,
209
+ .coverage-summary th.abs,
210
+ .coverage-summary td.pct,
211
+ .coverage-summary td.abs {
212
+ text-align: right;
213
+ }
214
+ .coverage-summary td.file {
215
+ white-space: nowrap;
216
+ }
217
+ .coverage-summary td.pic {
218
+ min-width: 120px !important;
219
+ }
220
+ .coverage-summary tfoot td {
221
+ }
222
+
223
+ .coverage-summary .sorter {
224
+ height: 10px;
225
+ width: 7px;
226
+ display: inline-block;
227
+ margin-left: 0.5em;
228
+ background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
229
+ }
230
+ .coverage-summary .sorted .sorter {
231
+ background-position: 0 -20px;
232
+ }
233
+ .coverage-summary .sorted-desc .sorter {
234
+ background-position: 0 -10px;
235
+ }
236
+ .status-line {
237
+ height: 10px;
238
+ }
239
+ /* yellow */
240
+ .cbranch-no {
241
+ background: yellow !important;
242
+ color: #111;
243
+ }
244
+ /* dark red */
245
+ .red.solid,
246
+ .status-line.low,
247
+ .low .cover-fill {
248
+ background: #c21f39;
249
+ }
250
+ .low .chart {
251
+ border: 1px solid #c21f39;
252
+ }
253
+ .highlighted,
254
+ .highlighted .cstat-no,
255
+ .highlighted .fstat-no,
256
+ .highlighted .cbranch-no {
257
+ background: #c21f39 !important;
258
+ }
259
+ /* medium red */
260
+ .cstat-no,
261
+ .fstat-no,
262
+ .cbranch-no,
263
+ .cbranch-no {
264
+ background: #f6c6ce;
265
+ }
266
+ /* light red */
267
+ .low,
268
+ .cline-no {
269
+ background: #fce1e5;
270
+ }
271
+ /* light green */
272
+ .high,
273
+ .cline-yes {
274
+ background: rgb(230, 245, 208);
275
+ }
276
+ /* medium green */
277
+ .cstat-yes {
278
+ background: rgb(161, 215, 106);
279
+ }
280
+ /* dark green */
281
+ .status-line.high,
282
+ .high .cover-fill {
283
+ background: rgb(77, 146, 33);
284
+ }
285
+ .high .chart {
286
+ border: 1px solid rgb(77, 146, 33);
287
+ }
288
+ /* dark yellow (gold) */
289
+ .status-line.medium,
290
+ .medium .cover-fill {
291
+ background: #f9cd0b;
292
+ }
293
+ .medium .chart {
294
+ border: 1px solid #f9cd0b;
295
+ }
296
+ /* light yellow */
297
+ .medium {
298
+ background: #fff4c2;
299
+ }
300
+
301
+ .cstat-skip {
302
+ background: #ddd;
303
+ color: #111;
304
+ }
305
+ .fstat-skip {
306
+ background: #ddd;
307
+ color: #111 !important;
308
+ }
309
+ .cbranch-skip {
310
+ background: #ddd !important;
311
+ color: #111;
312
+ }
313
+
314
+ span.cline-neutral {
315
+ background: #eaeaea;
316
+ }
317
+
318
+ .coverage-summary td.empty {
319
+ opacity: 0.5;
320
+ padding-top: 4px;
321
+ padding-bottom: 4px;
322
+ line-height: 1;
323
+ color: #888;
324
+ }
325
+
326
+ .cover-fill,
327
+ .cover-empty {
328
+ display: inline-block;
329
+ height: 12px;
330
+ }
331
+ .chart {
332
+ line-height: 0;
333
+ }
334
+ .cover-empty {
335
+ background: white;
336
+ }
337
+ .cover-full {
338
+ border-right: none !important;
339
+ }
340
+ pre.prettyprint {
341
+ border: none !important;
342
+ padding: 0 !important;
343
+ margin: 0 !important;
344
+ }
345
+ .com {
346
+ color: #999 !important;
347
+ }
348
+ .ignore-none {
349
+ color: #999;
350
+ font-weight: normal;
351
+ }
352
+
353
+ .wrapper {
354
+ min-height: 100%;
355
+ height: auto !important;
356
+ height: 100%;
357
+ margin: 0 auto -48px;
358
+ }
359
+ .footer,
360
+ .push {
361
+ height: 48px;
362
+ }
@@ -0,0 +1,82 @@
1
+ /* eslint-disable */
2
+ var jumpToCode = (function init() {
3
+ // Classes of code we would like to highlight in the file view
4
+ var missingCoverageClasses = [".cbranch-no", ".cstat-no", ".fstat-no"];
5
+
6
+ // Elements to highlight in the file listing view
7
+ var fileListingElements = ["td.pct.low"];
8
+
9
+ // We don't want to select elements that are direct descendants of another match
10
+ var notSelector = ":not(" + missingCoverageClasses.join("):not(") + ") > "; // becomes `:not(a):not(b) > `
11
+
12
+ // Selector that finds elements on the page to which we can jump
13
+ var selector =
14
+ fileListingElements.join(", ") +
15
+ ", " +
16
+ notSelector +
17
+ missingCoverageClasses.join(", " + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
18
+
19
+ // The NodeList of matching elements
20
+ var missingCoverageElements = document.querySelectorAll(selector);
21
+
22
+ var currentIndex;
23
+
24
+ function toggleClass(index) {
25
+ missingCoverageElements.item(currentIndex).classList.remove("highlighted");
26
+ missingCoverageElements.item(index).classList.add("highlighted");
27
+ }
28
+
29
+ function makeCurrent(index) {
30
+ toggleClass(index);
31
+ currentIndex = index;
32
+ missingCoverageElements.item(index).scrollIntoView({
33
+ behavior: "smooth",
34
+ block: "center",
35
+ inline: "center",
36
+ });
37
+ }
38
+
39
+ function goToPrevious() {
40
+ var nextIndex = 0;
41
+ if (typeof currentIndex !== "number" || currentIndex === 0) {
42
+ nextIndex = missingCoverageElements.length - 1;
43
+ } else if (missingCoverageElements.length > 1) {
44
+ nextIndex = currentIndex - 1;
45
+ }
46
+
47
+ makeCurrent(nextIndex);
48
+ }
49
+
50
+ function goToNext() {
51
+ var nextIndex = 0;
52
+
53
+ if (typeof currentIndex === "number" && currentIndex < missingCoverageElements.length - 1) {
54
+ nextIndex = currentIndex + 1;
55
+ }
56
+
57
+ makeCurrent(nextIndex);
58
+ }
59
+
60
+ return function jump(event) {
61
+ if (
62
+ document.getElementById("fileSearch") === document.activeElement &&
63
+ document.activeElement != null
64
+ ) {
65
+ // if we're currently focused on the search input, we don't want to navigate
66
+ return;
67
+ }
68
+
69
+ switch (event.which) {
70
+ case 78: // n
71
+ case 74: // j
72
+ goToNext();
73
+ break;
74
+ case 66: // b
75
+ case 75: // k
76
+ case 80: // p
77
+ goToPrevious();
78
+ break;
79
+ }
80
+ };
81
+ })();
82
+ window.addEventListener("keydown", jumpToCode);
@@ -0,0 +1,161 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for All files</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>All files</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">90.07% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>1225/1360</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">84.69% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>996/1176</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">91.2% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>197/216</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">91.51% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>1078/1178</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 type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <div class="pad1">
66
+ <table class="coverage-summary">
67
+ <thead>
68
+ <tr>
69
+ <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
70
+ <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
71
+ <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
72
+ <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
73
+ <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
74
+ <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
75
+ <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
76
+ <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
77
+ <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
78
+ <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79
+ </tr>
80
+ </thead>
81
+ <tbody><tr>
82
+ <td class="file high" data-value="api/cyberia-instance"><a href="api/cyberia-instance/index.html">api/cyberia-instance</a></td>
83
+ <td data-value="96.79" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
85
+ </td>
86
+ <td data-value="96.79" class="pct high">96.79%</td>
87
+ <td data-value="156" class="abs high">151/156</td>
88
+ <td data-value="72.22" class="pct medium">72.22%</td>
89
+ <td data-value="126" class="abs medium">91/126</td>
90
+ <td data-value="100" class="pct high">100%</td>
91
+ <td data-value="37" class="abs high">37/37</td>
92
+ <td data-value="99.23" class="pct high">99.23%</td>
93
+ <td data-value="130" class="abs high">129/130</td>
94
+ </tr>
95
+
96
+ <tr>
97
+ <td class="file high" data-value="api/cyberia-server-defaults"><a href="api/cyberia-server-defaults/index.html">api/cyberia-server-defaults</a></td>
98
+ <td data-value="95.27" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
100
+ </td>
101
+ <td data-value="95.27" class="pct high">95.27%</td>
102
+ <td data-value="148" class="abs high">141/148</td>
103
+ <td data-value="89.28" class="pct high">89.28%</td>
104
+ <td data-value="140" class="abs high">125/140</td>
105
+ <td data-value="100" class="pct high">100%</td>
106
+ <td data-value="32" class="abs high">32/32</td>
107
+ <td data-value="95.96" class="pct high">95.96%</td>
108
+ <td data-value="124" class="abs high">119/124</td>
109
+ </tr>
110
+
111
+ <tr>
112
+ <td class="file medium" data-value="api/object-layer"><a href="api/object-layer/index.html">api/object-layer</a></td>
113
+ <td data-value="70.47" class="pic medium">
114
+ <div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
115
+ </td>
116
+ <td data-value="70.47" class="pct medium">70.47%</td>
117
+ <td data-value="105" class="abs medium">74/105</td>
118
+ <td data-value="65" class="pct medium">65%</td>
119
+ <td data-value="60" class="abs medium">39/60</td>
120
+ <td data-value="54.54" class="pct medium">54.54%</td>
121
+ <td data-value="22" class="abs medium">12/22</td>
122
+ <td data-value="70.78" class="pct medium">70.78%</td>
123
+ <td data-value="89" class="abs medium">63/89</td>
124
+ </tr>
125
+
126
+ <tr>
127
+ <td class="file high" data-value="projects/cyberia"><a href="projects/cyberia/index.html">projects/cyberia</a></td>
128
+ <td data-value="90.32" class="pic high">
129
+ <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
130
+ </td>
131
+ <td data-value="90.32" class="pct high">90.32%</td>
132
+ <td data-value="951" class="abs high">859/951</td>
133
+ <td data-value="87.17" class="pct high">87.17%</td>
134
+ <td data-value="850" class="abs high">741/850</td>
135
+ <td data-value="92.8" class="pct high">92.8%</td>
136
+ <td data-value="125" class="abs high">116/125</td>
137
+ <td data-value="91.85" class="pct high">91.85%</td>
138
+ <td data-value="835" class="abs high">767/835</td>
139
+ </tr>
140
+
141
+ </tbody>
142
+ </table>
143
+ </div>
144
+ <div class='push'></div><!-- for sticky footer -->
145
+ </div><!-- /wrapper -->
146
+ <div class='footer quiet pad2 space-top1 center small'>
147
+ Code coverage generated by
148
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
+ at 2026-09-13T20:21:13.226Z
150
+ </div>
151
+ <script src="prettify.js"></script>
152
+ <script>
153
+ window.onload = function () {
154
+ prettyPrint();
155
+ };
156
+ </script>
157
+ <script src="sorter.js"></script>
158
+ <script src="block-navigation.js"></script>
159
+ </body>
160
+ </html>
161
+
@@ -0,0 +1,101 @@
1
+ .pln {
2
+ color: #000;
3
+ }
4
+ @media screen {
5
+ .str {
6
+ color: #080;
7
+ }
8
+ .kwd {
9
+ color: #008;
10
+ }
11
+ .com {
12
+ color: #800;
13
+ }
14
+ .typ {
15
+ color: #606;
16
+ }
17
+ .lit {
18
+ color: #066;
19
+ }
20
+ .pun,
21
+ .opn,
22
+ .clo {
23
+ color: #660;
24
+ }
25
+ .tag {
26
+ color: #008;
27
+ }
28
+ .atn {
29
+ color: #606;
30
+ }
31
+ .atv {
32
+ color: #080;
33
+ }
34
+ .dec,
35
+ .var {
36
+ color: #606;
37
+ }
38
+ .fun {
39
+ color: red;
40
+ }
41
+ }
42
+ @media print, projection {
43
+ .str {
44
+ color: #060;
45
+ }
46
+ .kwd {
47
+ color: #006;
48
+ font-weight: bold;
49
+ }
50
+ .com {
51
+ color: #600;
52
+ font-style: italic;
53
+ }
54
+ .typ {
55
+ color: #404;
56
+ font-weight: bold;
57
+ }
58
+ .lit {
59
+ color: #044;
60
+ }
61
+ .pun,
62
+ .opn,
63
+ .clo {
64
+ color: #440;
65
+ }
66
+ .tag {
67
+ color: #006;
68
+ font-weight: bold;
69
+ }
70
+ .atn {
71
+ color: #404;
72
+ }
73
+ .atv {
74
+ color: #060;
75
+ }
76
+ }
77
+ pre.prettyprint {
78
+ padding: 2px;
79
+ border: 1px solid #888;
80
+ }
81
+ ol.linenums {
82
+ margin-top: 0;
83
+ margin-bottom: 0;
84
+ }
85
+ li.L0,
86
+ li.L1,
87
+ li.L2,
88
+ li.L3,
89
+ li.L5,
90
+ li.L6,
91
+ li.L7,
92
+ li.L8 {
93
+ list-style-type: none;
94
+ }
95
+ li.L1,
96
+ li.L3,
97
+ li.L5,
98
+ li.L7,
99
+ li.L9 {
100
+ background: #eee;
101
+ }