cyberia 3.0.2 → 3.0.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 (47) hide show
  1. package/CHANGELOG.md +323 -290
  2. package/CLI-HELP.md +2 -1
  3. package/bin/build.js +0 -1
  4. package/bin/cyberia.js +98 -4
  5. package/bin/index.js +98 -4
  6. package/conf.js +192 -0
  7. package/deployment.yaml +72 -2
  8. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  9. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  10. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  11. package/manifests/deployment/dd-test-development/deployment.yaml +2 -2
  12. package/package.json +13 -9
  13. package/proxy.yaml +56 -9
  14. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +40 -7
  15. package/src/api/object-layer/object-layer.model.js +61 -19
  16. package/src/api/object-layer/object-layer.service.js +4 -9
  17. package/src/cli/index.js +6 -0
  18. package/src/cli/run.js +30 -2
  19. package/src/client/Underpost.index.js +36 -0
  20. package/src/client/components/core/Modal.js +2 -0
  21. package/src/client/components/core/PublicProfile.js +3 -3
  22. package/src/client/components/core/Router.js +34 -1
  23. package/src/client/components/core/Worker.js +1 -1
  24. package/src/client/components/cryptokoyn/CssCryptokoyn.js +63 -1
  25. package/src/client/components/cyberia/ObjectLayerEngineModal.js +145 -119
  26. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +64 -6
  27. package/src/client/components/itemledger/CssItemledger.js +62 -0
  28. package/src/client/components/underpost/CommonUnderpost.js +29 -0
  29. package/src/client/components/underpost/CssUnderpost.js +222 -0
  30. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
  31. package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
  32. package/src/client/components/underpost/ElementsUnderpost.js +38 -0
  33. package/src/client/components/underpost/LabGalleryUnderpost.js +82 -0
  34. package/src/client/components/underpost/LogInUnderpost.js +20 -0
  35. package/src/client/components/underpost/LogOutUnderpost.js +13 -0
  36. package/src/client/components/underpost/MenuUnderpost.js +605 -0
  37. package/src/client/components/underpost/RoutesUnderpost.js +45 -0
  38. package/src/client/components/underpost/SettingsUnderpost.js +16 -0
  39. package/src/client/components/underpost/SignUpUnderpost.js +9 -0
  40. package/src/client/components/underpost/SocketIoUnderpost.js +54 -0
  41. package/src/client/components/underpost/TranslateUnderpost.js +10 -0
  42. package/src/client/services/object-layer/object-layer.management.js +23 -4
  43. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +83 -0
  44. package/src/client/ssr/head/UnderpostScripts.js +6 -0
  45. package/src/index.js +1 -1
  46. package/src/server/object-layer.js +13 -10
  47. package/src/server/semantic-layer-generator.js +1 -0
package/CLI-HELP.md CHANGED
@@ -1,4 +1,4 @@
1
- ## underpost ci/cd cli v3.0.2
1
+ ## underpost ci/cd cli v3.0.3
2
2
 
3
3
  ### Usage: `underpost [options] [command]`
4
4
  ```
@@ -899,6 +899,7 @@ Options:
899
899
  --monitor-status-max-attempts <attempts> Sets the maximum number of status check attempts (default: 600).
900
900
  --dry-run Preview operations without executing them.
901
901
  --create-job-now After applying cron manifests, immediately create a Job from each CronJob (forwarded to cron runner).
902
+ --host-aliases <host-aliases> Adds entries to the Pod /etc/hosts via hostAliases. Format: semicolon-separated entries of "ip=hostname1,hostname2" (e.g., "127.0.0.1=foo.local,bar.local;10.1.2.3=foo.remote,bar.remote").
902
903
  -h, --help display help for command
903
904
 
904
905
  ```
package/bin/build.js CHANGED
@@ -221,5 +221,4 @@ const { DefaultConf } = await import(`../conf.${confName}.js`);
221
221
  fs.copySync(`./src/ws/${confName.split('-')[1]}`, `${basePath}/src/ws/${confName.split('-')[1]}`);
222
222
  }
223
223
  shellExec(`cd ${basePath} && npm install --ignore-scripts`);
224
- shellExec(`cd ${basePath} && npm run fix`);
225
224
  }
package/bin/cyberia.js CHANGED
@@ -256,22 +256,60 @@ try {
256
256
  md5: crypto.createHash('md5').update(buffer).digest('hex'),
257
257
  }).save();
258
258
 
259
+ // Pin atlas PNG to IPFS
260
+ let importAtlasCid = '';
261
+ let importAtlasMetadataCid = '';
262
+ try {
263
+ const ipfsResult = await IpfsClient.addBufferToIpfs(
264
+ buffer,
265
+ `${itemKey}_atlas_sprite_sheet.png`,
266
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet.png`,
267
+ );
268
+ if (ipfsResult) {
269
+ importAtlasCid = ipfsResult.cid;
270
+ logger.info(`Atlas sprite sheet pinned to IPFS – CID: ${importAtlasCid}`);
271
+ }
272
+ } catch (ipfsError) {
273
+ logger.warn('Failed to add atlas sprite sheet to IPFS:', ipfsError.message);
274
+ }
275
+
276
+ // Pin atlas metadata JSON to IPFS (fast-json-stable-stringify)
277
+ try {
278
+ const metadataIpfsResult = await IpfsClient.addJsonToIpfs(
279
+ metadata,
280
+ `${itemKey}_atlas_sprite_sheet_metadata.json`,
281
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet_metadata.json`,
282
+ );
283
+ if (metadataIpfsResult) {
284
+ importAtlasMetadataCid = metadataIpfsResult.cid;
285
+ logger.info(`Atlas metadata pinned to IPFS – CID: ${importAtlasMetadataCid}`);
286
+ }
287
+ } catch (ipfsError) {
288
+ logger.warn('Failed to add atlas metadata to IPFS:', ipfsError.message);
289
+ }
290
+
259
291
  let atlasDoc = await AtlasSpriteSheet.findOne({ 'metadata.itemKey': itemKey });
260
292
 
261
293
  if (atlasDoc) {
262
294
  atlasDoc.fileId = fileDoc._id;
295
+ atlasDoc.cid = importAtlasCid;
263
296
  atlasDoc.metadata = metadata;
264
297
  await atlasDoc.save();
265
298
  logger.info(`Updated existing AtlasSpriteSheet document: ${atlasDoc._id}`);
266
299
  } else {
267
300
  atlasDoc = await new AtlasSpriteSheet({
268
301
  fileId: fileDoc._id,
302
+ cid: importAtlasCid,
269
303
  metadata,
270
304
  }).save();
271
305
  logger.info(`Created new AtlasSpriteSheet document: ${atlasDoc._id}`);
272
306
  }
273
307
 
274
308
  populatedObjectLayer.atlasSpriteSheetId = atlasDoc._id;
309
+ if (!populatedObjectLayer.data.render) populatedObjectLayer.data.render = {};
310
+ populatedObjectLayer.data.render.cid = importAtlasCid;
311
+ populatedObjectLayer.data.render.metadataCid = importAtlasMetadataCid;
312
+ populatedObjectLayer.markModified('data.render');
275
313
  await populatedObjectLayer.save();
276
314
 
277
315
  logger.info(`Atlas sprite sheet completed for item: ${itemKey}`);
@@ -436,12 +474,45 @@ try {
436
474
 
437
475
  logger.info(`File saved with ID: ${fileDoc._id}`);
438
476
 
477
+ // Pin atlas PNG to IPFS
478
+ let toAtlasCid = '';
479
+ let toAtlasMetadataCid = '';
480
+ try {
481
+ const ipfsResult = await IpfsClient.addBufferToIpfs(
482
+ buffer,
483
+ `${itemKey}_atlas_sprite_sheet.png`,
484
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet.png`,
485
+ );
486
+ if (ipfsResult) {
487
+ toAtlasCid = ipfsResult.cid;
488
+ logger.info(`Atlas sprite sheet pinned to IPFS – CID: ${toAtlasCid}`);
489
+ }
490
+ } catch (ipfsError) {
491
+ logger.warn('Failed to add atlas sprite sheet to IPFS:', ipfsError.message);
492
+ }
493
+
494
+ // Pin atlas metadata JSON to IPFS (fast-json-stable-stringify)
495
+ try {
496
+ const metadataIpfsResult = await IpfsClient.addJsonToIpfs(
497
+ metadata,
498
+ `${itemKey}_atlas_sprite_sheet_metadata.json`,
499
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet_metadata.json`,
500
+ );
501
+ if (metadataIpfsResult) {
502
+ toAtlasMetadataCid = metadataIpfsResult.cid;
503
+ logger.info(`Atlas metadata pinned to IPFS – CID: ${toAtlasMetadataCid}`);
504
+ }
505
+ } catch (ipfsError) {
506
+ logger.warn('Failed to add atlas metadata to IPFS:', ipfsError.message);
507
+ }
508
+
439
509
  // Check if atlas sprite sheet already exists
440
510
  let atlasDoc = await AtlasSpriteSheet.findOne({ 'metadata.itemKey': itemKey });
441
511
 
442
512
  if (atlasDoc) {
443
513
  // Update existing
444
514
  atlasDoc.fileId = fileDoc._id;
515
+ atlasDoc.cid = toAtlasCid;
445
516
  atlasDoc.metadata = metadata;
446
517
  await atlasDoc.save();
447
518
  logger.info(`Updated existing AtlasSpriteSheet document: ${atlasDoc._id}`);
@@ -449,13 +520,18 @@ try {
449
520
  // Create new
450
521
  atlasDoc = await new AtlasSpriteSheet({
451
522
  fileId: fileDoc._id,
523
+ cid: toAtlasCid,
452
524
  metadata,
453
525
  }).save();
454
526
  logger.info(`Created new AtlasSpriteSheet document: ${atlasDoc._id}`);
455
527
  }
456
528
 
457
- // Update ObjectLayer with reference to atlas sprite sheet (top-level)
529
+ // Update ObjectLayer with reference to atlas sprite sheet and render CIDs
458
530
  objectLayer.atlasSpriteSheetId = atlasDoc._id;
531
+ if (!objectLayer.data.render) objectLayer.data.render = {};
532
+ objectLayer.data.render.cid = toAtlasCid;
533
+ objectLayer.data.render.metadataCid = toAtlasMetadataCid;
534
+ objectLayer.markModified('data.render');
459
535
  await objectLayer.save();
460
536
 
461
537
  logger.info(`Atlas sprite sheet completed for item: ${itemKey}`);
@@ -618,6 +694,7 @@ try {
618
694
  }).save();
619
695
 
620
696
  // Pin atlas PNG to IPFS + copy into MFS
697
+ let atlasMetadataCid = '';
621
698
  try {
622
699
  const ipfsResult = await IpfsClient.addBufferToIpfs(
623
700
  buffer,
@@ -632,6 +709,21 @@ try {
632
709
  logger.warn('Failed to add atlas sprite sheet to IPFS:', ipfsError.message);
633
710
  }
634
711
 
712
+ // Pin atlas metadata JSON to IPFS (fast-json-stable-stringify)
713
+ try {
714
+ const metadataIpfsResult = await IpfsClient.addJsonToIpfs(
715
+ metadata,
716
+ `${atlasItemKey}_atlas_sprite_sheet_metadata.json`,
717
+ `/object-layer/${atlasItemKey}/${atlasItemKey}_atlas_sprite_sheet_metadata.json`,
718
+ );
719
+ if (metadataIpfsResult) {
720
+ atlasMetadataCid = metadataIpfsResult.cid;
721
+ logger.info(`Atlas metadata pinned to IPFS – CID: ${atlasMetadataCid}`);
722
+ }
723
+ } catch (ipfsError) {
724
+ logger.warn('Failed to add atlas metadata to IPFS:', ipfsError.message);
725
+ }
726
+
635
727
  // Upsert AtlasSpriteSheet document (with CID)
636
728
  let atlasDoc = await AtlasSpriteSheet.findOne({ 'metadata.itemKey': atlasItemKey });
637
729
  if (atlasDoc) {
@@ -649,10 +741,12 @@ try {
649
741
  logger.info(`Created new AtlasSpriteSheet document: ${atlasDoc._id}`);
650
742
  }
651
743
 
652
- // Link atlas to ObjectLayer and set data.atlasSpriteSheetCid
744
+ // Link atlas to ObjectLayer and set data.render.cid + data.render.metadataCid
653
745
  populatedObjectLayer.atlasSpriteSheetId = atlasDoc._id;
654
- populatedObjectLayer.data.atlasSpriteSheetCid = atlasCid;
655
- populatedObjectLayer.markModified('data.atlasSpriteSheetCid');
746
+ if (!populatedObjectLayer.data.render) populatedObjectLayer.data.render = {};
747
+ populatedObjectLayer.data.render.cid = atlasCid;
748
+ populatedObjectLayer.data.render.metadataCid = atlasMetadataCid;
749
+ populatedObjectLayer.markModified('data.render');
656
750
  await populatedObjectLayer.save();
657
751
 
658
752
  // Also write atlas PNG to both static asset directories
package/bin/index.js CHANGED
@@ -256,22 +256,60 @@ try {
256
256
  md5: crypto.createHash('md5').update(buffer).digest('hex'),
257
257
  }).save();
258
258
 
259
+ // Pin atlas PNG to IPFS
260
+ let importAtlasCid = '';
261
+ let importAtlasMetadataCid = '';
262
+ try {
263
+ const ipfsResult = await IpfsClient.addBufferToIpfs(
264
+ buffer,
265
+ `${itemKey}_atlas_sprite_sheet.png`,
266
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet.png`,
267
+ );
268
+ if (ipfsResult) {
269
+ importAtlasCid = ipfsResult.cid;
270
+ logger.info(`Atlas sprite sheet pinned to IPFS – CID: ${importAtlasCid}`);
271
+ }
272
+ } catch (ipfsError) {
273
+ logger.warn('Failed to add atlas sprite sheet to IPFS:', ipfsError.message);
274
+ }
275
+
276
+ // Pin atlas metadata JSON to IPFS (fast-json-stable-stringify)
277
+ try {
278
+ const metadataIpfsResult = await IpfsClient.addJsonToIpfs(
279
+ metadata,
280
+ `${itemKey}_atlas_sprite_sheet_metadata.json`,
281
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet_metadata.json`,
282
+ );
283
+ if (metadataIpfsResult) {
284
+ importAtlasMetadataCid = metadataIpfsResult.cid;
285
+ logger.info(`Atlas metadata pinned to IPFS – CID: ${importAtlasMetadataCid}`);
286
+ }
287
+ } catch (ipfsError) {
288
+ logger.warn('Failed to add atlas metadata to IPFS:', ipfsError.message);
289
+ }
290
+
259
291
  let atlasDoc = await AtlasSpriteSheet.findOne({ 'metadata.itemKey': itemKey });
260
292
 
261
293
  if (atlasDoc) {
262
294
  atlasDoc.fileId = fileDoc._id;
295
+ atlasDoc.cid = importAtlasCid;
263
296
  atlasDoc.metadata = metadata;
264
297
  await atlasDoc.save();
265
298
  logger.info(`Updated existing AtlasSpriteSheet document: ${atlasDoc._id}`);
266
299
  } else {
267
300
  atlasDoc = await new AtlasSpriteSheet({
268
301
  fileId: fileDoc._id,
302
+ cid: importAtlasCid,
269
303
  metadata,
270
304
  }).save();
271
305
  logger.info(`Created new AtlasSpriteSheet document: ${atlasDoc._id}`);
272
306
  }
273
307
 
274
308
  populatedObjectLayer.atlasSpriteSheetId = atlasDoc._id;
309
+ if (!populatedObjectLayer.data.render) populatedObjectLayer.data.render = {};
310
+ populatedObjectLayer.data.render.cid = importAtlasCid;
311
+ populatedObjectLayer.data.render.metadataCid = importAtlasMetadataCid;
312
+ populatedObjectLayer.markModified('data.render');
275
313
  await populatedObjectLayer.save();
276
314
 
277
315
  logger.info(`Atlas sprite sheet completed for item: ${itemKey}`);
@@ -436,12 +474,45 @@ try {
436
474
 
437
475
  logger.info(`File saved with ID: ${fileDoc._id}`);
438
476
 
477
+ // Pin atlas PNG to IPFS
478
+ let toAtlasCid = '';
479
+ let toAtlasMetadataCid = '';
480
+ try {
481
+ const ipfsResult = await IpfsClient.addBufferToIpfs(
482
+ buffer,
483
+ `${itemKey}_atlas_sprite_sheet.png`,
484
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet.png`,
485
+ );
486
+ if (ipfsResult) {
487
+ toAtlasCid = ipfsResult.cid;
488
+ logger.info(`Atlas sprite sheet pinned to IPFS – CID: ${toAtlasCid}`);
489
+ }
490
+ } catch (ipfsError) {
491
+ logger.warn('Failed to add atlas sprite sheet to IPFS:', ipfsError.message);
492
+ }
493
+
494
+ // Pin atlas metadata JSON to IPFS (fast-json-stable-stringify)
495
+ try {
496
+ const metadataIpfsResult = await IpfsClient.addJsonToIpfs(
497
+ metadata,
498
+ `${itemKey}_atlas_sprite_sheet_metadata.json`,
499
+ `/object-layer/${itemKey}/${itemKey}_atlas_sprite_sheet_metadata.json`,
500
+ );
501
+ if (metadataIpfsResult) {
502
+ toAtlasMetadataCid = metadataIpfsResult.cid;
503
+ logger.info(`Atlas metadata pinned to IPFS – CID: ${toAtlasMetadataCid}`);
504
+ }
505
+ } catch (ipfsError) {
506
+ logger.warn('Failed to add atlas metadata to IPFS:', ipfsError.message);
507
+ }
508
+
439
509
  // Check if atlas sprite sheet already exists
440
510
  let atlasDoc = await AtlasSpriteSheet.findOne({ 'metadata.itemKey': itemKey });
441
511
 
442
512
  if (atlasDoc) {
443
513
  // Update existing
444
514
  atlasDoc.fileId = fileDoc._id;
515
+ atlasDoc.cid = toAtlasCid;
445
516
  atlasDoc.metadata = metadata;
446
517
  await atlasDoc.save();
447
518
  logger.info(`Updated existing AtlasSpriteSheet document: ${atlasDoc._id}`);
@@ -449,13 +520,18 @@ try {
449
520
  // Create new
450
521
  atlasDoc = await new AtlasSpriteSheet({
451
522
  fileId: fileDoc._id,
523
+ cid: toAtlasCid,
452
524
  metadata,
453
525
  }).save();
454
526
  logger.info(`Created new AtlasSpriteSheet document: ${atlasDoc._id}`);
455
527
  }
456
528
 
457
- // Update ObjectLayer with reference to atlas sprite sheet (top-level)
529
+ // Update ObjectLayer with reference to atlas sprite sheet and render CIDs
458
530
  objectLayer.atlasSpriteSheetId = atlasDoc._id;
531
+ if (!objectLayer.data.render) objectLayer.data.render = {};
532
+ objectLayer.data.render.cid = toAtlasCid;
533
+ objectLayer.data.render.metadataCid = toAtlasMetadataCid;
534
+ objectLayer.markModified('data.render');
459
535
  await objectLayer.save();
460
536
 
461
537
  logger.info(`Atlas sprite sheet completed for item: ${itemKey}`);
@@ -618,6 +694,7 @@ try {
618
694
  }).save();
619
695
 
620
696
  // Pin atlas PNG to IPFS + copy into MFS
697
+ let atlasMetadataCid = '';
621
698
  try {
622
699
  const ipfsResult = await IpfsClient.addBufferToIpfs(
623
700
  buffer,
@@ -632,6 +709,21 @@ try {
632
709
  logger.warn('Failed to add atlas sprite sheet to IPFS:', ipfsError.message);
633
710
  }
634
711
 
712
+ // Pin atlas metadata JSON to IPFS (fast-json-stable-stringify)
713
+ try {
714
+ const metadataIpfsResult = await IpfsClient.addJsonToIpfs(
715
+ metadata,
716
+ `${atlasItemKey}_atlas_sprite_sheet_metadata.json`,
717
+ `/object-layer/${atlasItemKey}/${atlasItemKey}_atlas_sprite_sheet_metadata.json`,
718
+ );
719
+ if (metadataIpfsResult) {
720
+ atlasMetadataCid = metadataIpfsResult.cid;
721
+ logger.info(`Atlas metadata pinned to IPFS – CID: ${atlasMetadataCid}`);
722
+ }
723
+ } catch (ipfsError) {
724
+ logger.warn('Failed to add atlas metadata to IPFS:', ipfsError.message);
725
+ }
726
+
635
727
  // Upsert AtlasSpriteSheet document (with CID)
636
728
  let atlasDoc = await AtlasSpriteSheet.findOne({ 'metadata.itemKey': atlasItemKey });
637
729
  if (atlasDoc) {
@@ -649,10 +741,12 @@ try {
649
741
  logger.info(`Created new AtlasSpriteSheet document: ${atlasDoc._id}`);
650
742
  }
651
743
 
652
- // Link atlas to ObjectLayer and set data.atlasSpriteSheetCid
744
+ // Link atlas to ObjectLayer and set data.render.cid + data.render.metadataCid
653
745
  populatedObjectLayer.atlasSpriteSheetId = atlasDoc._id;
654
- populatedObjectLayer.data.atlasSpriteSheetCid = atlasCid;
655
- populatedObjectLayer.markModified('data.atlasSpriteSheetCid');
746
+ if (!populatedObjectLayer.data.render) populatedObjectLayer.data.render = {};
747
+ populatedObjectLayer.data.render.cid = atlasCid;
748
+ populatedObjectLayer.data.render.metadataCid = atlasMetadataCid;
749
+ populatedObjectLayer.markModified('data.render');
656
750
  await populatedObjectLayer.save();
657
751
 
658
752
  // Also write atlas PNG to both static asset directories
package/conf.js CHANGED
@@ -4,6 +4,138 @@ dotenv.config();
4
4
 
5
5
  const DefaultConf = /**/ {
6
6
  client: {
7
+ underpost: {
8
+ metadata: {
9
+ title: 'underpost.net - Technological and Cultural Lab',
10
+ description:
11
+ 'Explore the intersection of technology and culture with in-depth articles, projects, and discussions.',
12
+ keywords: ['tech blog', 'cultural lab', 'technology', 'culture', 'innovation'],
13
+ author: 'https://github.com/underpostnet',
14
+ thumbnail: 'assets/banner/underpost-social.jpg',
15
+ themeColor: '#141414',
16
+ },
17
+ publicCopyNonExistingFiles: 'cyberia',
18
+ components: {
19
+ core: [
20
+ 'CommonJs',
21
+ 'VanillaJs',
22
+ 'Responsive',
23
+ 'Keyboard',
24
+ 'Translate',
25
+ 'Modal',
26
+ 'SearchBox',
27
+ 'BtnIcon',
28
+ 'Logger',
29
+ 'Css',
30
+ 'NotificationManager',
31
+ 'ToggleSwitch',
32
+ 'DropDown',
33
+ 'LoadingAnimation',
34
+ 'EventsUI',
35
+ 'AgGrid',
36
+ 'Pagination',
37
+ 'windowGetDimensions',
38
+ 'Input',
39
+ 'Validator',
40
+ 'SignUp',
41
+ 'LogIn',
42
+ 'LogOut',
43
+ 'Router',
44
+ 'Account',
45
+ 'PublicProfile',
46
+ 'Scroll',
47
+ 'Auth',
48
+ 'FullScreen',
49
+ 'RichText',
50
+ 'CalendarCore',
51
+ 'D3Chart',
52
+ 'Stream',
53
+ 'SocketIo',
54
+ 'Docs',
55
+ 'Content',
56
+ 'FileExplorer',
57
+ 'Chat',
58
+ 'Worker',
59
+ 'CssCore',
60
+ 'Wallet',
61
+ 'Badge',
62
+ 'ToolTip',
63
+ 'Webhook',
64
+ 'Recover',
65
+ 'Panel',
66
+ 'PanelForm',
67
+ 'Polyhedron',
68
+ ],
69
+ underpost: [
70
+ 'MenuUnderpost',
71
+ 'RoutesUnderpost',
72
+ 'ElementsUnderpost',
73
+ 'CommonUnderpost',
74
+ 'CssUnderpost',
75
+ 'LogInUnderpost',
76
+ 'LogOutUnderpost',
77
+ 'SignUpUnderpost',
78
+ 'LabGalleryUnderpost',
79
+ 'CyberpunkBloggerUnderpost',
80
+ 'TranslateUnderpost',
81
+ 'SocketIoUnderpost',
82
+ 'SettingsUnderpost',
83
+ 'DocumentSearchProvider',
84
+ ],
85
+ },
86
+ views: [
87
+ { path: '/', title: 'Technological and Cultural Lab', client: 'Underpost', ssr: 'Underpost' },
88
+ { path: '/lab-gallery', client: 'Underpost', ssr: 'Underpost' },
89
+ { path: '/contracultura-cyberpunk', client: 'Underpost', ssr: 'Underpost' },
90
+ { path: '/settings', client: 'Underpost', ssr: 'Underpost' },
91
+ { path: '/log-in', client: 'Underpost', ssr: 'Underpost' },
92
+ { path: '/sign-up', client: 'Underpost', ssr: 'Underpost' },
93
+ { path: '/log-out', client: 'Underpost', ssr: 'Underpost' },
94
+ { path: '/account', client: 'Underpost', ssr: 'Underpost' },
95
+ { path: '/u', client: 'Underpost', ssr: 'Underpost' },
96
+ { path: '/recover', client: 'Underpost', ssr: 'Underpost' },
97
+ { path: '/polyhedron', client: 'Underpost', ssr: 'Underpost' },
98
+ ],
99
+ dists: [
100
+ {
101
+ folder: './node_modules/@neodrag/vanilla/dist/min',
102
+ public_folder: '/dist/@neodrag-vanilla',
103
+ import_name: '@neodrag/vanilla',
104
+ import_name_build: '/dist/@neodrag-vanilla/index.js',
105
+ },
106
+ { folder: './node_modules/@fortawesome/fontawesome-free', public_folder: '/dist/fontawesome' },
107
+ {
108
+ folder: './node_modules/sortablejs/modular',
109
+ public_folder: '/dist/sortablejs',
110
+ import_name: 'sortablejs',
111
+ import_name_build: '/dist/sortablejs/sortable.complete.esm.js',
112
+ },
113
+ { folder: './node_modules/validator', public_folder: '/dist/validator' },
114
+ {
115
+ import_name: 'ag-grid-community',
116
+ import_name_build: '/dist/ag-grid-community/ag-grid-community.min.js',
117
+ folder: './node_modules/ag-grid-community/dist',
118
+ public_folder: '/dist/ag-grid-community',
119
+ styles: './node_modules/ag-grid-community/styles',
120
+ public_styles_folder: '/styles/ag-grid-community',
121
+ },
122
+ {
123
+ folder: './node_modules/socket.io/client-dist',
124
+ public_folder: '/dist/socket.io',
125
+ import_name: 'socket.io/client-dist/socket.io.esm.min.js',
126
+ import_name_build: '/dist/socket.io/socket.io.esm.min.js',
127
+ },
128
+ { folder: './node_modules/peerjs/dist', public_folder: '/dist/peerjs' },
129
+ { folder: './node_modules/easymde/dist', public_folder: '/dist/easymde' },
130
+ {
131
+ folder: './node_modules/marked/lib',
132
+ public_folder: '/dist/marked',
133
+ import_name: 'marked',
134
+ import_name_build: '/dist/marked/marked.esm.js',
135
+ },
136
+ ],
137
+ services: ['core', 'user', 'file', 'test', 'document'],
138
+ },
7
139
  'cyberia-portal': {
8
140
  metadata: {
9
141
  title: 'CYBERIA',
@@ -364,6 +496,16 @@ const DefaultConf = /**/ {
364
496
  },
365
497
  },
366
498
  ssr: {
499
+ Underpost: {
500
+ head: ['Seo', 'Pwa', 'UnderpostScripts', 'Css'],
501
+ body: ['CacheControl', 'UnderpostDefaultSplashScreen'],
502
+ mailer: { userVerifyEmail: 'DefaultVerifyEmail', userRecoverEmail: 'DefaultRecoverEmail' },
503
+ offline: [
504
+ { path: '/offline', title: 'No Network Connection', client: 'NoNetworkConnection', head: [], body: [] },
505
+ { path: '/maintenance', title: 'Server Maintenance', client: 'Maintenance', head: [], body: [] },
506
+ ],
507
+ pages: [{ path: '/test', title: 'Test', client: 'Test', head: [], body: [] }],
508
+ },
367
509
  CyberiaPortal: {
368
510
  head: ['Seo', 'Pwa', 'Microdata', 'CyberiaPortalScripts', 'Css'],
369
511
  body: ['CacheControl', 'CyberiaDefaultSplashScreen'],
@@ -396,6 +538,56 @@ const DefaultConf = /**/ {
396
538
  },
397
539
  },
398
540
  server: {
541
+ 'underpost.net': {
542
+ '/': {
543
+ client: 'underpost',
544
+ runtime: 'nodejs',
545
+ apis: ['user', 'file', 'test', 'document'],
546
+ apiBaseProxyPath: null,
547
+ apiBaseHost: null,
548
+ origins: [],
549
+ minifyBuild: false,
550
+ liteBuild: true,
551
+ docsBuild: false,
552
+ ws: 'core',
553
+ peer: true,
554
+ proxy: [80, 443],
555
+ db: { provider: 'mongoose', host: 'mongodb://127.0.0.1:27017', name: 'default' },
556
+ valkey: { port: 6379, host: '127.0.0.1' },
557
+ mailer: {
558
+ sender: { email: 'noreply@default.net', name: 'Default' },
559
+ transport: {
560
+ host: 'smtp.default.com',
561
+ port: 465,
562
+ secure: true,
563
+ auth: { user: 'noreply@default.net', pass: '' },
564
+ },
565
+ },
566
+ },
567
+ },
568
+ 'www.underpost.net': {
569
+ '/': {
570
+ client: null,
571
+ runtime: 'nodejs',
572
+ apis: [],
573
+ origins: [],
574
+ minifyBuild: false,
575
+ liteBuild: true,
576
+ docsBuild: false,
577
+ proxy: [80, 443],
578
+ redirect: 'https://underpost.net',
579
+ db: { provider: 'mongoose', host: 'mongodb://127.0.0.1:27017', name: 'default' },
580
+ mailer: {
581
+ sender: { email: 'noreply@default.net', name: 'Default' },
582
+ transport: {
583
+ host: 'smtp.default.com',
584
+ port: 465,
585
+ secure: true,
586
+ auth: { user: 'noreply@default.net', pass: '' },
587
+ },
588
+ },
589
+ },
590
+ },
399
591
  'www.cyberiaonline.com': {
400
592
  '/': {
401
593
  client: 'cyberia-portal',