bfg-common 1.3.227 → 1.3.229

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 (37) hide show
  1. package/components/atoms/alert/Alert.vue +95 -95
  2. package/components/atoms/alert/Notification.vue +170 -170
  3. package/components/atoms/switch/Switch.vue +111 -111
  4. package/components/atoms/table/compact/Compact.vue +526 -526
  5. package/components/atoms/tooltip/Signpost.vue +225 -225
  6. package/components/common/diagramMain/lib/models/interfaces.ts +3 -3
  7. package/components/common/pages/Tasks.vue +120 -120
  8. package/components/common/recursionTree/RecursionTree.vue +203 -203
  9. package/components/common/vm/actions/add/Add.vue +575 -575
  10. package/components/common/vm/actions/clone/Clone.vue +518 -518
  11. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  12. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  13. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  14. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  15. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  16. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  17. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  18. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  19. package/components/common/weekSelect/WeekSelect.vue +112 -112
  20. package/components/common/weekSelect/lib/config/options.ts +10 -10
  21. package/components/common/wizards/network/add/lib/config/sendData.ts +65 -64
  22. package/components/common/wizards/network/add/lib/models/interfaces.ts +40 -40
  23. package/composables/useAppVersion.ts +21 -21
  24. package/composables/useEnvLanguage.ts +20 -20
  25. package/lib/utils/sendTask.ts +72 -72
  26. package/minify.js +146 -146
  27. package/package.json +1 -1
  28. package/plugins/binary.ts +46 -35
  29. package/public/spice-console/application/codec.js +257 -257
  30. package/public/spice-console/lib/rasterEngine.js +907 -907
  31. package/public/spice-console/network/spicechannel.js +369 -369
  32. package/store/main/lib/interfaces.ts +9 -9
  33. package/store/tasks/actions.ts +133 -133
  34. package/store/tasks/getters.ts +25 -25
  35. package/store/tasks/lib/models/interfaces.ts +18 -18
  36. package/store/tasks/mutations.ts +58 -58
  37. package/store/tasks/state.ts +16 -16
@@ -1,72 +1,72 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type {
3
- API_UI_I_Error,
4
- UI_I_RequestBody,
5
- } from '~/lib/models/store/interfaces'
6
- import type {
7
- UI_I_NotifyBodyMessage,
8
- UI_I_SendTaskParams,
9
- } from '~/lib/models/interfaces'
10
- import { base64 } from './base64'
11
-
12
- const localization = computed<UI_I_Localization>(() => useLocal())
13
-
14
- const showNotification = (message: UI_I_NotifyBodyMessage): void => {
15
- const { title, desc, status } = message
16
- const { $store } = useNuxtApp()
17
-
18
- // @ts-ignore
19
- $store.dispatch('main/A_SHOW_NOTIFICATION', {
20
- status,
21
- messages: [
22
- {
23
- title,
24
- descriptions: [desc],
25
- },
26
- ],
27
- headline: '',
28
- timeout: status === 'success' ? 3000 : '',
29
- })
30
- }
31
- const msgError: UI_I_NotifyBodyMessage = {
32
- status: 'error',
33
- title: localization.value.error,
34
- desc: '',
35
- }
36
- const handleErrors = (error: Ref<API_UI_I_Error>): void => {
37
- if (error.value.data?.error_message) {
38
- msgError.desc = error.value.data?.error_message
39
- showNotification(msgError)
40
- }
41
- }
42
-
43
- export const handleRequest = async (
44
- url: string,
45
- body: UI_I_RequestBody
46
- ): Promise<void> => {
47
- // @ts-ignore
48
- const { error } = await useMyFetch<never, API_UI_I_Error>(url, {
49
- body,
50
- method: 'POST',
51
- key: Date.now().toString(),
52
- })
53
-
54
- if (error.value && error.value.data.error_code !== 0) {
55
- handleErrors(error)
56
- }
57
- }
58
-
59
- export async function sendTask({
60
- method,
61
- target,
62
- args,
63
- }: UI_I_SendTaskParams): Promise<void> {
64
- const argsToBase64 = args ? base64.encode(args) : ''
65
- await handleRequest('/ui/tasks', {
66
- method,
67
- params: {
68
- target,
69
- args: argsToBase64,
70
- },
71
- })
72
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type {
3
+ API_UI_I_Error,
4
+ UI_I_RequestBody,
5
+ } from '~/lib/models/store/interfaces'
6
+ import type {
7
+ UI_I_NotifyBodyMessage,
8
+ UI_I_SendTaskParams,
9
+ } from '~/lib/models/interfaces'
10
+ import { base64 } from './base64'
11
+
12
+ const localization = computed<UI_I_Localization>(() => useLocal())
13
+
14
+ const showNotification = (message: UI_I_NotifyBodyMessage): void => {
15
+ const { title, desc, status } = message
16
+ const { $store } = useNuxtApp()
17
+
18
+ // @ts-ignore
19
+ $store.dispatch('main/A_SHOW_NOTIFICATION', {
20
+ status,
21
+ messages: [
22
+ {
23
+ title,
24
+ descriptions: [desc],
25
+ },
26
+ ],
27
+ headline: '',
28
+ timeout: status === 'success' ? 3000 : '',
29
+ })
30
+ }
31
+ const msgError: UI_I_NotifyBodyMessage = {
32
+ status: 'error',
33
+ title: localization.value.error,
34
+ desc: '',
35
+ }
36
+ const handleErrors = (error: Ref<API_UI_I_Error>): void => {
37
+ if (error.value.data?.error_message) {
38
+ msgError.desc = error.value.data?.error_message
39
+ showNotification(msgError)
40
+ }
41
+ }
42
+
43
+ export const handleRequest = async (
44
+ url: string,
45
+ body: UI_I_RequestBody
46
+ ): Promise<void> => {
47
+ // @ts-ignore
48
+ const { error } = await useMyFetch<never, API_UI_I_Error>(url, {
49
+ body,
50
+ method: 'POST',
51
+ key: Date.now().toString(),
52
+ })
53
+
54
+ if (error.value && error.value.data.error_code !== 0) {
55
+ handleErrors(error)
56
+ }
57
+ }
58
+
59
+ export async function sendTask({
60
+ method,
61
+ target,
62
+ args,
63
+ }: UI_I_SendTaskParams): Promise<void> {
64
+ const argsToBase64 = args ? base64.encode(args) : ''
65
+ await handleRequest('/ui/tasks', {
66
+ method,
67
+ params: {
68
+ target,
69
+ args: argsToBase64,
70
+ },
71
+ })
72
+ }
package/minify.js CHANGED
@@ -1,146 +1,146 @@
1
- const fs = require('fs')
2
- const terser = require('terser')
3
-
4
- // Файлы которые нужно минимизировать
5
- const filesByOrder = [
6
- 'public/spice-console/lib/decoder/jmuxer.js',
7
- 'public/spice-console/lib/decoder/dixie.js',
8
- 'public/spice-console/lib/jquery-2.0.3.js',
9
- 'public/spice-console/lib/utils.js',
10
- 'public/spice-console/lib/modernizr.js',
11
- 'public/spice-console/lib/jquery-mousewheel.js',
12
- 'public/spice-console/lib/jquery-visibility.min.js',
13
- 'public/spice-console/lib/lodash.4.0.0.min.js',
14
- 'public/spice-console/lib/jgestures.min.js',
15
- 'public/spice-console/lib/pixastic.js',
16
- 'public/spice-console/lib/base64.js',
17
- 'public/spice-console/lib/biginteger.js',
18
- 'public/spice-console/lib/virtualjoystick.js',
19
- 'public/spice-console/lib/prettyprint.js',
20
- 'public/spice-console/lib/jsbn.js',
21
- 'public/spice-console/lib/jsbn2.js',
22
- 'public/spice-console/lib/prng4.js',
23
- 'public/spice-console/lib/rng.js',
24
- 'public/spice-console/lib/sha1.js',
25
- 'public/spice-console/lib/encrypt.js',
26
- 'public/spice-console/swcanvas/swcanvas.js',
27
- 'public/spice-console/lib/bowser.js',
28
- 'public/spice-console/lib/flipper.js',
29
- 'public/spice-console/lib/CollisionDetector.js',
30
- 'public/spice-console/lib/GlobalPool.js',
31
- 'public/spice-console/lib/GenericObjectPool.js',
32
- 'public/spice-console/lib/AsyncConsumer.js',
33
- 'public/spice-console/lib/AsyncWorker.js',
34
- 'public/spice-console/lib/PacketWorkerIdentifier.js',
35
- 'public/spice-console/spiceobjects/spiceobjects.js',
36
- 'public/spice-console/spiceobjects/generated/protocol.js',
37
- 'public/spice-console/lib/graphicdebug.js',
38
- 'public/spice-console/lib/images/lz.js',
39
- 'public/spice-console/lib/images/bitmap.js',
40
- 'public/spice-console/lib/images/png.js',
41
- 'public/spice-console/lib/runqueue.js',
42
- 'public/spice-console/lib/graphic.js',
43
- 'public/spice-console/lib/queue.js',
44
- 'public/spice-console/lib/ImageUncompressor.js',
45
- 'public/spice-console/lib/SyncAsyncHandler.js',
46
- 'public/spice-console/lib/IntegrationBenchmark.js',
47
- 'public/spice-console/lib/stuckkeyshandler.js',
48
- 'public/spice-console/lib/timelapsedetector.js',
49
- 'public/spice-console/lib/displayRouter.js',
50
- 'public/spice-console/lib/rasterEngine.js',
51
- 'public/spice-console/lib/DataLogger.js',
52
- 'public/spice-console/network/socket.js',
53
- 'public/spice-console/network/clusternodechooser.js',
54
- 'public/spice-console/network/socketqueue.js',
55
- 'public/spice-console/network/packetcontroller.js',
56
- 'public/spice-console/network/packetextractor.js',
57
- 'public/spice-console/network/packetreassembler.js',
58
- 'public/spice-console/network/reassemblerfactory.js',
59
- 'public/spice-console/network/sizedefiner.js',
60
- 'public/spice-console/network/packetlinkfactory.js',
61
- 'public/spice-console/network/spicechannel.js',
62
- 'public/spice-console/network/busconnection.js',
63
- 'public/spice-console/network/websocketwrapper.js',
64
- 'public/spice-console/network/connectioncontrol.js',
65
- 'public/spice-console/application/checkActivity.js',
66
- 'public/spice-console/application/agent.js',
67
- 'public/spice-console/application/codec.js',
68
- 'public/spice-console/application/clipboard.js',
69
- 'public/spice-console/application/clipboard/clipboarddataparser.js',
70
- 'public/spice-console/application/clipboard/local/localClipboard.js',
71
- 'public/spice-console/application/spiceconnection.js',
72
- 'public/spice-console/application/clientgui.js',
73
- 'public/spice-console/application/packetprocess.js',
74
- 'public/spice-console/application/packetfilter.js',
75
- 'public/spice-console/application/packetfactory.js',
76
- 'public/spice-console/application/application.js',
77
- 'public/spice-console/application/virtualmouse.js',
78
- 'public/spice-console/application/imagecache.js',
79
- 'public/spice-console/application/rasteroperation.js',
80
- 'public/spice-console/application/stream.js',
81
- 'public/spice-console/application/inputmanager.js',
82
- 'public/spice-console/process/busprocess.js',
83
- 'public/spice-console/process/displayprocess.js',
84
- 'public/spice-console/process/displaypreprocess.js',
85
- 'public/spice-console/process/inputprocess.js',
86
- 'public/spice-console/process/cursorprocess.js',
87
- 'public/spice-console/process/playbackprocess.js',
88
- 'public/spice-console/process/mainprocess.js',
89
- 'public/spice-console/keymaps/keyevent.js',
90
- 'public/spice-console/keymaps/keymapes.js',
91
- 'public/spice-console/keymaps/scanCodeObjProvider.js',
92
- 'public/spice-console/keymaps/scanCodeObjModifier.js',
93
- 'public/spice-console/keymaps/keymapesObj.js',
94
- 'public/spice-console/keymaps/keymapus.js',
95
- 'public/spice-console/keymaps/keymap.js',
96
- 'public/spice-console/run.js',
97
- ]
98
-
99
- // Папка и файл в которую вы хотите сохранить минифицированные файлы
100
- const outputFolder = 'public/spice-console-minify'
101
- const outputFile = `${outputFolder}/run.min.js`
102
-
103
- // Создайте папку назначения, если она не существует
104
- if (!fs.existsSync(outputFolder)) {
105
- fs.mkdirSync(outputFolder, { recursive: true })
106
- }
107
-
108
- let index = 0
109
- let runMinJsContent = ''
110
- filesByOrder.forEach((filePath) => {
111
- // Минифицируем
112
- const fileContent = fs.readFileSync(filePath, 'utf8')
113
- terser.minify(fileContent).then((minified) => {
114
- if (minified.error) {
115
- console.error(
116
- `Ошибка при минификации файла ${filePath}: ${minified.error.message}`
117
- )
118
- } else {
119
- runMinJsContent += minified.code.replaceAll(
120
- 'spice-console/application/WorkerProcess.js',
121
- 'spice-console-minify/WorkerProcess.min.js'
122
- )
123
- index++
124
-
125
- // Если последний файл то все помещаем в run.min.js
126
- if (filesByOrder.length === index)
127
- fs.writeFileSync(outputFile, runMinJsContent)
128
- }
129
- })
130
- })
131
-
132
- // Обрабатываем Worker
133
- const workerJs = 'public/spice-console/application/WorkerProcess.js'
134
- const outputWorkerFile = `${outputFolder}/WorkerProcess.min.js`
135
-
136
- // Минифицируем
137
- const fileContent = fs.readFileSync(workerJs, 'utf8')
138
- terser.minify(fileContent).then((minified) => {
139
- if (minified.error) {
140
- console.error(
141
- `Ошибка при минификации файла ${workerJs}: ${minified.error.message}`
142
- )
143
- } else {
144
- fs.writeFileSync(outputWorkerFile, minified.code)
145
- }
146
- })
1
+ const fs = require('fs')
2
+ const terser = require('terser')
3
+
4
+ // Файлы которые нужно минимизировать
5
+ const filesByOrder = [
6
+ 'public/spice-console/lib/decoder/jmuxer.js',
7
+ 'public/spice-console/lib/decoder/dixie.js',
8
+ 'public/spice-console/lib/jquery-2.0.3.js',
9
+ 'public/spice-console/lib/utils.js',
10
+ 'public/spice-console/lib/modernizr.js',
11
+ 'public/spice-console/lib/jquery-mousewheel.js',
12
+ 'public/spice-console/lib/jquery-visibility.min.js',
13
+ 'public/spice-console/lib/lodash.4.0.0.min.js',
14
+ 'public/spice-console/lib/jgestures.min.js',
15
+ 'public/spice-console/lib/pixastic.js',
16
+ 'public/spice-console/lib/base64.js',
17
+ 'public/spice-console/lib/biginteger.js',
18
+ 'public/spice-console/lib/virtualjoystick.js',
19
+ 'public/spice-console/lib/prettyprint.js',
20
+ 'public/spice-console/lib/jsbn.js',
21
+ 'public/spice-console/lib/jsbn2.js',
22
+ 'public/spice-console/lib/prng4.js',
23
+ 'public/spice-console/lib/rng.js',
24
+ 'public/spice-console/lib/sha1.js',
25
+ 'public/spice-console/lib/encrypt.js',
26
+ 'public/spice-console/swcanvas/swcanvas.js',
27
+ 'public/spice-console/lib/bowser.js',
28
+ 'public/spice-console/lib/flipper.js',
29
+ 'public/spice-console/lib/CollisionDetector.js',
30
+ 'public/spice-console/lib/GlobalPool.js',
31
+ 'public/spice-console/lib/GenericObjectPool.js',
32
+ 'public/spice-console/lib/AsyncConsumer.js',
33
+ 'public/spice-console/lib/AsyncWorker.js',
34
+ 'public/spice-console/lib/PacketWorkerIdentifier.js',
35
+ 'public/spice-console/spiceobjects/spiceobjects.js',
36
+ 'public/spice-console/spiceobjects/generated/protocol.js',
37
+ 'public/spice-console/lib/graphicdebug.js',
38
+ 'public/spice-console/lib/images/lz.js',
39
+ 'public/spice-console/lib/images/bitmap.js',
40
+ 'public/spice-console/lib/images/png.js',
41
+ 'public/spice-console/lib/runqueue.js',
42
+ 'public/spice-console/lib/graphic.js',
43
+ 'public/spice-console/lib/queue.js',
44
+ 'public/spice-console/lib/ImageUncompressor.js',
45
+ 'public/spice-console/lib/SyncAsyncHandler.js',
46
+ 'public/spice-console/lib/IntegrationBenchmark.js',
47
+ 'public/spice-console/lib/stuckkeyshandler.js',
48
+ 'public/spice-console/lib/timelapsedetector.js',
49
+ 'public/spice-console/lib/displayRouter.js',
50
+ 'public/spice-console/lib/rasterEngine.js',
51
+ 'public/spice-console/lib/DataLogger.js',
52
+ 'public/spice-console/network/socket.js',
53
+ 'public/spice-console/network/clusternodechooser.js',
54
+ 'public/spice-console/network/socketqueue.js',
55
+ 'public/spice-console/network/packetcontroller.js',
56
+ 'public/spice-console/network/packetextractor.js',
57
+ 'public/spice-console/network/packetreassembler.js',
58
+ 'public/spice-console/network/reassemblerfactory.js',
59
+ 'public/spice-console/network/sizedefiner.js',
60
+ 'public/spice-console/network/packetlinkfactory.js',
61
+ 'public/spice-console/network/spicechannel.js',
62
+ 'public/spice-console/network/busconnection.js',
63
+ 'public/spice-console/network/websocketwrapper.js',
64
+ 'public/spice-console/network/connectioncontrol.js',
65
+ 'public/spice-console/application/checkActivity.js',
66
+ 'public/spice-console/application/agent.js',
67
+ 'public/spice-console/application/codec.js',
68
+ 'public/spice-console/application/clipboard.js',
69
+ 'public/spice-console/application/clipboard/clipboarddataparser.js',
70
+ 'public/spice-console/application/clipboard/local/localClipboard.js',
71
+ 'public/spice-console/application/spiceconnection.js',
72
+ 'public/spice-console/application/clientgui.js',
73
+ 'public/spice-console/application/packetprocess.js',
74
+ 'public/spice-console/application/packetfilter.js',
75
+ 'public/spice-console/application/packetfactory.js',
76
+ 'public/spice-console/application/application.js',
77
+ 'public/spice-console/application/virtualmouse.js',
78
+ 'public/spice-console/application/imagecache.js',
79
+ 'public/spice-console/application/rasteroperation.js',
80
+ 'public/spice-console/application/stream.js',
81
+ 'public/spice-console/application/inputmanager.js',
82
+ 'public/spice-console/process/busprocess.js',
83
+ 'public/spice-console/process/displayprocess.js',
84
+ 'public/spice-console/process/displaypreprocess.js',
85
+ 'public/spice-console/process/inputprocess.js',
86
+ 'public/spice-console/process/cursorprocess.js',
87
+ 'public/spice-console/process/playbackprocess.js',
88
+ 'public/spice-console/process/mainprocess.js',
89
+ 'public/spice-console/keymaps/keyevent.js',
90
+ 'public/spice-console/keymaps/keymapes.js',
91
+ 'public/spice-console/keymaps/scanCodeObjProvider.js',
92
+ 'public/spice-console/keymaps/scanCodeObjModifier.js',
93
+ 'public/spice-console/keymaps/keymapesObj.js',
94
+ 'public/spice-console/keymaps/keymapus.js',
95
+ 'public/spice-console/keymaps/keymap.js',
96
+ 'public/spice-console/run.js',
97
+ ]
98
+
99
+ // Папка и файл в которую вы хотите сохранить минифицированные файлы
100
+ const outputFolder = 'public/spice-console-minify'
101
+ const outputFile = `${outputFolder}/run.min.js`
102
+
103
+ // Создайте папку назначения, если она не существует
104
+ if (!fs.existsSync(outputFolder)) {
105
+ fs.mkdirSync(outputFolder, { recursive: true })
106
+ }
107
+
108
+ let index = 0
109
+ let runMinJsContent = ''
110
+ filesByOrder.forEach((filePath) => {
111
+ // Минифицируем
112
+ const fileContent = fs.readFileSync(filePath, 'utf8')
113
+ terser.minify(fileContent).then((minified) => {
114
+ if (minified.error) {
115
+ console.error(
116
+ `Ошибка при минификации файла ${filePath}: ${minified.error.message}`
117
+ )
118
+ } else {
119
+ runMinJsContent += minified.code.replaceAll(
120
+ 'spice-console/application/WorkerProcess.js',
121
+ 'spice-console-minify/WorkerProcess.min.js'
122
+ )
123
+ index++
124
+
125
+ // Если последний файл то все помещаем в run.min.js
126
+ if (filesByOrder.length === index)
127
+ fs.writeFileSync(outputFile, runMinJsContent)
128
+ }
129
+ })
130
+ })
131
+
132
+ // Обрабатываем Worker
133
+ const workerJs = 'public/spice-console/application/WorkerProcess.js'
134
+ const outputWorkerFile = `${outputFolder}/WorkerProcess.min.js`
135
+
136
+ // Минифицируем
137
+ const fileContent = fs.readFileSync(workerJs, 'utf8')
138
+ terser.minify(fileContent).then((minified) => {
139
+ if (minified.error) {
140
+ console.error(
141
+ `Ошибка при минификации файла ${workerJs}: ${minified.error.message}`
142
+ )
143
+ } else {
144
+ fs.writeFileSync(outputWorkerFile, minified.code)
145
+ }
146
+ })
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.3.227",
4
+ "version": "1.3.229",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",
package/plugins/binary.ts CHANGED
@@ -36,60 +36,58 @@ export default defineNuxtPlugin(() => {
36
36
  return +(tb * 1_024).toFixed(fix)
37
37
  }
38
38
 
39
- const sizeLabels:Record<string, { fromBytes: string[]; sizes: string[] }> = {
40
- en: {
41
- fromBytes: ['Bytes', 'KB'],
42
- sizes: ['MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
43
- },
44
- ru: {
45
- fromBytes: ['Байт', 'КБ'],
46
- sizes: ['МБ', 'ГБ', 'ТБ', 'ПБ', 'ЭБ', 'ЗБ', 'ИБ'],
47
- },
48
- }
39
+ const sizeLabels: Record<string, { fromBytes: string[]; sizes: string[] }> =
40
+ {
41
+ en: {
42
+ fromBytes: ['Bytes', 'KB'],
43
+ sizes: ['MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
44
+ },
45
+ ru: {
46
+ fromBytes: ['Байт', 'КБ'],
47
+ sizes: ['МБ', 'ГБ', 'ТБ', 'ПБ', 'ЭБ', 'ЗБ', 'ИБ'],
48
+ },
49
+ }
49
50
 
50
51
  self.round = function (mb: number, byte = false, language = 'en'): string {
51
52
  switch (language) {
52
53
  case 'ru':
53
- if (mb <= 0) return '0 Б';
54
- if (mb < 1) return `${mb} МБ`;
55
- break;
54
+ if (mb <= 0) return '0 Б'
55
+ if (mb < 1) return `${mb} МБ`
56
+ break
56
57
  default:
57
- if (mb <= 0) return '0 B';
58
- if (mb < 1) return `${mb} MB`;
59
- break;
58
+ if (mb <= 0) return '0 B'
59
+ if (mb < 1) return `${mb} MB`
60
+ break
60
61
  }
61
62
 
62
- const k = 1_024;
63
- let { fromBytes, sizes } = sizeLabels[language] || sizeLabels.en;
63
+ const k = 1_024
64
+ let { fromBytes, sizes } = sizeLabels[language] || sizeLabels.en
64
65
 
65
66
  if (byte) sizes = [...fromBytes, ...sizes]
66
67
 
67
- const i = Math.floor(Math.log(mb) / Math.log(k));
68
+ const i = Math.floor(Math.log(mb) / Math.log(k))
68
69
  const value =
69
- (mb / Math.pow(k, i))
70
- .toString()
71
- .match(/^-?\d+(?:\.\d{0,2})?/)?.[0] || '0';
72
-
73
- const sizeLabel = sizes[i];
74
- return parseFloat(value) + ' ' + sizeLabel;
75
- };
70
+ (mb / Math.pow(k, i)).toString().match(/^-?\d+(?:\.\d{0,2})?/)?.[0] ||
71
+ '0'
76
72
 
73
+ const sizeLabel = sizes[i]
74
+ return parseFloat(value) + ' ' + sizeLabel
75
+ }
77
76
 
78
- const hzLabels: {en: string[], ru: string[]} = {
77
+ const hzLabels: { en: string[]; ru: string[] } = {
79
78
  en: ['MHz', 'GHz', 'THz', 'PHz', 'EHz'],
80
79
  ru: ['МГц', 'ГГц', 'ТГц', 'ПГц', 'ИГц'],
81
- };
80
+ }
82
81
 
83
82
  self.roundHz = function (hz: number, lang = 'en') {
84
- if (hz <= 0) return `0 ${lang === 'en' ? 'Hz' : 'Гц'}`;
85
- const k = 1_000;
86
- const dm = 2;
87
- const size = lang === 'en' ? hzLabels.en : hzLabels.ru;
88
- const i = Math.floor(Math.log(hz) / Math.log(k));
89
- return parseFloat((hz / Math.pow(k, i)).toFixed(dm)) + ' ' + size[i];
83
+ if (hz <= 0) return `0 ${lang === 'en' ? 'Hz' : 'Гц'}`
84
+ const k = 1_000
85
+ const dm = 2
86
+ const size = lang === 'en' ? hzLabels.en : hzLabels.ru
87
+ const i = Math.floor(Math.log(hz) / Math.log(k))
88
+ return parseFloat((hz / Math.pow(k, i)).toFixed(dm)) + ' ' + size[i]
90
89
  }
91
90
 
92
-
93
91
  self.mhzToGhz = function (mhz: number, fix = 2): number {
94
92
  return +(mhz / 1_000).toFixed(fix)
95
93
  }
@@ -97,6 +95,19 @@ export default defineNuxtPlugin(() => {
97
95
  return +(mhz * 1_000).toFixed(fix)
98
96
  }
99
97
 
98
+ self.byteToStringIP = function (ip: number): string {
99
+ let d: number | string = ip % 256
100
+ for (let i: number = 3; i > 0; i--) {
101
+ ip = Math.floor(ip / 256)
102
+ d = (ip % 256) + '.' + d
103
+ }
104
+ return d as string
105
+ }
106
+ self.stringToByteIP = function (ip: string): number {
107
+ let d: string[] = ip.split('.')
108
+ return ((+d[0] * 256 + +d[1]) * 256 + +d[2]) * 256 + +d[3]
109
+ }
110
+
100
111
  self.universalFromTo = function (
101
112
  val: number,
102
113
  typeFrom: string,