@necrolab/dashboard 0.4.61 → 0.4.208

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 (133) hide show
  1. package/.prettierrc +1 -27
  2. package/.vscode/extensions.json +1 -1
  3. package/README.md +79 -43
  4. package/backend/api.js +48 -40
  5. package/backend/auth.js +3 -3
  6. package/backend/batching.js +1 -1
  7. package/backend/endpoints.js +77 -13
  8. package/backend/index.js +2 -2
  9. package/backend/mock-data.js +38 -29
  10. package/backend/mock-src/classes/logger.js +8 -8
  11. package/backend/mock-src/classes/utils.js +3 -7
  12. package/backend/mock-src/database.js +0 -0
  13. package/backend/mock-src/ticketmaster.js +79 -79
  14. package/backend/validator.js +2 -2
  15. package/config/configs.json +3 -2
  16. package/config/filter.json +3 -2
  17. package/index.html +10 -81
  18. package/index.js +1 -1
  19. package/package.json +25 -40
  20. package/postcss.config.js +1 -1
  21. package/postinstall.js +17 -98
  22. package/public/android-chrome-192x192.png +0 -0
  23. package/public/android-chrome-512x512.png +0 -0
  24. package/public/apple-touch-icon.png +0 -0
  25. package/public/favicon-16x16.png +0 -0
  26. package/public/favicon-32x32.png +0 -0
  27. package/public/favicon.ico +0 -0
  28. package/public/manifest.json +7 -12
  29. package/public/sw.js +2 -0
  30. package/public/workbox-49fdaf31.js +2 -0
  31. package/public/workbox-49fdaf31.js.map +1 -0
  32. package/public/workbox-88575b92.js +2 -0
  33. package/public/workbox-88575b92.js.map +1 -0
  34. package/public/workbox-a67a7b11.js +2 -0
  35. package/public/workbox-a67a7b11.js.map +1 -0
  36. package/public/workbox-d4314735.js +2 -0
  37. package/public/workbox-d4314735.js.map +1 -0
  38. package/public/workbox-e0f89ef3.js +2 -0
  39. package/public/workbox-e0f89ef3.js.map +1 -0
  40. package/run +9 -176
  41. package/src/App.vue +85 -498
  42. package/src/assets/css/_input.scss +99 -144
  43. package/src/assets/css/main.scss +99 -450
  44. package/src/assets/img/background.svg +2 -2
  45. package/src/assets/img/logo_icon.png +0 -0
  46. package/src/components/Auth/LoginForm.vue +11 -62
  47. package/src/components/Editors/Account/Account.vue +40 -116
  48. package/src/components/Editors/Account/AccountCreator.vue +39 -88
  49. package/src/components/Editors/Account/AccountView.vue +34 -102
  50. package/src/components/Editors/Account/CreateAccount.vue +32 -80
  51. package/src/components/Editors/Profile/CreateProfile.vue +83 -269
  52. package/src/components/Editors/Profile/Profile.vue +47 -132
  53. package/src/components/Editors/Profile/ProfileCountryChooser.vue +20 -82
  54. package/src/components/Editors/Profile/ProfileView.vue +34 -91
  55. package/src/components/Editors/TagLabel.vue +6 -67
  56. package/src/components/Filter/Filter.vue +72 -289
  57. package/src/components/Filter/FilterPreview.vue +30 -171
  58. package/src/components/Filter/PriceSortToggle.vue +4 -74
  59. package/src/components/Table/Header.vue +1 -1
  60. package/src/components/Table/Row.vue +1 -1
  61. package/src/components/Table/Table.vue +2 -19
  62. package/src/components/Tasks/CheckStock.vue +13 -28
  63. package/src/components/Tasks/Controls/DesktopControls.vue +17 -17
  64. package/src/components/Tasks/Controls/MobileControls.vue +45 -8
  65. package/src/components/Tasks/CreateTaskAXS.vue +73 -79
  66. package/src/components/Tasks/CreateTaskTM.vue +142 -94
  67. package/src/components/Tasks/MassEdit.vue +7 -9
  68. package/src/components/Tasks/QuickSettings.vue +55 -169
  69. package/src/components/Tasks/ScrapeVenue.vue +4 -7
  70. package/src/components/Tasks/Stats.vue +23 -52
  71. package/src/components/Tasks/Task.vue +136 -378
  72. package/src/components/Tasks/TaskView.vue +47 -107
  73. package/src/components/Tasks/Utilities.vue +6 -5
  74. package/src/components/icons/Bag.vue +1 -1
  75. package/src/components/icons/Loyalty.vue +1 -1
  76. package/src/components/icons/Mail.vue +2 -2
  77. package/src/components/icons/Play.vue +2 -2
  78. package/src/components/icons/Reload.vue +5 -4
  79. package/src/components/icons/Sandclock.vue +2 -2
  80. package/src/components/icons/Stadium.vue +1 -1
  81. package/src/components/icons/index.js +1 -24
  82. package/src/components/ui/Modal.vue +13 -105
  83. package/src/components/ui/Navbar.vue +38 -171
  84. package/src/components/ui/ReconnectIndicator.vue +55 -351
  85. package/src/components/ui/Splash.vue +35 -5
  86. package/src/components/ui/controls/CountryChooser.vue +62 -200
  87. package/src/components/ui/controls/atomic/Checkbox.vue +10 -119
  88. package/src/components/ui/controls/atomic/Dropdown.vue +39 -208
  89. package/src/components/ui/controls/atomic/MultiDropdown.vue +37 -300
  90. package/src/libs/Filter.js +170 -200
  91. package/src/registerServiceWorker.js +1 -1
  92. package/src/stores/connection.js +53 -51
  93. package/src/stores/logger.js +3 -11
  94. package/src/stores/sampleData.js +235 -207
  95. package/src/stores/ui.js +44 -112
  96. package/src/stores/utils.js +6 -90
  97. package/src/views/Accounts.vue +35 -44
  98. package/src/views/Console.vue +90 -341
  99. package/src/views/Editor.vue +123 -1176
  100. package/src/views/FilterBuilder.vue +251 -607
  101. package/src/views/Login.vue +14 -76
  102. package/src/views/Profiles.vue +25 -44
  103. package/src/views/Tasks.vue +100 -187
  104. package/static/offline.html +50 -192
  105. package/tailwind.config.js +26 -104
  106. package/vite.config.js +16 -73
  107. package/vue.config.js +32 -0
  108. package/workbox-config.js +11 -0
  109. package/artwork/image.png +0 -0
  110. package/dev-server.js +0 -136
  111. package/exit +0 -209
  112. package/jsconfig.json +0 -16
  113. package/src/assets/css/_utilities.scss +0 -388
  114. package/src/assets/img/background.svg.backup +0 -11
  115. package/src/components/icons/Check.vue +0 -5
  116. package/src/components/icons/Close.vue +0 -21
  117. package/src/components/icons/CloseX.vue +0 -5
  118. package/src/components/icons/Key.vue +0 -21
  119. package/src/components/icons/Pencil.vue +0 -21
  120. package/src/components/icons/Profile.vue +0 -18
  121. package/src/components/icons/Sell.vue +0 -21
  122. package/src/components/icons/Spinner.vue +0 -42
  123. package/src/components/icons/SquareCheck.vue +0 -18
  124. package/src/components/icons/SquareUncheck.vue +0 -18
  125. package/src/components/icons/Wildcard.vue +0 -18
  126. package/src/components/ui/controls/atomic/LoadingButton.vue +0 -45
  127. package/src/composables/useClickOutside.js +0 -21
  128. package/src/composables/useDropdownPosition.js +0 -174
  129. package/src/types/index.js +0 -41
  130. package/src/utils/debug.js +0 -1
  131. package/switch-branch.sh +0 -41
  132. package/workbox-config.cjs +0 -63
  133. /package/src/assets/img/{logo_icon-old.png → logo_icon_2.png} +0 -0
@@ -1,8 +1,6 @@
1
- import crypto from "node:crypto";
2
-
3
1
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
4
2
 
5
- export default {
3
+ module.exports = {
6
4
  pickAccount: () => {
7
5
  return "demo@email.com";
8
6
  },
@@ -18,15 +16,13 @@ export default {
18
16
  return atob(i);
19
17
  },
20
18
  massEditPresaleCode: async (eventId, presaleCode) => {
21
- for (const [, value] of Object.entries(Bot.Tasks)) {
19
+ for (const [key, value] of Object.entries(Bot.Tasks)) {
22
20
  if (value.eventId === eventId) {
23
21
  value.presaleCode = presaleCode;
24
22
  }
25
23
  }
26
24
  },
27
- uuid: () => {
28
- return crypto.randomUUID();
29
- },
25
+
30
26
  chunk: (arr, len) => {
31
27
  let chunks = [],
32
28
  i = 0,
File without changes
@@ -1,92 +1,92 @@
1
- import { createLogger } from "./classes/logger.js";
1
+ module.exports = class TicketMaster {
2
+ constructor(taskData) {
3
+ this.logger = {
4
+ Error: console.log,
5
+ Info: console.log,
6
+ };
7
+ this.taskId = taskData.taskId || 'T-' + ++Bot.CurrentTaskId;
8
+ this.data = taskData;
9
+ this.data.taskId = this.taskId;
2
10
 
3
- export default class TicketMaster {
4
- constructor(taskData) {
5
- this.taskId = taskData.taskId || "T-" + ++Bot.CurrentTaskId;
6
- this.logger = createLogger(this.taskId);
7
- this.data = taskData;
8
- this.data.taskId = this.taskId;
9
- this.logger.taskId = this.taskId;
10
- this.logger.user = "admin";
11
- this.logger.siteId = taskData.siteId;
11
+ this.data.account = this.data.account || 'test@email.com';
12
+ this.data.email = this.data.email || 'test@email.com'
13
+ this.data.password = this.data.password || 'p@ssword'
14
+ this.data.proxy = this.data.proxy || '127.0.0.1';
15
+ this.data.tickets = this.data.tickets || '-';
16
+ this.data.status = this.data.status || 'Created';
17
+ this.data.active = false;
18
+ this.data.statusColor = 'green';
19
+ this.data.expirationTime = Date.now();
12
20
 
13
- this.data.account = this.data.account || "test@email.com";
14
- this.data.email = this.data.email || "test@email.com";
15
- this.data.password = this.data.password || "p@ssword";
16
- this.data.proxy = this.data.proxy || "127.0.0.1";
17
- this.data.tickets = this.data.tickets || "-";
18
- this.data.status = this.data.status || "Created";
19
- this.data.active = false;
20
- this.data.statusColor = "green";
21
- this.data.expirationTime = Date.now();
21
+ this.data.eventVenue = "Pagenstedt stadium"
22
+ this.data.eventDate = Date.now();
23
+ this.data.eventLocalDate = Date.now();
24
+ this.data.eventName = "Dr. Pagenstedt"
25
+ this.data.reservedTicketsList = "ticket1 | ticket2 | ticket3\n$100"
22
26
 
23
- this.data.eventVenue = "Test Venue";
24
- this.data.eventDate = Date.now();
25
- this.data.eventLocalDate = Date.now();
26
- this.data.eventName = "Test Event";
27
- this.data.reservedTicketsList = "• 2x 301/E ($86.47) \n• 2x 306/U ($86.47) \n$345.88";
27
+ refreshTaskOnFrontEnd(taskData);
28
+ }
28
29
 
29
- refreshTaskOnFrontEnd(taskData);
30
- }
30
+ stripDown() {
31
+ return this.data;
32
+ }
31
33
 
32
- stripDown() {
33
- return this.data;
34
- }
34
+ setError(e) {
35
+ this.error = e;
36
+ this.status = e;
37
+ this.data.active = false;
38
+ }
35
39
 
36
- setError(e) {
37
- this.error = e;
38
- this.status = e;
39
- this.data.active = false;
40
- }
41
-
42
- start() {
43
- this.logger.Info("Starting task");
44
- this.data.active = true;
45
- refreshTaskOnFrontEnd(this.data);
46
- }
40
+ start() {
41
+ this.logger.Info('Starting task');
42
+ this.data.active = true;
43
+ refreshTaskOnFrontEnd(this.data);
44
+ }
47
45
 
48
- stop(deleted = false) {
49
- this.logger.Error(deleted ? "Deleting task" : "Stopping task");
50
- this.data.active = false;
51
- this.data.statusColor = "red";
52
- this.logger.ENABLED = false;
53
- if (!deleted) {
54
- this.setError("Stopped");
55
- refreshTaskOnFrontEnd(this.data);
56
- }
46
+ stop(deleted = false) {
47
+ this.logger.Error(deleted ? 'Deleting task' : 'Stopping task');
48
+ this.data.active = false;
49
+ this.data.statusColor = 'red';
50
+ this.logger.ENABLED = false;
51
+ if (!deleted) {
52
+ this.setError('Stopped');
53
+ refreshTaskOnFrontEnd(this.data);
57
54
  }
55
+ }
58
56
 
59
- destroy() {
60
- this.hidden = true;
61
- this.stop(true);
62
- delete Bot.Tasks[this.taskId];
63
- refreshTaskOnFrontEnd({
64
- taskId: this.taskId,
65
- removed: true
66
- });
67
- }
57
+ destroy() {
58
+ this.hidden = true;
59
+ this.stop(true);
60
+ delete Bot.Tasks[this.taskId];
61
+ refreshTaskOnFrontEnd({
62
+ taskId: this.taskId,
63
+ removed: true
64
+ });
65
+ }
68
66
 
69
- get status() {
70
- return this.statusString || "";
71
- }
67
+ get status() {
68
+ return this.statusString || '';
69
+ }
72
70
 
73
- set status(value) {
74
- if (!this.active && !["Idle", "Stopped"].includes(value)) return;
75
- var oldValue = this.statusString + "";
76
- this.statusString = value;
77
- if (!this.hidden && global.refreshTaskOnFrontEnd && this.statusString != oldValue)
78
- try {
79
- refreshTaskOnFrontEnd(this.stripDown(), value, this.statusString);
80
- } catch {
81
- /* empty */
82
- }
83
- }
71
+ set status(value) {
72
+ if (!this.active && !['Idle', 'Stopped'].includes(value)) return;
73
+ var oldValue = this.statusString + '';
74
+ this.statusString = value;
75
+ if (
76
+ !this.hidden &&
77
+ global.refreshTaskOnFrontEnd &&
78
+ this.statusString != oldValue
79
+ )
80
+ try {
81
+ refreshTaskOnFrontEnd(this.stripDown(), value, this.statusString);
82
+ } catch {}
83
+ }
84
84
 
85
- scrapeVenue() {
86
- this.logger.Info("Scraping venue map");
87
- }
85
+ scrapeVenue() {
86
+ this.logger.Info('Scraping venue map');
87
+ }
88
88
 
89
- scrapeSeats() {
90
- this.logger.Info("Scraping seats");
91
- }
92
- }
89
+ scrapeSeats() {
90
+ this.logger.Info('Scraping seats');
91
+ }
92
+ };
@@ -1,4 +1,4 @@
1
- import utils from "./mock-src/classes/utils.js";
1
+ const utils = require("./mock-src/classes/utils");
2
2
 
3
3
  const none = (v) => {
4
4
  return v === undefined;
@@ -59,4 +59,4 @@ const validateTaskData = (task) => {
59
59
  return task;
60
60
  };
61
61
 
62
- export default validateTaskData;
62
+ module.exports = validateTaskData;
@@ -1,18 +1,19 @@
1
1
  [
2
2
  {
3
- "name": "Test config",
3
+ "name": "Peet's config",
4
4
  "config": {
5
5
  "eventId": "01005D5C92031D57",
6
6
  "presaleCode": "SanFResaleCode",
7
7
  "quantity": 5,
8
8
  "manual": false,
9
9
  "doNotPay": false,
10
+ "incapsulaBypass": false,
10
11
  "quickQueue": true,
11
12
  "loginAfterCart": false,
12
13
  "smartTimer": false,
13
14
  "presaleMode": false,
14
15
  "agedAccount": false,
15
- "accountTag": "admin",
16
+ "accountTag": "Dubai",
16
17
  "profileTags": ["Any"]
17
18
  }
18
19
  }
@@ -1,3 +1,4 @@
1
1
  {
2
- "123": "1234567"
3
- }
2
+ "123": "1234567",
3
+ "peet": "is cool2"
4
+ }
package/index.html CHANGED
@@ -7,13 +7,8 @@
7
7
  name="viewport"
8
8
  content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"
9
9
  />
10
- <meta name="description" content="Necro Lab - dashboard" />
11
- <title>Necro Lab - Dashboard</title>
12
- <!-- DNS prefetch for external resources -->
13
- <link rel="dns-prefetch" href="https://fonts.googleapis.com" />
14
- <link rel="dns-prefetch" href="https://fonts.gstatic.com" />
15
-
16
- <!-- Preconnect for critical external resources -->
10
+ <meta name="description" content="Russonoro dashboard" />
11
+ <title>Russonoro - Dashboard</title>
17
12
  <link rel="preconnect" href="https://fonts.googleapis.com" />
18
13
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
19
14
  <link
@@ -21,92 +16,26 @@
21
16
  rel="stylesheet"
22
17
  />
23
18
 
24
- <!-- Preload critical fonts -->
25
- <link
26
- rel="preload"
27
- href="https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2"
28
- as="font"
29
- type="font/woff2"
30
- crossorigin
31
- />
32
-
33
- <!-- Preload critical assets -->
34
- <link rel="preload" as="image" href="/img/background.svg" />
35
- <link rel="preload" as="image" href="/img/logo_trans.png" />
36
- <link rel="preload" as="image" href="/img/logo.png" />
37
-
38
- <!-- Prefetch core navigation icons -->
39
- <link rel="prefetch" as="image" href="/img/close.svg" />
40
- <link rel="prefetch" as="image" href="/img/mail.svg" />
41
- <link rel="prefetch" as="image" href="/img/groups.svg" />
42
- <link rel="prefetch" as="image" href="/img/reload.svg" />
43
-
44
- <!-- Prefetch task-related icons -->
19
+ <!-- prefetch SVG icons -->
45
20
  <link rel="prefetch" as="image" href="/img/pencil.svg" />
46
21
  <link rel="prefetch" as="image" href="/img/scanner.svg" />
22
+ <link rel="prefetch" as="image" href="/img/background.svg" />
23
+ <link rel="prefetch" as="image" href="/img/close.svg" />
24
+ <link rel="prefetch" as="image" href="/img/mail.svg" />
47
25
  <link rel="prefetch" as="image" href="/img/key.svg" />
48
26
  <link rel="prefetch" as="image" href="/img/camera.svg" />
49
27
  <link rel="prefetch" as="image" href="/img/timer.svg" />
28
+ <link rel="prefetch" as="image" href="/img/groups.svg" />
50
29
  <link rel="prefetch" as="image" href="/img/hand.svg" />
51
30
  <link rel="prefetch" as="image" href="/img/savings.svg" />
52
31
  <link rel="prefetch" as="image" href="/img/loyalty.svg" />
53
32
  <link rel="prefetch" as="image" href="/img/shield.svg" />
54
33
  <link rel="prefetch" as="image" href="/img/ski.svg" />
55
34
  <link rel="prefetch" as="image" href="/img/sell.svg" />
56
- <link rel="prefetch" as="image" href="/img/award.svg" />
57
- <link rel="prefetch" as="image" href="/img/stadium.svg" />
58
- <link rel="prefetch" as="image" href="/img/stadium_w.svg" />
59
- <link rel="prefetch" as="image" href="/img/bag_w.svg" />
60
- <link rel="prefetch" as="image" href="/img/sandclock.svg" />
61
- <link rel="prefetch" as="image" href="/img/profile.svg" />
62
-
63
- <!-- Prefetch control icons -->
64
- <link rel="prefetch" as="image" href="/img/controls/enable.svg" />
65
- <link rel="prefetch" as="image" href="/img/controls/disable.svg" />
66
-
67
- <!-- Prefetch payment icons -->
68
- <link rel="prefetch" as="image" href="/img/banks/visa.svg" />
69
- <link rel="prefetch" as="image" href="/img/banks/mastercard.svg" />
70
- <link rel="prefetch" as="image" href="/img/banks/amex.svg" />
71
-
72
- <!-- Prefetch all flag icons (country selector) -->
73
- <link rel="prefetch" as="image" href="/flags/us.svg" />
74
- <link rel="prefetch" as="image" href="/flags/uk.svg" />
75
- <link rel="prefetch" as="image" href="/flags/au.svg" />
76
- <link rel="prefetch" as="image" href="/flags/de.svg" />
77
- <link rel="prefetch" as="image" href="/flags/nl.svg" />
78
- <link rel="prefetch" as="image" href="/flags/at.svg" />
79
- <link rel="prefetch" as="image" href="/flags/be.svg" />
80
- <link rel="prefetch" as="image" href="/flags/ch.svg" />
81
- <link rel="prefetch" as="image" href="/flags/cz.svg" />
82
- <link rel="prefetch" as="image" href="/flags/dk.svg" />
83
- <link rel="prefetch" as="image" href="/flags/es.svg" />
84
- <link rel="prefetch" as="image" href="/flags/no.svg" />
85
- <link rel="prefetch" as="image" href="/flags/nz.svg" />
86
- <link rel="prefetch" as="image" href="/flags/pl.svg" />
87
- <link rel="prefetch" as="image" href="/flags/se.svg" />
88
- <link rel="prefetch" as="image" href="/flags/ae.svg" />
89
-
90
- <!-- Prefetch other logo variants -->
91
- <link rel="prefetch" as="image" href="/img/logo_icon.png" />
92
-
93
- <!-- Prefetch PWA resources -->
94
- <link rel="prefetch" as="script" href="/sw.js" />
95
-
96
- <!-- Preload critical PWA manifest -->
97
- <link rel="preload" as="fetch" href="/manifest.json" crossorigin />
35
+ <link rel="prefetch" as="image" href="/img/sell.svg" />
98
36
  <link rel="manifest" href="/manifest.json" />
99
- <meta name="theme-color" content="#1a1b1e" />
100
- <link rel="apple-touch-icon" href="/apple-touch-icon.png?v=2" />
101
-
102
- <!-- Prism.js for syntax highlighting -->
103
- <link
104
- rel="stylesheet"
105
- href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css"
106
- />
107
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
108
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js"></script>
109
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-json.min.js"></script>
37
+ <meta name="theme-color" content="rgba(28, 28, 49, 1)" />
38
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
110
39
  </head>
111
40
 
112
41
  <body class="w-full">
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import api from "./backend/index.js";
1
+ const api = require("./backend");
2
2
  api.start();
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "@necrolab/dashboard",
3
- "version": "0.4.61",
4
- "type": "module",
3
+ "version": "0.4.208",
5
4
  "scripts": {
6
- "build": "rm -rf dist && npx workbox-cli generateSW workbox-config.cjs && vite build",
7
- "dev": "node dev-server.js",
8
- "bot": "node dev-server.js",
9
- "expose": "node dev-server.js",
5
+ "build": "npx workbox-cli generateSW workbox-config.js && vite build",
6
+ "dev": "vite",
7
+ "bot": "vite",
8
+ "expose": "vite --host 0.0.0.0",
10
9
  "postinstall": "node postinstall.js",
11
10
  "updaterenderer": "npm i @necrolab/tm-renderer@latest",
12
11
  "preview": "vite preview",
@@ -15,27 +14,26 @@
15
14
  "dependencies": {
16
15
  "@faker-js/faker": "^7.6.0",
17
16
  "@msgpack/msgpack": "^3.0.0-beta2",
18
- "@necrolab/tm-renderer": "^0.1.12",
19
- "@vitejs/plugin-vue": "^5.2.1",
20
- "@vueuse/core": "^11.3.0",
21
- "autoprefixer": "^10.4.21",
22
- "caniuse-lite": "^1.0.30001692",
23
- "cookie-parser": "^1.4.7",
17
+ "@necrolab/tm-renderer": "^0.1.0",
18
+ "@vitejs/plugin-vue": "^5.0.3",
19
+ "@vueuse/core": "^10.7.2",
20
+ "autoprefixer": "^10.4.17",
21
+ "caniuse-lite": "^1.0.30001696",
22
+ "cookie-parser": "^1.4.6",
24
23
  "cors": "^2.8.5",
25
- "dragselect": "^3.1.1",
26
- "express": "^4.21.2",
24
+ "dragselect": "^3.0.4",
25
+ "express": "^4.19.1",
27
26
  "express-ws": "^5.0.2",
28
- "ipaddr.js": "^2.2.0",
29
- "pinia": "^2.3.0",
30
- "postcss": "^8.4.49",
31
- "prettier": "^3.5.3",
32
- "prettier-plugin-tailwindcss": "^0.6.12",
27
+ "pinia": "^2.1.7",
28
+ "postcss": "^8.4.34",
33
29
  "register-service-worker": "^1.7.2",
34
- "sass": "^1.83.0",
35
- "tailwindcss": "^3.4.17",
36
- "vite": "^6.3.5",
37
- "vue": "^3.5.14",
38
- "vue-router": "^4.5.0",
30
+ "sass": "^1.70.0",
31
+ "simple-code-editor": "github:wwhtrbbtt/simple-code-editor",
32
+ "tailwindcss": "^3.4.1",
33
+ "uuid": "^9.0.1",
34
+ "vite": "^5.0.12",
35
+ "vue": "^3.4.21",
36
+ "vue-router": "^4.2.5",
39
37
  "vue-smoothie": "^1.2.0",
40
38
  "vue-virtual-scroller": "^2.0.0-beta.8",
41
39
  "vue3-toastify": "^0.0.4",
@@ -44,21 +42,8 @@
44
42
  },
45
43
  "main": "index.js",
46
44
  "devDependencies": {
47
- "eslint": "^9.17.0",
48
- "eslint-plugin-vue": "^9.32.0",
49
- "workbox-cli": "^7.3.0"
50
- },
51
- "overrides": {
52
- "glob": "^11.0.0",
53
- "braces": "^3.0.3",
54
- "micromatch": "^4.0.8",
55
- "postcss": "^8.4.49",
56
- "cookie-parser": "^1.4.7",
57
- "express": "^4.21.2",
58
- "body-parser": "^1.20.3",
59
- "whatwg-url": "^14.0.0",
60
- "ws": "^8.17.1",
61
- "path-to-regexp": "^0.1.12",
62
- "tmp": "^0.2.3"
45
+ "@vue/cli-plugin-pwa": "^5.0.8",
46
+ "eslint": "^8.56.0",
47
+ "eslint-plugin-vue": "^9.21.1"
63
48
  }
64
49
  }
package/postcss.config.js CHANGED
@@ -1,4 +1,4 @@
1
- export default {
1
+ module.exports = {
2
2
  plugins: {
3
3
  tailwindcss: {},
4
4
  autoprefixer: {},
package/postinstall.js CHANGED
@@ -1,103 +1,22 @@
1
- import fs from "node:fs";
2
- import { execSync } from "node:child_process";
3
- import path from "node:path";
4
- import { fileURLToPath } from "node:url";
1
+ const fs = require('fs');
2
+ const { execSync } = require('node:child_process');
3
+ const path = require('node:path');
5
4
 
6
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
+ console.log(__dirname);
7
6
 
8
- // Read package.json to get current version
9
- const packageJsonPath = path.join(__dirname, "package.json");
10
- let currentVersion = "0.0.0";
11
- try {
12
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
13
- currentVersion = packageJson.version;
14
- } catch (e) {
15
- console.error(`Failed to read package.json version: ${e.message}`);
16
- }
7
+ var vitePath = path.resolve(path.join(__dirname, '/../../vite/bin/vite.js'));
8
+ console.log(vitePath);
9
+ execSync(`node "${vitePath}" build`, {
10
+ cwd: __dirname,
11
+ stdio: 'inherit',
12
+ });
17
13
 
14
+ var oldPath = path.resolve('./dist/');
15
+ var distPath = path.resolve(path.join(__dirname, '../../../dashboard/dist/'));
18
16
  try {
19
- const projectRoot = path.resolve(__dirname, "../../..");
20
- const dashboardDir = path.join(projectRoot, "dashboard");
21
- const distPath = path.join(dashboardDir, "dist");
22
- const versionFilePath = path.join(distPath, "version.txt");
23
-
24
- // Check if we can skip logic
25
- console.log(`Checking version at ${distPath}...`);
26
- if (fs.existsSync(versionFilePath)) {
27
- try {
28
- const installedVersion = fs.readFileSync(versionFilePath, "utf-8").trim();
29
- if (installedVersion === currentVersion) {
30
- console.log(`Version ${currentVersion} is already installed at ${distPath}. Skipping build.`);
31
- process.exit(0);
32
- } else {
33
- console.log(
34
- `Version mismatch (Installed: ${installedVersion}, Target: ${currentVersion}). Proceeding with build.`
35
- );
36
- }
37
- } catch (readErr) {
38
- console.log("Could not read version file. Proceeding with build.");
39
- }
40
- } else {
41
- console.log("No version file found. Proceeding with build.");
42
- }
43
-
44
- console.log("Running postinstall build...");
45
-
46
- // Service Worker
47
- console.log("Generating service worker...");
48
- try {
49
- execSync(`npx workbox-cli generateSW workbox-config.cjs`, {
50
- cwd: __dirname,
51
- stdio: "inherit"
52
- });
53
- } catch (error) {
54
- console.error("Failed to generate service worker.");
55
- throw error;
56
- }
57
-
58
- // Build
59
- console.log("Building with Vite...");
60
- try {
61
- execSync(`npx vite build`, {
62
- cwd: __dirname,
63
- stdio: "inherit"
64
- });
65
- } catch (error) {
66
- console.error("Failed to build with Vite.");
67
- throw error;
68
- }
69
-
70
- const oldPath = path.join(__dirname, "dist");
71
-
72
- if (!fs.existsSync(oldPath)) {
73
- throw new Error(`Build failed: ${oldPath} does not exist.`);
74
- }
75
-
76
- console.log("Moving build artifacts...");
77
-
78
- // Ensure target directory exists
79
- if (!fs.existsSync(dashboardDir)) {
80
- console.log(`Creating target directory: ${dashboardDir}`);
81
- fs.mkdirSync(dashboardDir, { recursive: true });
82
- }
83
-
84
- // Clean destination
85
- if (fs.existsSync(distPath)) {
86
- fs.rmSync(distPath, { recursive: true, force: true });
87
- }
88
-
89
- // Copy
90
- fs.cpSync(oldPath, distPath, { recursive: true });
91
-
92
- // Write version file
93
- fs.writeFileSync(versionFilePath, currentVersion);
94
- console.log(`Written version ${currentVersion} to ${versionFilePath}`);
95
-
96
- // Cleanup source dist
97
- fs.rmSync(oldPath, { recursive: true, force: true });
17
+ fs.rmSync(distPath, {
18
+ recursive: true,
19
+ });
20
+ } catch {}
98
21
 
99
- console.log("Postinstall completed successfully.");
100
- } catch (e) {
101
- console.error(`An error occurred: ${e.message}`);
102
- process.exit(1);
103
- }
22
+ fs.renameSync(oldPath, distPath);
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,32 +1,27 @@
1
1
  {
2
- "short_name": "Necro",
3
- "name": "Necro Dashboard",
2
+ "short_name": "Russonoro",
3
+ "name": "Russonoro Labs",
4
4
  "icons": [{
5
- "src": "/android-chrome-192x192.png?v=2",
5
+ "src": "/android-chrome-192x192.png",
6
6
  "type": "image/png",
7
7
  "sizes": "192x192"
8
8
  },
9
9
  {
10
- "src": "/android-chrome-192x192.png?v=2",
10
+ "src": "/android-chrome-192x192.png",
11
11
  "type": "image/png",
12
12
  "sizes": "192x192",
13
13
  "purpose": "any maskable"
14
14
 
15
15
  },
16
16
  {
17
- "src": "/android-chrome-512x512.png?v=2",
17
+ "src": "/android-chrome-512x512.png",
18
18
  "type": "image/png",
19
19
  "sizes": "512x512"
20
- },
21
- {
22
- "src": "/apple-touch-icon.png?v=2",
23
- "type": "image/png",
24
- "sizes": "180x180"
25
20
  }
26
21
  ],
27
22
  "start_url": "/",
28
- "background_color": "#1a1b1e",
23
+ "background_color": "#202036",
29
24
  "display": "standalone",
30
25
  "scope": "/",
31
- "theme_color": "#1a1b1e"
26
+ "theme_color": "#202036"
32
27
  }
package/public/sw.js ADDED
@@ -0,0 +1,2 @@
1
+ if(!self.define){let e,i={};const o=(o,n)=>(o=new URL(o+".js",n).href,i[o]||new Promise((i=>{if("document"in self){const e=document.createElement("script");e.src=o,e.onload=i,document.head.appendChild(e)}else e=o,importScripts(o),i()})).then((()=>{let e=i[o];if(!e)throw new Error(`Module ${o} didn’t register its module`);return e})));self.define=(n,r)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(i[c])return;let f={};const s=e=>o(e,c),a={module:{uri:c},exports:f,require:s};i[c]=Promise.all(n.map((e=>a[e]||s(e)))).then((e=>(r(...e),f)))}}define(["./workbox-e0f89ef3"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"android-chrome-192x192.png",revision:"30d19b183139702e6661209fa8a3e582"},{url:"android-chrome-512x512.png",revision:"1c776ba6fa6711e95285a0eebf343513"},{url:"apple-touch-icon.png",revision:"cab457558c0b3176e863f344eed199d8"},{url:"favicon-16x16.png",revision:"bbdd0bf2f48c518e3af94ce6718095d7"},{url:"favicon-32x32.png",revision:"304b595fab26360e641c686a01945dee"},{url:"favicon.ico",revision:"a018e0861756e6c2f54f4655b3099e30"},{url:"img/logo_icon_2.png",revision:"da7a743fbb510ff07e65bb229285377c"},{url:"img/logo_icon.png",revision:"a44bab8a1c94896919641e5626be5984"},{url:"img/logo_trans.png",revision:"6d274f4b407f9935cd43bd6438de327b"},{url:"img/logo.png",revision:"fa2cb11baca032418722c63f9fba1f98"}],{ignoreURLParametersMatching:[/^utm_/,/^fbclid$/]})}));
2
+ //# sourceMappingURL=sw.js.map