@necrolab/dashboard 0.4.60 → 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 +24 -27
  20. package/postcss.config.js +1 -1
  21. package/postinstall.js +15 -84
  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 +2 -2
  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.60",
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",
@@ -45,8 +43,7 @@
45
43
  "main": "index.js",
46
44
  "devDependencies": {
47
45
  "@vue/cli-plugin-pwa": "^5.0.8",
48
- "eslint": "^9.17.0",
49
- "eslint-plugin-vue": "^9.32.0",
50
- "workbox-cli": "^7.3.0"
46
+ "eslint": "^8.56.0",
47
+ "eslint-plugin-vue": "^9.21.1"
51
48
  }
52
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,91 +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));
7
-
8
- // 🎨 Cool colors for better output
9
- const colors = {
10
- reset: "\x1b[0m",
11
- bright: "\x1b[1m",
12
- cyan: "\x1b[36m",
13
- green: "\x1b[32m",
14
- yellow: "\x1b[33m",
15
- blue: "\x1b[34m",
16
- magenta: "\x1b[35m"
17
- };
18
-
19
- // 🎯 Cool logging functions
20
- const log = {
21
- info: (msg) => console.log(`${colors.cyan}${colors.bright}ℹ️ ${msg}${colors.reset}`),
22
- success: (msg) => console.log(`${colors.green}${colors.bright}✅ ${msg}${colors.reset}`),
23
- process: (msg) => console.log(`${colors.yellow}${colors.bright}⚡ ${msg}${colors.reset}`),
24
- path: (label, path) =>
25
- console.log(`${colors.blue}📁 ${colors.bright}${label}:${colors.reset} ${colors.magenta}${path}${colors.reset}`)
26
- };
27
-
28
- // 🚀 Banner for style
29
- console.log(`${colors.cyan}${colors.bright}`);
30
- console.log("┌─────────────────────────────────────┐");
31
- console.log("│ 🔧 NECRO POSTINSTALL SCRIPT │");
32
- console.log("└─────────────────────────────────────┘");
33
- console.log(`${colors.reset}`);
34
-
35
- log.process("Running postinstall build...");
36
-
37
- var vitePath = path.resolve(path.join(__dirname, "/../../vite/bin/vite.js"));
38
-
39
- log.path("Vite path", vitePath);
40
- log.path("Current directory", __dirname);
41
-
42
- log.process("Generating service worker with Workbox...");
43
-
44
- execSync(`npx workbox-cli generateSW workbox-config.cjs`, {
45
- cwd: __dirname,
46
- stdio: "inherit"
47
- });
48
-
49
- log.success("Service worker generated!");
50
-
51
- log.process("Building with Vite...");
5
+ console.log(__dirname);
52
6
 
7
+ var vitePath = path.resolve(path.join(__dirname, '/../../vite/bin/vite.js'));
8
+ console.log(vitePath);
53
9
  execSync(`node "${vitePath}" build`, {
54
- cwd: __dirname,
55
- stdio: "inherit"
10
+ cwd: __dirname,
11
+ stdio: 'inherit',
56
12
  });
57
13
 
58
- log.success("Vite build completed!");
59
-
60
- var oldPath = path.join(__dirname, "dist");
61
- var projectRoot = path.resolve(__dirname, "../../..");
62
- var distPath = path.join(projectRoot, "dashboard", "dist");
63
- var dashboardDir = path.join(projectRoot, "dashboard");
64
-
65
- log.process("Moving build artifacts...");
66
- log.path("Source", oldPath);
67
- log.path("Destination", distPath);
68
-
69
- if (!fs.existsSync(dashboardDir)) {
70
- fs.mkdirSync(dashboardDir, { recursive: true });
71
- }
72
-
73
- fs.rmSync(distPath, {
14
+ var oldPath = path.resolve('./dist/');
15
+ var distPath = path.resolve(path.join(__dirname, '../../../dashboard/dist/'));
16
+ try {
17
+ fs.rmSync(distPath, {
74
18
  recursive: true,
75
- force: true
76
- });
77
-
78
- fs.cpSync(oldPath, distPath, {
79
- recursive: true
80
- });
81
-
82
- fs.rmSync(oldPath, {
83
- recursive: true,
84
- force: true
85
- });
86
-
87
- log.success("Build artifacts moved successfully!");
19
+ });
20
+ } catch {}
88
21
 
89
- console.log(`${colors.green}${colors.bright}`);
90
- console.log("🎉 Postinstall completed successfully!");
91
- console.log(`${colors.reset}`);
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