@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.
- package/.prettierrc +1 -27
- package/.vscode/extensions.json +1 -1
- package/README.md +79 -43
- package/backend/api.js +48 -40
- package/backend/auth.js +3 -3
- package/backend/batching.js +1 -1
- package/backend/endpoints.js +77 -13
- package/backend/index.js +2 -2
- package/backend/mock-data.js +38 -29
- package/backend/mock-src/classes/logger.js +8 -8
- package/backend/mock-src/classes/utils.js +3 -7
- package/backend/mock-src/database.js +0 -0
- package/backend/mock-src/ticketmaster.js +79 -79
- package/backend/validator.js +2 -2
- package/config/configs.json +3 -2
- package/config/filter.json +3 -2
- package/index.html +10 -81
- package/index.js +1 -1
- package/package.json +24 -27
- package/postcss.config.js +1 -1
- package/postinstall.js +15 -84
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/manifest.json +7 -12
- package/public/sw.js +2 -0
- package/public/workbox-49fdaf31.js +2 -0
- package/public/workbox-49fdaf31.js.map +1 -0
- package/public/workbox-88575b92.js +2 -0
- package/public/workbox-88575b92.js.map +1 -0
- package/public/workbox-a67a7b11.js +2 -0
- package/public/workbox-a67a7b11.js.map +1 -0
- package/public/workbox-d4314735.js +2 -0
- package/public/workbox-d4314735.js.map +1 -0
- package/public/workbox-e0f89ef3.js +2 -0
- package/public/workbox-e0f89ef3.js.map +1 -0
- package/run +9 -176
- package/src/App.vue +85 -498
- package/src/assets/css/_input.scss +99 -144
- package/src/assets/css/main.scss +99 -450
- package/src/assets/img/background.svg +2 -2
- package/src/assets/img/logo_icon.png +0 -0
- package/src/components/Auth/LoginForm.vue +11 -62
- package/src/components/Editors/Account/Account.vue +40 -116
- package/src/components/Editors/Account/AccountCreator.vue +39 -88
- package/src/components/Editors/Account/AccountView.vue +34 -102
- package/src/components/Editors/Account/CreateAccount.vue +32 -80
- package/src/components/Editors/Profile/CreateProfile.vue +83 -269
- package/src/components/Editors/Profile/Profile.vue +47 -132
- package/src/components/Editors/Profile/ProfileCountryChooser.vue +20 -82
- package/src/components/Editors/Profile/ProfileView.vue +34 -91
- package/src/components/Editors/TagLabel.vue +6 -67
- package/src/components/Filter/Filter.vue +72 -289
- package/src/components/Filter/FilterPreview.vue +30 -171
- package/src/components/Filter/PriceSortToggle.vue +4 -74
- package/src/components/Table/Header.vue +1 -1
- package/src/components/Table/Row.vue +1 -1
- package/src/components/Table/Table.vue +2 -19
- package/src/components/Tasks/CheckStock.vue +13 -28
- package/src/components/Tasks/Controls/DesktopControls.vue +17 -17
- package/src/components/Tasks/Controls/MobileControls.vue +45 -8
- package/src/components/Tasks/CreateTaskAXS.vue +73 -79
- package/src/components/Tasks/CreateTaskTM.vue +142 -94
- package/src/components/Tasks/MassEdit.vue +7 -9
- package/src/components/Tasks/QuickSettings.vue +55 -169
- package/src/components/Tasks/ScrapeVenue.vue +4 -7
- package/src/components/Tasks/Stats.vue +23 -52
- package/src/components/Tasks/Task.vue +136 -378
- package/src/components/Tasks/TaskView.vue +47 -107
- package/src/components/Tasks/Utilities.vue +6 -5
- package/src/components/icons/Bag.vue +1 -1
- package/src/components/icons/Loyalty.vue +1 -1
- package/src/components/icons/Mail.vue +2 -2
- package/src/components/icons/Play.vue +2 -2
- package/src/components/icons/Reload.vue +5 -4
- package/src/components/icons/Sandclock.vue +2 -2
- package/src/components/icons/Stadium.vue +1 -1
- package/src/components/icons/index.js +1 -24
- package/src/components/ui/Modal.vue +13 -105
- package/src/components/ui/Navbar.vue +38 -171
- package/src/components/ui/ReconnectIndicator.vue +55 -351
- package/src/components/ui/Splash.vue +35 -5
- package/src/components/ui/controls/CountryChooser.vue +62 -200
- package/src/components/ui/controls/atomic/Checkbox.vue +10 -119
- package/src/components/ui/controls/atomic/Dropdown.vue +39 -208
- package/src/components/ui/controls/atomic/MultiDropdown.vue +37 -300
- package/src/libs/Filter.js +170 -200
- package/src/registerServiceWorker.js +1 -1
- package/src/stores/connection.js +53 -51
- package/src/stores/logger.js +3 -11
- package/src/stores/sampleData.js +235 -207
- package/src/stores/ui.js +44 -112
- package/src/stores/utils.js +6 -90
- package/src/views/Accounts.vue +35 -44
- package/src/views/Console.vue +90 -341
- package/src/views/Editor.vue +123 -1176
- package/src/views/FilterBuilder.vue +251 -607
- package/src/views/Login.vue +14 -76
- package/src/views/Profiles.vue +25 -44
- package/src/views/Tasks.vue +100 -187
- package/static/offline.html +50 -192
- package/tailwind.config.js +26 -104
- package/vite.config.js +16 -73
- package/vue.config.js +2 -2
- package/workbox-config.js +11 -0
- package/artwork/image.png +0 -0
- package/dev-server.js +0 -136
- package/exit +0 -209
- package/jsconfig.json +0 -16
- package/src/assets/css/_utilities.scss +0 -388
- package/src/assets/img/background.svg.backup +0 -11
- package/src/components/icons/Check.vue +0 -5
- package/src/components/icons/Close.vue +0 -21
- package/src/components/icons/CloseX.vue +0 -5
- package/src/components/icons/Key.vue +0 -21
- package/src/components/icons/Pencil.vue +0 -21
- package/src/components/icons/Profile.vue +0 -18
- package/src/components/icons/Sell.vue +0 -21
- package/src/components/icons/Spinner.vue +0 -42
- package/src/components/icons/SquareCheck.vue +0 -18
- package/src/components/icons/SquareUncheck.vue +0 -18
- package/src/components/icons/Wildcard.vue +0 -18
- package/src/components/ui/controls/atomic/LoadingButton.vue +0 -45
- package/src/composables/useClickOutside.js +0 -21
- package/src/composables/useDropdownPosition.js +0 -174
- package/src/types/index.js +0 -41
- package/src/utils/debug.js +0 -1
- package/switch-branch.sh +0 -41
- package/workbox-config.cjs +0 -63
- /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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
24
|
-
|
|
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
|
-
|
|
30
|
-
|
|
30
|
+
stripDown() {
|
|
31
|
+
return this.data;
|
|
32
|
+
}
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
setError(e) {
|
|
35
|
+
this.error = e;
|
|
36
|
+
this.status = e;
|
|
37
|
+
this.data.active = false;
|
|
38
|
+
}
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
get status() {
|
|
68
|
+
return this.statusString || '';
|
|
69
|
+
}
|
|
72
70
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
scrapeVenue() {
|
|
86
|
+
this.logger.Info('Scraping venue map');
|
|
87
|
+
}
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
89
|
+
scrapeSeats() {
|
|
90
|
+
this.logger.Info('Scraping seats');
|
|
91
|
+
}
|
|
92
|
+
};
|
package/backend/validator.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
62
|
+
module.exports = validateTaskData;
|
package/config/configs.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"name": "
|
|
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": "
|
|
16
|
+
"accountTag": "Dubai",
|
|
16
17
|
"profileTags": ["Any"]
|
|
17
18
|
}
|
|
18
19
|
}
|
package/config/filter.json
CHANGED
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="
|
|
11
|
-
<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
|
-
<!--
|
|
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/
|
|
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="
|
|
100
|
-
<link rel="apple-touch-icon" href="/apple-touch-icon.png
|
|
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
|
-
|
|
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.
|
|
4
|
-
"type": "module",
|
|
3
|
+
"version": "0.4.208",
|
|
5
4
|
"scripts": {
|
|
6
|
-
"build": "
|
|
7
|
-
"dev": "
|
|
8
|
-
"bot": "
|
|
9
|
-
"expose": "
|
|
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.
|
|
19
|
-
"@vitejs/plugin-vue": "^5.
|
|
20
|
-
"@vueuse/core": "^
|
|
21
|
-
"autoprefixer": "^10.4.
|
|
22
|
-
"caniuse-lite": "^1.0.
|
|
23
|
-
"cookie-parser": "^1.4.
|
|
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.
|
|
26
|
-
"express": "^4.
|
|
24
|
+
"dragselect": "^3.0.4",
|
|
25
|
+
"express": "^4.19.1",
|
|
27
26
|
"express-ws": "^5.0.2",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
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.
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
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": "^
|
|
49
|
-
"eslint-plugin-vue": "^9.
|
|
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
package/postinstall.js
CHANGED
|
@@ -1,91 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
55
|
-
|
|
10
|
+
cwd: __dirname,
|
|
11
|
+
stdio: 'inherit',
|
|
56
12
|
});
|
|
57
13
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
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
|
-
|
|
90
|
-
console.log("🎉 Postinstall completed successfully!");
|
|
91
|
-
console.log(`${colors.reset}`);
|
|
22
|
+
fs.renameSync(oldPath, distPath);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/public/favicon-16x16.png
CHANGED
|
Binary file
|
package/public/favicon-32x32.png
CHANGED
|
Binary file
|
package/public/favicon.ico
CHANGED
|
Binary file
|
package/public/manifest.json
CHANGED
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
{
|
|
2
|
-
"short_name": "
|
|
3
|
-
"name": "
|
|
2
|
+
"short_name": "Russonoro",
|
|
3
|
+
"name": "Russonoro Labs",
|
|
4
4
|
"icons": [{
|
|
5
|
-
"src": "/android-chrome-192x192.png
|
|
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
|
|
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
|
|
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": "#
|
|
23
|
+
"background_color": "#202036",
|
|
29
24
|
"display": "standalone",
|
|
30
25
|
"scope": "/",
|
|
31
|
-
"theme_color": "#
|
|
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
|