cyberia 3.0.3 → 3.1.3

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 (160) hide show
  1. package/{.env.production → .env.example} +20 -2
  2. package/.github/workflows/engine-cyberia.cd.yml +41 -10
  3. package/.github/workflows/engine-cyberia.ci.yml +53 -14
  4. package/.github/workflows/ghpkg.ci.yml +1 -1
  5. package/.github/workflows/gitlab.ci.yml +1 -1
  6. package/.github/workflows/hardhat.ci.yml +82 -0
  7. package/.github/workflows/npmpkg.ci.yml +37 -8
  8. package/.github/workflows/publish.ci.yml +5 -5
  9. package/.github/workflows/publish.cyberia.ci.yml +5 -5
  10. package/.github/workflows/pwa-microservices-template-page.cd.yml +3 -3
  11. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  12. package/.github/workflows/release.cd.yml +3 -2
  13. package/.vscode/extensions.json +9 -8
  14. package/.vscode/settings.json +3 -2
  15. package/CHANGELOG.md +211 -1
  16. package/CLI-HELP.md +78 -53
  17. package/WHITE-PAPER.md +1540 -0
  18. package/bin/build.js +16 -10
  19. package/bin/cyberia.js +861 -4
  20. package/bin/deploy.js +103 -270
  21. package/bin/file.js +2 -1
  22. package/bin/index.js +861 -4
  23. package/bin/vs.js +3 -3
  24. package/conf.js +105 -97
  25. package/deployment.yaml +148 -4
  26. package/hardhat/.env.example +31 -0
  27. package/hardhat/README.md +531 -0
  28. package/hardhat/WHITE-PAPER.md +1540 -0
  29. package/hardhat/contracts/ObjectLayerToken.sol +391 -0
  30. package/hardhat/deployments/.gitkeep +0 -0
  31. package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
  32. package/hardhat/hardhat.config.js +136 -0
  33. package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
  34. package/hardhat/networks/besu-object-layer.network.json +138 -0
  35. package/hardhat/package-lock.json +7628 -0
  36. package/hardhat/package.json +45 -0
  37. package/hardhat/scripts/deployObjectLayerToken.js +98 -0
  38. package/hardhat/test/ObjectLayerToken.js +590 -0
  39. package/jsdoc.dd-cyberia.json +59 -0
  40. package/jsdoc.json +20 -13
  41. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  42. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  43. package/manifests/deployment/dd-cyberia-development/deployment.yaml +490 -0
  44. package/manifests/deployment/dd-cyberia-development/proxy.yaml +261 -0
  45. package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +132 -0
  46. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  47. package/manifests/deployment/dd-test-development/deployment.yaml +52 -52
  48. package/manifests/deployment/dd-test-development/proxy.yaml +4 -4
  49. package/manifests/pv-pvc-dd.yaml +1 -1
  50. package/package.json +50 -44
  51. package/proxy.yaml +79 -7
  52. package/pv-pvc.yaml +132 -0
  53. package/scripts/k3s-node-setup.sh +1 -1
  54. package/scripts/ports-ls.sh +2 -0
  55. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +3 -1
  56. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +1 -2
  57. package/src/api/document/document.service.js +1 -1
  58. package/src/api/file/file.controller.js +3 -1
  59. package/src/api/file/file.service.js +28 -5
  60. package/src/api/ipfs/ipfs.service.js +2 -2
  61. package/src/api/object-layer/object-layer.controller.js +6 -2
  62. package/src/api/object-layer/object-layer.model.js +12 -8
  63. package/src/api/object-layer/object-layer.router.js +668 -42
  64. package/src/api/object-layer/object-layer.service.js +6 -7
  65. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +1 -2
  66. package/src/api/user/user.router.js +10 -5
  67. package/src/api/user/user.service.js +7 -7
  68. package/src/cli/baremetal.js +6 -10
  69. package/src/cli/cloud-init.js +0 -3
  70. package/src/cli/db.js +54 -71
  71. package/src/cli/deploy.js +64 -12
  72. package/src/cli/env.js +5 -5
  73. package/src/cli/fs.js +0 -2
  74. package/src/cli/image.js +0 -3
  75. package/src/cli/index.js +35 -13
  76. package/src/cli/monitor.js +5 -6
  77. package/src/cli/repository.js +329 -46
  78. package/src/cli/run.js +180 -120
  79. package/src/cli/secrets.js +1 -3
  80. package/src/cli/ssh.js +1 -1
  81. package/src/client/Itemledger.index.js +1 -959
  82. package/src/client/components/core/AgGrid.js +20 -5
  83. package/src/client/components/core/Alert.js +2 -2
  84. package/src/client/components/core/Content.js +22 -3
  85. package/src/client/components/core/Docs.js +30 -6
  86. package/src/client/components/core/FileExplorer.js +71 -4
  87. package/src/client/components/core/Input.js +1 -1
  88. package/src/client/components/core/Modal.js +20 -6
  89. package/src/client/components/core/RichText.js +1 -2
  90. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +1 -0
  91. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
  92. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +0 -1
  93. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +64 -2
  94. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +1 -0
  95. package/src/client/components/underpost/CssUnderpost.js +59 -0
  96. package/src/client/components/underpost/LogInUnderpost.js +3 -0
  97. package/src/client/components/underpost/LogOutUnderpost.js +2 -0
  98. package/src/client/components/underpost/MenuUnderpost.js +99 -13
  99. package/src/client/components/underpost/RoutesUnderpost.js +2 -0
  100. package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
  101. package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
  102. package/src/client/public/cryptokoyn/microdata.json +85 -0
  103. package/src/client/public/cryptokoyn/site.webmanifest +57 -0
  104. package/src/client/public/cryptokoyn/sitemap +3 -3
  105. package/src/client/public/default/sitemap +3 -3
  106. package/src/client/public/itemledger/browserconfig.xml +2 -2
  107. package/src/client/public/itemledger/manifest.webmanifest +4 -4
  108. package/src/client/public/itemledger/microdata.json +71 -0
  109. package/src/client/public/itemledger/sitemap +3 -3
  110. package/src/client/public/itemledger/yandex-browser-manifest.json +2 -2
  111. package/src/client/public/test/sitemap +3 -3
  112. package/src/client/ssr/body/404.js +15 -11
  113. package/src/client/ssr/body/500.js +15 -11
  114. package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
  115. package/src/client/ssr/head/PwaItemledger.js +60 -0
  116. package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
  117. package/src/client/ssr/pages/Test.js +11 -10
  118. package/src/client.build.js +0 -3
  119. package/src/client.dev.js +0 -3
  120. package/src/db/DataBaseProvider.js +17 -2
  121. package/src/db/mariadb/MariaDB.js +14 -9
  122. package/src/db/mongo/MongooseDB.js +17 -1
  123. package/src/index.js +1 -1
  124. package/src/proxy.js +0 -3
  125. package/src/runtime/express/Express.js +15 -9
  126. package/src/runtime/lampp/Lampp.js +6 -13
  127. package/src/server/auth.js +12 -14
  128. package/src/server/backup.js +2 -3
  129. package/src/server/besu-genesis-generator.js +1630 -0
  130. package/src/server/client-build-docs.js +126 -17
  131. package/src/server/client-build-live.js +9 -18
  132. package/src/server/client-build.js +203 -75
  133. package/src/server/client-dev-server.js +14 -13
  134. package/src/server/conf.js +376 -164
  135. package/src/server/cron.js +2 -1
  136. package/src/server/dns.js +28 -12
  137. package/src/server/downloader.js +0 -2
  138. package/src/server/logger.js +27 -9
  139. package/src/server/object-layer.js +79 -6
  140. package/src/server/peer.js +0 -2
  141. package/src/server/process.js +1 -50
  142. package/src/server/proxy.js +4 -8
  143. package/src/server/runtime.js +5 -8
  144. package/src/server/ssr.js +0 -3
  145. package/src/server/start.js +19 -12
  146. package/src/server/tls.js +0 -2
  147. package/src/server.js +0 -4
  148. package/.env.development +0 -43
  149. package/.env.test +0 -43
  150. package/hardhat/contracts/CryptoKoyn.sol +0 -59
  151. package/hardhat/contracts/ItemLedger.sol +0 -73
  152. package/hardhat/contracts/Lock.sol +0 -34
  153. package/hardhat/hardhat.config.cjs +0 -45
  154. package/hardhat/ignition/modules/Lock.js +0 -18
  155. package/hardhat/networks/cryptokoyn-itemledger.network.json +0 -29
  156. package/hardhat/scripts/deployCryptokoyn.cjs +0 -25
  157. package/hardhat/scripts/deployItemledger.cjs +0 -25
  158. package/hardhat/test/Lock.js +0 -126
  159. package/hardhat/white-paper.md +0 -581
  160. package/white-paper.md +0 -581
@@ -158,6 +158,65 @@ const CssCommonUnderpost = async () => {
158
158
  .creator-avatar {
159
159
  border-radius: 0px !important;
160
160
  }
161
+
162
+ .content-render h1 {
163
+ font-size: 18px;
164
+ }
165
+ .content-render h2 {
166
+ font-size: 16px;
167
+ }
168
+ .content-render h3 {
169
+ font-size: 14px;
170
+ }
171
+ .content-render p {
172
+ font-size: 22px;
173
+ }
174
+ .underpost-panel-subtitle {
175
+ top: 3px !important;
176
+ }
177
+ .underpost-panel-cell,
178
+ .underpost-panel-cell p,
179
+ .underpost-panel-cell span,
180
+ .underpost-panel-cell a,
181
+ .underpost-panel-cell div,
182
+ .underpost-panel-cell pre,
183
+ .underpost-panel-cell code,
184
+ .EasyMDEContainer,
185
+ .editor-preview,
186
+ .editor-preview-full,
187
+ .editor-preview p,
188
+ .editor-preview-full p,
189
+ .editor-preview span,
190
+ .editor-preview-full span,
191
+ .editor-preview a,
192
+ .editor-preview-full a,
193
+ .editor-preview div,
194
+ .editor-preview-full div,
195
+ .editor-preview pre,
196
+ .editor-preview-full pre,
197
+ .editor-preview code,
198
+ .editor-preview-full code {
199
+ font-family: var(--up-font-retro-sensitive);
200
+ font-size: 24px;
201
+ }
202
+ .underpost-panel-cell h1,
203
+ .editor-preview h1,
204
+ .editor-preview-full h1 {
205
+ font-family: var(--up-font-retro-sensitive);
206
+ font-size: 36px;
207
+ }
208
+ .underpost-panel-cell h2,
209
+ .editor-preview h2,
210
+ .editor-preview-full h2 {
211
+ font-family: var(--up-font-retro-sensitive);
212
+ font-size: 30px;
213
+ }
214
+ .underpost-panel-cell h3,
215
+ .editor-preview h3,
216
+ .editor-preview-full h3 {
217
+ font-family: var(--up-font-retro-sensitive);
218
+ font-size: 26px;
219
+ }
161
220
  </style>
162
221
 
163
222
  <div class="ag-grid-style"></div>`;
@@ -3,6 +3,8 @@ import { LogIn } from '../core/LogIn.js';
3
3
  import { ElementsUnderpost } from './ElementsUnderpost.js';
4
4
  import { PanelForm } from '../core/PanelForm.js';
5
5
  import { RouterReady } from '../core/Router.js';
6
+ import { s } from '../core/VanillaJs.js';
7
+ import { commonUserGuard } from '../core/CommonJs.js';
6
8
 
7
9
  const LogInUnderpost = async function () {
8
10
  LogIn.Event['LogInUnderpost'] = async (options) => {
@@ -12,6 +14,7 @@ const LogInUnderpost = async function () {
12
14
 
13
15
  await RouterReady;
14
16
  await PanelForm.Data['underpost-panel'].updatePanel();
17
+ if (s(`.main-btn-cloud`) && commonUserGuard(user.role)) s(`.main-btn-cloud`).classList.remove('hide');
15
18
  };
16
19
  const { user } = await Auth.sessionIn();
17
20
  ElementsUnderpost.Data.user.main.model.user = user;
@@ -1,12 +1,14 @@
1
1
  import { LogOut } from '../core/LogOut.js';
2
2
  import { ElementsUnderpost } from './ElementsUnderpost.js';
3
3
  import { PanelForm } from '../core/PanelForm.js';
4
+ import { s } from '../core/VanillaJs.js';
4
5
 
5
6
  const LogOutUnderpost = async function () {
6
7
  LogOut.Event['LogOutUnderpost'] = async (result = { user: { _id: '' } }) => {
7
8
  ElementsUnderpost.Data.user.main.model.user = result.user;
8
9
 
9
10
  PanelForm.Data['underpost-panel'].updatePanel();
11
+ if (s(`.main-btn-cloud`)) s(`.main-btn-cloud`).classList.add('hide');
10
12
  };
11
13
  };
12
14
 
@@ -23,6 +23,8 @@ import { SearchBox } from '../core/SearchBox.js';
23
23
  import { DocumentSearchProvider } from './DocumentSearchProvider.js';
24
24
  import { PublicProfile } from '../core/PublicProfile.js';
25
25
  import { Polyhedron } from '../core/Polyhedron.js';
26
+ import { FileExplorer } from '../core/FileExplorer.js';
27
+ import { Content } from '../core/Content.js';
26
28
 
27
29
  const MenuUnderpost = {
28
30
  Data: {},
@@ -50,19 +52,24 @@ const MenuUnderpost = {
50
52
  handleContainerClass: 'handle-btn-container',
51
53
  tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('blog')),
52
54
  })}
53
- ${await BtnIcon.Render({
54
- class: 'in wfa main-btn-menu main-btn-lab-gallery hide',
55
- useMenuBtn: true,
56
- label: renderMenuLabel({
57
- icon: html`<img class="inl underpost-menu-icon" src="${getProxyPath()}assets/ui-icons/gallery.png" />`,
58
- text: html`<span class="menu-label-text">${Translate.Render('lab-gallery')}</span>`,
59
- }),
60
- // style: 'display: none',
61
- attrs: `data-id="lab-gallery"`,
62
- tabHref: `${getProxyPath()}lab-gallery`,
63
- handleContainerClass: 'handle-btn-container',
64
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('blog')),
65
- })}
55
+ ${true
56
+ ? ''
57
+ : await BtnIcon.Render({
58
+ class: 'in wfa main-btn-menu main-btn-lab-gallery hide',
59
+ useMenuBtn: true,
60
+ label: renderMenuLabel({
61
+ icon: html`<img
62
+ class="inl underpost-menu-icon"
63
+ src="${getProxyPath()}assets/ui-icons/gallery.png"
64
+ />`,
65
+ text: html`<span class="menu-label-text">${Translate.Render('lab-gallery')}</span>`,
66
+ }),
67
+ // style: 'display: none',
68
+ attrs: `data-id="lab-gallery"`,
69
+ tabHref: `${getProxyPath()}lab-gallery`,
70
+ handleContainerClass: 'handle-btn-container',
71
+ tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('blog')),
72
+ })}
66
73
  ${await BtnIcon.Render({
67
74
  class: 'in wfa main-btn-menu main-btn-home main-btn-menu-active',
68
75
  useMenuBtn: true,
@@ -139,6 +146,30 @@ const MenuUnderpost = {
139
146
  handleContainerClass: 'handle-btn-container',
140
147
  tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('public-profile')),
141
148
  })}
149
+ ${await BtnIcon.Render({
150
+ class: 'in wfa main-btn-menu main-btn-content hide',
151
+ useMenuBtn: true,
152
+ label: renderMenuLabel({
153
+ icon: html`<img class="inl underpost-menu-icon" src="${getProxyPath()}assets/ui-icons/doc.png" />`,
154
+ text: html`<span class="menu-label-text">${Translate.Render('content')}</span>`,
155
+ }),
156
+ attrs: `data-id="content"`,
157
+ tabHref: `${getProxyPath()}content`,
158
+ handleContainerClass: 'handle-btn-container',
159
+ tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('content')),
160
+ })}
161
+ ${await BtnIcon.Render({
162
+ class: 'in wfa main-btn-menu main-btn-cloud hide',
163
+ useMenuBtn: true,
164
+ label: renderMenuLabel({
165
+ icon: html`<img class="inl underpost-menu-icon" src="${getProxyPath()}assets/ui-icons/cloud.png" />`,
166
+ text: html`<span class="menu-label-text">${Translate.Render('cloud')}</span>`,
167
+ }),
168
+ attrs: `data-id="cloud"`,
169
+ tabHref: `${getProxyPath()}cloud`,
170
+ handleContainerClass: 'handle-btn-container',
171
+ tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('cloud')),
172
+ })}
142
173
  ${await BtnIcon.Render({
143
174
  class: 'in wfa main-btn-menu main-btn-settings',
144
175
  useMenuBtn: true,
@@ -543,6 +574,61 @@ const MenuUnderpost = {
543
574
  });
544
575
  });
545
576
 
577
+ EventsUI.onClick(`.main-btn-content`, async () => {
578
+ let subModalId = '';
579
+ const path =
580
+ location.pathname[location.pathname.length - 1] === '/' ? location.pathname.slice(0, -1) : location.pathname;
581
+
582
+ if (path.split('/').pop() === 'content' && getQueryParams().cid) {
583
+ subModalId = `-${getQueryParams().cid}`;
584
+ }
585
+
586
+ const { barConfig } = await Themes[Css.currentTheme]();
587
+ await Modal.Render({
588
+ id: `modal-content${subModalId}`,
589
+ route: 'content',
590
+ barConfig,
591
+ title: renderViewTitle({
592
+ icon: html`<img class="inl underpost-menu-icon-modal" src="${getProxyPath()}assets/ui-icons/doc.png" />`,
593
+ text: `<span class='inl underpost-text-title-modal'>${Translate.Render('content')}</span>`,
594
+ }),
595
+ html: async () =>
596
+ await Content.Render({
597
+ idModal: `modal-content${subModalId}`,
598
+ titleIcon: html`<img
599
+ class="inl underpost-menu-icon-modal"
600
+ src="${getProxyPath()}assets/ui-icons/doc.png"
601
+ />`,
602
+ }),
603
+ query: true,
604
+ observer: true,
605
+ handleType: 'bar',
606
+ maximize: true,
607
+ mode: 'view',
608
+ slideMenu: 'modal-menu',
609
+ RouterInstance,
610
+ });
611
+ });
612
+
613
+ EventsUI.onClick(`.main-btn-cloud`, async () => {
614
+ const { barConfig } = await Themes[Css.currentTheme]();
615
+ await Modal.Render({
616
+ id: 'modal-cloud',
617
+ route: 'cloud',
618
+ barConfig,
619
+ title: renderViewTitle({
620
+ icon: html`<img class="inl underpost-menu-icon-modal" src="${getProxyPath()}assets/ui-icons/cloud.png" />`,
621
+ text: `<span class='inl underpost-text-title-modal'>${Translate.Render('cloud')}</span>`,
622
+ }),
623
+ html: async () => await FileExplorer.Render({ idModal: 'modal-cloud' }),
624
+ handleType: 'bar',
625
+ maximize: true,
626
+ mode: 'view',
627
+ slideMenu: 'modal-menu',
628
+ RouterInstance,
629
+ });
630
+ });
631
+
546
632
  EventsUI.onClick(`.main-btn-recover`, async () => {
547
633
  const { barConfig } = await Themes[Css.currentTheme]();
548
634
  await Modal.Render({
@@ -32,6 +32,8 @@ const RoutesUnderpost = () => {
32
32
  '/u': { title: 'public-profile', render: () => s(`.main-btn-public-profile`).click() },
33
33
  '/settings': { title: 'settings', render: () => s(`.main-btn-settings`).click() },
34
34
  '/recover': { title: 'recover', render: () => s(`.main-btn-recover`).click() },
35
+ '/content': { title: 'content', render: () => s(`.main-btn-content`).click() },
36
+ '/cloud': { title: 'cloud', render: () => s(`.main-btn-cloud`).click() },
35
37
  '/polyhedron': { title: 'polyhedron', render: () => s(`.main-btn-polyhedron`).click() },
36
38
  };
37
39
  };
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <browserconfig>
3
+ <msapplication>
4
+ <tile>
5
+ <square70x70logo src="/assets/splash/mstile-70x70.png"/>
6
+ <square150x150logo src="/assets/splash/mstile-150x150.png"/>
7
+ <wide310x150logo src="/assets/splash/mstile-310x150.png"/>
8
+ <square310x310logo src="/assets/splash/mstile-310x310.png"/>
9
+ <TileColor>#E1DB07</TileColor>
10
+ </tile>
11
+ </msapplication>
12
+ </browserconfig>
@@ -0,0 +1,85 @@
1
+ [
2
+ {
3
+ "@context": "https://schema.org",
4
+ "@type": "WebApplication",
5
+ "name": "Cryptokoyn",
6
+ "alternateName": "CKY",
7
+ "url": "https://cryptokoyn.net",
8
+ "description": "Financial portal and token hub for CryptoKoyn (CKY) — the fungible ERC-1155 currency of the Cyberia Online ecosystem. Staking, governance, analytics, and wallet management.",
9
+ "applicationCategory": "FinanceApplication",
10
+ "operatingSystem": "Any",
11
+ "browserRequirements": "Requires JavaScript. Requires HTML5.",
12
+ "offers": {
13
+ "@type": "Offer",
14
+ "price": "0",
15
+ "priceCurrency": "USD"
16
+ },
17
+ "author": {
18
+ "@type": "Organization",
19
+ "name": "Underpost",
20
+ "url": "https://github.com/underpostnet"
21
+ },
22
+ "potentialAction": {
23
+ "@type": "SearchAction",
24
+ "target": "https://cryptokoyn.net/?q={search_term_string}",
25
+ "query-input": "required name=search_term_string"
26
+ },
27
+ "featureList": [
28
+ "ERC-1155 Token Management",
29
+ "Staking Dashboard",
30
+ "Governance Voting",
31
+ "Wallet Management",
32
+ "Analytics & Charts",
33
+ "Real-time Price Tracking"
34
+ ],
35
+ "screenshot": "https://cryptokoyn.net/assets/banner/koyn-social.png",
36
+ "softwareVersion": "1.0.0",
37
+ "inLanguage": "en"
38
+ },
39
+ {
40
+ "@context": "https://schema.org",
41
+ "@type": "Organization",
42
+ "name": "Cryptokoyn",
43
+ "url": "https://cryptokoyn.net",
44
+ "logo": "https://cryptokoyn.net/assets/splash/android-chrome-256x256.png",
45
+ "description": "Financial portal and token hub for CryptoKoyn (CKY) — the fungible ERC-1155 currency of the Cyberia Online ecosystem.",
46
+ "sameAs": [
47
+ "https://github.com/underpostnet"
48
+ ],
49
+ "parentOrganization": {
50
+ "@type": "Organization",
51
+ "name": "Underpost",
52
+ "url": "https://underpost.net"
53
+ }
54
+ },
55
+ {
56
+ "@context": "https://schema.org",
57
+ "@type": "FAQPage",
58
+ "mainEntity": [
59
+ {
60
+ "@type": "Question",
61
+ "name": "What is CryptoKoyn (CKY)?",
62
+ "acceptedAnswer": {
63
+ "@type": "Answer",
64
+ "text": "CryptoKoyn (CKY) is a fungible ERC-1155 token that serves as the primary currency within the Cyberia Online ecosystem. It can be used for in-game transactions, staking, and governance voting."
65
+ }
66
+ },
67
+ {
68
+ "@type": "Question",
69
+ "name": "How do I stake CKY tokens?",
70
+ "acceptedAnswer": {
71
+ "@type": "Answer",
72
+ "text": "You can stake CKY tokens through the Cryptokoyn staking dashboard. Connect your wallet, select the amount you wish to stake, and confirm the transaction to start earning rewards."
73
+ }
74
+ },
75
+ {
76
+ "@type": "Question",
77
+ "name": "Is Cryptokoyn free to use?",
78
+ "acceptedAnswer": {
79
+ "@type": "Answer",
80
+ "text": "Yes, the Cryptokoyn portal is free to use. You only need a compatible web browser and a wallet to interact with the blockchain features."
81
+ }
82
+ }
83
+ ]
84
+ }
85
+ ]
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "Cryptokoyn",
3
+ "short_name": "Cryptokoyn",
4
+ "description": "Financial portal and token hub for CryptoKoyn (CKY) — the fungible ERC-1155 currency of the Cyberia Online ecosystem.",
5
+ "dir": "auto",
6
+ "lang": "en-US",
7
+ "display": "standalone",
8
+ "orientation": "any",
9
+ "scope": "/",
10
+ "start_url": "/?homescreen=1",
11
+ "background_color": "#E1DB07",
12
+ "theme_color": "#E1DB07",
13
+ "icons": [
14
+ {
15
+ "src": "/assets/splash/android-chrome-36x36.png",
16
+ "sizes": "36x36",
17
+ "type": "image/png",
18
+ "purpose": "any maskable"
19
+ },
20
+ {
21
+ "src": "/assets/splash/android-chrome-48x48.png",
22
+ "sizes": "48x48",
23
+ "type": "image/png",
24
+ "purpose": "any maskable"
25
+ },
26
+ {
27
+ "src": "/assets/splash/android-chrome-72x72.png",
28
+ "sizes": "72x72",
29
+ "type": "image/png",
30
+ "purpose": "any maskable"
31
+ },
32
+ {
33
+ "src": "/assets/splash/android-chrome-96x96.png",
34
+ "sizes": "96x96",
35
+ "type": "image/png",
36
+ "purpose": "any maskable"
37
+ },
38
+ {
39
+ "src": "/assets/splash/android-chrome-144x144.png",
40
+ "sizes": "144x144",
41
+ "type": "image/png",
42
+ "purpose": "any maskable"
43
+ },
44
+ {
45
+ "src": "/assets/splash/android-chrome-192x192.png",
46
+ "sizes": "192x192",
47
+ "type": "image/png",
48
+ "purpose": "any maskable"
49
+ },
50
+ {
51
+ "src": "/assets/splash/android-chrome-256x256.png",
52
+ "sizes": "256x256",
53
+ "type": "image/png",
54
+ "purpose": "any maskable"
55
+ }
56
+ ]
57
+ }
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="2.0"
2
+ <xsl:stylesheet version="1.0"
3
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
4
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
5
5
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -67,7 +67,7 @@
67
67
  <div id="content">
68
68
  <h1>XML Sitemap</h1>
69
69
  <p class="desc"> This is a sitemap generated by <a
70
- href="https://www.nexodev.org">nexodev.org</a>
70
+ href="{{web-url}}">{{web-url}}</a>
71
71
  </p>
72
72
  <xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
73
73
  <table id="sitemap" cellpadding="3">
@@ -145,4 +145,4 @@
145
145
  </html>
146
146
 
147
147
  </xsl:template>
148
- </xsl:stylesheet>
148
+ </xsl:stylesheet>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="2.0"
2
+ <xsl:stylesheet version="1.0"
3
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
4
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
5
5
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -67,7 +67,7 @@
67
67
  <div id="content">
68
68
  <h1>XML Sitemap</h1>
69
69
  <p class="desc"> This is a sitemap generated by <a
70
- href="https://www.nexodev.org">nexodev.org</a>
70
+ href="{{web-url}}">{{web-url}}</a>
71
71
  </p>
72
72
  <xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
73
73
  <table id="sitemap" cellpadding="3">
@@ -145,4 +145,4 @@
145
145
  </html>
146
146
 
147
147
  </xsl:template>
148
- </xsl:stylesheet>
148
+ </xsl:stylesheet>
@@ -6,7 +6,7 @@
6
6
  <square150x150logo src="/mstile-150x150.png"/>
7
7
  <wide310x150logo src="/mstile-310x150.png"/>
8
8
  <square310x310logo src="/mstile-310x310.png"/>
9
- <TileColor>#fff</TileColor>
9
+ <TileColor>#0551C4</TileColor>
10
10
  </tile>
11
11
  </msapplication>
12
- </browserconfig>
12
+ </browserconfig>
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "Item Ledger",
3
3
  "short_name": "Item Ledger",
4
- "description": null,
4
+ "description": "Canonical registry, metadata resolver, and IPFS indexer for Object Layer items — semi-fungible and non-fungible ERC-1155 tokens in the Cyberia Online ecosystem. Item search, provenance, and marketplace.",
5
5
  "dir": "auto",
6
6
  "lang": "en-US",
7
7
  "display": "standalone",
8
8
  "orientation": "any",
9
9
  "scope": "/",
10
10
  "start_url": "/?homescreen=1",
11
- "background_color": "#fff",
12
- "theme_color": "#fff",
11
+ "background_color": "#0551C4",
12
+ "theme_color": "#0551C4",
13
13
  "icons": [
14
14
  {
15
15
  "src": "/android-chrome-36x36.png",
@@ -66,4 +66,4 @@
66
66
  "purpose": "any maskable"
67
67
  }
68
68
  ]
69
- }
69
+ }
@@ -0,0 +1,71 @@
1
+ [
2
+ {
3
+ "@context": "https://schema.org",
4
+ "@type": "WebApplication",
5
+ "name": "Item Ledger",
6
+ "url": "https://itemledger.com",
7
+ "description": "Canonical registry, metadata resolver, and IPFS indexer for Object Layer items — semi-fungible and non-fungible ERC-1155 tokens in the Cyberia Online ecosystem. Item search, provenance, and marketplace.",
8
+ "applicationCategory": "BlockchainApplication",
9
+ "operatingSystem": "All",
10
+ "browserRequirements": "Requires JavaScript. Requires HTML5.",
11
+ "offers": {
12
+ "@type": "Offer",
13
+ "price": "0",
14
+ "priceCurrency": "USD"
15
+ },
16
+ "author": {
17
+ "@type": "Organization",
18
+ "name": "Underpost",
19
+ "url": "https://github.com/underpostnet"
20
+ },
21
+ "keywords": "itemledger, object layer, NFT, ERC-1155, metadata, IPFS, registry, marketplace",
22
+ "image": "https://itemledger.com/apple-touch-icon.png",
23
+ "inLanguage": "en"
24
+ },
25
+ {
26
+ "@context": "https://schema.org",
27
+ "@type": "Organization",
28
+ "name": "Item Ledger",
29
+ "url": "https://itemledger.com",
30
+ "logo": "https://itemledger.com/android-chrome-512x512.png",
31
+ "description": "Canonical registry and IPFS indexer for Object Layer items in the Cyberia Online ecosystem.",
32
+ "sameAs": [
33
+ "https://github.com/underpostnet"
34
+ ],
35
+ "founder": {
36
+ "@type": "Organization",
37
+ "name": "Underpost",
38
+ "url": "https://github.com/underpostnet"
39
+ }
40
+ },
41
+ {
42
+ "@context": "https://schema.org",
43
+ "@type": "FAQPage",
44
+ "mainEntity": [
45
+ {
46
+ "@type": "Question",
47
+ "name": "What is Item Ledger?",
48
+ "acceptedAnswer": {
49
+ "@type": "Answer",
50
+ "text": "Item Ledger is the canonical registry, metadata resolver, and IPFS indexer for Object Layer items — semi-fungible and non-fungible ERC-1155 tokens in the Cyberia Online ecosystem. It provides item search, provenance tracking, and marketplace functionality."
51
+ }
52
+ },
53
+ {
54
+ "@type": "Question",
55
+ "name": "What token standard does Item Ledger use?",
56
+ "acceptedAnswer": {
57
+ "@type": "Answer",
58
+ "text": "Item Ledger uses the ERC-1155 multi-token standard, supporting both semi-fungible and non-fungible tokens for in-game items, equipment, and collectibles within the Cyberia Online ecosystem."
59
+ }
60
+ },
61
+ {
62
+ "@type": "Question",
63
+ "name": "How does Item Ledger use IPFS?",
64
+ "acceptedAnswer": {
65
+ "@type": "Answer",
66
+ "text": "Item Ledger indexes and resolves item metadata stored on IPFS (InterPlanetary File System), ensuring decentralized, persistent, and verifiable storage for all Object Layer item data and assets."
67
+ }
68
+ }
69
+ ]
70
+ }
71
+ ]
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="2.0"
2
+ <xsl:stylesheet version="1.0"
3
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
4
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
5
5
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -67,7 +67,7 @@
67
67
  <div id="content">
68
68
  <h1>XML Sitemap</h1>
69
69
  <p class="desc"> This is a sitemap generated by <a
70
- href="https://www.nexodev.org">nexodev.org</a>
70
+ href="{{web-url}}">{{web-url}}</a>
71
71
  </p>
72
72
  <xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
73
73
  <table id="sitemap" cellpadding="3">
@@ -145,4 +145,4 @@
145
145
  </html>
146
146
 
147
147
  </xsl:template>
148
- </xsl:stylesheet>
148
+ </xsl:stylesheet>
@@ -3,7 +3,7 @@
3
3
  "api_version": 1,
4
4
  "layout": {
5
5
  "logo": "/yandex-browser-50x50.png",
6
- "color": "#fff",
6
+ "color": "#0551C4",
7
7
  "show_title": true
8
8
  }
9
- }
9
+ }
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="2.0"
2
+ <xsl:stylesheet version="1.0"
3
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
4
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
5
5
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -67,7 +67,7 @@
67
67
  <div id="content">
68
68
  <h1>XML Sitemap</h1>
69
69
  <p class="desc"> This is a sitemap generated by <a
70
- href="https://www.nexodev.org">nexodev.org</a>
70
+ href="{{web-url}}">{{web-url}}</a>
71
71
  </p>
72
72
  <xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
73
73
  <table id="sitemap" cellpadding="3">
@@ -145,4 +145,4 @@
145
145
  </html>
146
146
 
147
147
  </xsl:template>
148
- </xsl:stylesheet>
148
+ </xsl:stylesheet>
@@ -47,9 +47,12 @@ const main = () => {
47
47
  a {
48
48
  color: black;
49
49
  }
50
+ .main-body-ssr-404 {
51
+ top: 45%;
52
+ }
50
53
  </style>
51
54
 
52
- <div class="abs center" style="top: 45%">
55
+ <div class="abs center main-body-ssr-404">
53
56
  ${icon}
54
57
  <br />
55
58
  <br />
@@ -57,17 +60,18 @@ const main = () => {
57
60
  <br />
58
61
  <br />${Translate.Render('page-not-found')} <br />
59
62
  <br />
60
- <a href="${location.origin}">${Translate.Render('back')}</a>
63
+ <a target="_top" href="${location.origin}">${Translate.Render('back')}</a>
61
64
  </div>`,
62
65
  );
63
66
  };
64
67
 
65
- SrrComponent = () => html`<script>
66
- {
67
- const s = ${s};
68
- const append = ${append};
69
- const getLang = ${getLang};
70
- const main = ${main};
71
- window.onload = main;
72
- }
73
- </script>`;
68
+ SrrComponent = () =>
69
+ html`<script>
70
+ {
71
+ const s = ${s};
72
+ const append = ${append};
73
+ const getLang = ${getLang};
74
+ const main = ${main};
75
+ window.onload = main;
76
+ }
77
+ </script>`;