@atmosx/event-product-parser 3.0.51 → 3.0.52

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 (139) hide show
  1. package/.vscode/settings.json +3 -3
  2. package/CODE_OF_CONDUCT.md +9 -9
  3. package/CONTRIBUTING.md +29 -29
  4. package/LICENSE +17 -17
  5. package/README.md +443 -444
  6. package/SECURITY.md +20 -20
  7. package/SUPPORTED_EVENTS.md +369 -368
  8. package/dist/cjs/index.cjs +161 -204
  9. package/dist/esm/index.mjs +160 -203
  10. package/package.json +52 -52
  11. package/src/@building/building.attachments.ts +82 -82
  12. package/src/@building/building.clean.ts +29 -29
  13. package/src/@building/building.create.ts +55 -55
  14. package/src/@building/building.enhance.ts +59 -59
  15. package/src/@building/building.geometry.ts +47 -47
  16. package/src/@building/building.headers.ts +36 -36
  17. package/src/@building/building.office.ts +42 -42
  18. package/src/@building/building.polygon.ts +69 -69
  19. package/src/@building/building.properties.ts +95 -95
  20. package/src/@building/building.signature.ts +60 -60
  21. package/src/@building/building.tags.ts +23 -23
  22. package/src/@building/building.tracking.ts +67 -67
  23. package/src/@building/building.validate.ts +152 -151
  24. package/src/@core/core.clearEvents.ts +30 -30
  25. package/src/@core/core.createListener.ts +23 -23
  26. package/src/@core/core.getEvents.ts +23 -23
  27. package/src/@core/core.getNodes.ts +23 -23
  28. package/src/@core/core.getRandomEvent.ts +23 -23
  29. package/src/@core/core.getVersion.ts +23 -23
  30. package/src/@core/core.manualEvent.ts +38 -0
  31. package/src/@core/core.query.ts +38 -38
  32. package/src/@core/core.setNode.ts +80 -80
  33. package/src/@core/core.start.ts +60 -60
  34. package/src/@core/core.stop.ts +31 -31
  35. package/src/@dictionaries/dictionaries.actions.ts +27 -27
  36. package/src/@dictionaries/dictionaries.awips.ts +363 -363
  37. package/src/@dictionaries/dictionaries.cancellation.ts +30 -30
  38. package/src/@dictionaries/dictionaries.causes.ts +35 -35
  39. package/src/@dictionaries/dictionaries.correlations.ts +42 -42
  40. package/src/@dictionaries/dictionaries.enhanced.ts +66 -109
  41. package/src/@dictionaries/dictionaries.events.ts +82 -82
  42. package/src/@dictionaries/dictionaries.expressions.ts +28 -28
  43. package/src/@dictionaries/dictionaries.global.ts +24 -0
  44. package/src/@dictionaries/dictionaries.hail.ts +35 -35
  45. package/src/@dictionaries/dictionaries.icao.ts +258 -258
  46. package/src/@dictionaries/dictionaries.matches.ts +54 -35
  47. package/src/@dictionaries/dictionaries.products.ts +24 -24
  48. package/src/@dictionaries/dictionaries.records.ts +25 -25
  49. package/src/@dictionaries/dictionaries.severity.ts +27 -27
  50. package/src/@dictionaries/dictionaries.shapefiles.ts +35 -35
  51. package/src/@dictionaries/dictionaries.states.ts +71 -71
  52. package/src/@dictionaries/dictionaries.status.ts +30 -30
  53. package/src/@dictionaries/dictionaries.tags.ts +92 -92
  54. package/src/@dictionaries/dictionaries.testing.ts +24 -24
  55. package/src/@events/events.api.ts +116 -116
  56. package/src/@events/events.text.ts +84 -80
  57. package/src/@events/events.ugc.ts +89 -85
  58. package/src/@events/events.vtec.ts +86 -86
  59. package/src/@manager/manager.mkEvent.ts +97 -93
  60. package/src/@manager/manager.rmEvent.ts +56 -51
  61. package/src/@manager/manager.setHash.ts +35 -35
  62. package/src/@manager/manager.updateEvents.ts +32 -32
  63. package/src/@manager/manager.updateListener.ts +154 -154
  64. package/src/@manager/manager.updateNodes.ts +53 -53
  65. package/src/@modules/@database/database.broadcastify.ts +66 -66
  66. package/src/@modules/@database/database.cache.ts +49 -49
  67. package/src/@modules/@database/database.init.ts +58 -58
  68. package/src/@modules/@database/database.shapefiles.ts +92 -92
  69. package/src/@modules/@database/database.stanza.ts +46 -46
  70. package/src/@modules/@eas/eas.getCleanDescription.ts +91 -91
  71. package/src/@modules/@eas/eas.getFloatPCM16.ts +29 -29
  72. package/src/@modules/@eas/eas.getMergedPCM16.ts +32 -32
  73. package/src/@modules/@eas/eas.getPCM16.ts +52 -52
  74. package/src/@modules/@eas/eas.getPCMToFloat.ts +26 -26
  75. package/src/@modules/@eas/eas.getSampledPCM16.ts +36 -36
  76. package/src/@modules/@eas/eas.getTTS.ts +54 -54
  77. package/src/@modules/@eas/eas.getWavPCM16.ts +52 -52
  78. package/src/@modules/@eas/eas.setAFSK.ts +51 -51
  79. package/src/@modules/@eas/eas.setAsciiToBits.ts +31 -31
  80. package/src/@modules/@eas/eas.setAttentionTone.ts +40 -40
  81. package/src/@modules/@eas/eas.setEasTone.ts +151 -151
  82. package/src/@modules/@eas/eas.setNoise.ts +32 -32
  83. package/src/@modules/@eas/eas.setRadioEffect.ts +50 -50
  84. package/src/@modules/@eas/eas.setSameHeader.ts +44 -44
  85. package/src/@modules/@stanza/stanza.getAwipsType.ts +45 -45
  86. package/src/@modules/@stanza/stanza.validate.ts +49 -49
  87. package/src/@modules/@utilities/utilities.createHttp.ts +70 -70
  88. package/src/@modules/@utilities/utilities.getFormattedTime.ts +43 -43
  89. package/src/@modules/@utilities/utilities.getLatestIssuance.ts +32 -32
  90. package/src/@modules/@utilities/utilities.getMatched.ts +33 -33
  91. package/src/@modules/@utilities/utilities.getSettings.ts +25 -25
  92. package/src/@modules/@utilities/utilities.getShapeNearestPoint.ts +114 -114
  93. package/src/@modules/@utilities/utilities.setCronSchedule.ts +94 -94
  94. package/src/@modules/@utilities/utilities.setDebug.ts +38 -38
  95. package/src/@modules/@utilities/utilities.setEventEmit.ts +41 -41
  96. package/src/@modules/@utilities/utilities.setListener.ts +30 -30
  97. package/src/@modules/@utilities/utilities.setSettings.ts +42 -42
  98. package/src/@modules/@utilities/utilities.setSleep.ts +33 -33
  99. package/src/@modules/@utilities/utilities.setTimeoutAction.ts +62 -62
  100. package/src/@modules/@utilities/utilities.setWarning.ts +34 -34
  101. package/src/@modules/@xmpp/xmpp.xDeploy.ts +57 -57
  102. package/src/@modules/@xmpp/xmpp.xError.ts +26 -26
  103. package/src/@modules/@xmpp/xmpp.xOffline.ts +36 -36
  104. package/src/@modules/@xmpp/xmpp.xOnline.ts +45 -44
  105. package/src/@modules/@xmpp/xmpp.xReconnect.ts +64 -64
  106. package/src/@modules/@xmpp/xmpp.xStanza.ts +62 -62
  107. package/src/@parsers/@hvtec/hvtec.extract.ts +39 -39
  108. package/src/@parsers/@pvtec/pvtec.expires.ts +25 -25
  109. package/src/@parsers/@pvtec/pvtec.extract.ts +48 -48
  110. package/src/@parsers/@text/text.getDescriptionFromProduct.ts +52 -52
  111. package/src/@parsers/@text/text.getEmbed.ts +55 -55
  112. package/src/@parsers/@text/text.getPolygonFromProduct.ts +53 -32
  113. package/src/@parsers/@text/text.getTextFromProduct.ts +42 -42
  114. package/src/@parsers/@text/text.getXML.ts +60 -60
  115. package/src/@parsers/@ugc/ugc.coordinates.ts +110 -110
  116. package/src/@parsers/@ugc/ugc.expiry.ts +31 -31
  117. package/src/@parsers/@ugc/ugc.extract.ts +36 -36
  118. package/src/@parsers/@ugc/ugc.getCache.ts +23 -23
  119. package/src/@parsers/@ugc/ugc.header.ts +29 -29
  120. package/src/@parsers/@ugc/ugc.locations.ts +56 -56
  121. package/src/@parsers/@ugc/ugc.setCache.ts +27 -27
  122. package/src/@parsers/@ugc/ugc.zones.ts +51 -51
  123. package/src/@types/type.attributes.ts +28 -28
  124. package/src/@types/type.compiled.ts +34 -34
  125. package/src/@types/type.event.ts +69 -69
  126. package/src/@types/type.hash.ts +24 -24
  127. package/src/@types/type.hvtec.ts +25 -25
  128. package/src/@types/type.listener.ts +32 -32
  129. package/src/@types/type.properties.ts +77 -77
  130. package/src/@types/type.pvtec.ts +30 -30
  131. package/src/@types/type.settings.ts +84 -84
  132. package/src/@types/type.stanza.ts +37 -37
  133. package/src/@types/type.ugc.ts +24 -24
  134. package/src/bootstrap.ts +115 -115
  135. package/src/index.ts +74 -74
  136. package/test.js +92 -92
  137. package/tsconfig.json +13 -13
  138. package/tsup.config.ts +15 -15
  139. package/src/@core/core.createEvent.ts +0 -82
package/src/bootstrap.ts CHANGED
@@ -1,115 +1,115 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
- */
19
-
20
- import path from 'path'
21
- import { EventEmitter } from 'node:events';
22
-
23
- export const bootstrap = {
24
- version: `3.0.51`,
25
- isReady: true,
26
- ratelimits: {},
27
- session_xmpp: null,
28
- database: null,
29
- cron: null,
30
- listener: new EventEmitter(),
31
- ansi_colors: {
32
- RED: `\x1b[31m`, GREEN: `\x1b[32m`, YELLOW: `\x1b[33m`,
33
- BLUE: `\x1b[34m`, MAGENTA: `\x1b[35m`, CYAN: `\x1b[36m`,
34
- WHITE: `\x1b[37m`, RESET: `\x1b[0m`
35
- },
36
- cache: {
37
- lastStanza: null,
38
- isConnected: false,
39
- isReconnecting: false,
40
- tReconnects: 0,
41
- sigHault: false,
42
- events: {type: "FeatureCollection", features: []},
43
- nodes: {type: "FeatureCollection", features: []},
44
- hashes: [],
45
- processed: [],
46
- ugc: new Map<string, string[]>()
47
- },
48
- settings: {
49
- Database: path.join(process.cwd(), 'shapefiles.db'),
50
- EnableWireService: true,
51
- EnableDebugging: false,
52
- EnableJournal: true,
53
- NOAAWeatherWireServiceSettings: {
54
- ReconnectionSettings: {
55
- Enabled: true,
56
- ReconnectionInterval: 60,
57
- },
58
- CredentialSettings: {
59
- Username: null,
60
- Password: null,
61
- Nickname: "@atmosx/event-product-parser/3.0",
62
- },
63
- CacheSettings: {
64
- Enabled: true,
65
- MaxDatabaseHistory: 5000,
66
- MaxRetentionHistory: 1000,
67
- },
68
- StanzaSettings: {
69
- DisableUGC: false,
70
- DisableVTEC: false,
71
- DisableText: false,
72
- }
73
- },
74
- NationalWeatherServiceSettings: {
75
- CallbackInterval: 15,
76
- EventsEndpoint: `https://api.weather.gov/alerts/active`,
77
- },
78
- BroadcastifySettings: {
79
- BroadcastifyAttachments: true,
80
- BroadcastifyDatabase: `https://scriptkitty.cafe/ftp/@atmosphericx/assets/broadcastify.json`,
81
- BroadcastifyTags: [`Ham`, `Air`, `Fire`, `Public Safety`, `Weather`, `EMS`, `Police`, `Rail`]
82
- },
83
- ListenerSettings: [],
84
- GlobalSettings: {
85
- EventManagement: true,
86
- BetterEventNames: true,
87
- DisableGeometryParsing: false,
88
- UseShapefileCoordinates: false,
89
- SPCWatchesOnly: true,
90
- ShapefileSkipPoints: 15,
91
- NodeTTL: 60,
92
- NodeMinDistance: 120,
93
- EventFiltering: {
94
- ListeningEvents: [],
95
- ListeningICAO: [],
96
- ListeningUGC: [],
97
- ListeningStates: [],
98
- IgnoredICAO: [],
99
- IgnoredEvents: [`Test Message`],
100
- NodeLocationFiltering: false,
101
- IgnoreTestProducts: true,
102
- },
103
- ArchiveSettings: {
104
- TTL: 60,
105
- EventDirectory: null,
106
- TextDirectory: null,
107
- EasDirectory: null,
108
- EasToneout: null
109
- }
110
- }
111
- },
112
- }
113
-
114
-
115
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+ */
19
+
20
+ import path from 'path'
21
+ import { EventEmitter } from 'node:events';
22
+
23
+ export const bootstrap = {
24
+ version: `3.0.52`,
25
+ isReady: true,
26
+ ratelimits: {},
27
+ session_xmpp: null,
28
+ database: null,
29
+ cron: null,
30
+ listener: new EventEmitter(),
31
+ ansi_colors: {
32
+ RED: `\x1b[31m`, GREEN: `\x1b[32m`, YELLOW: `\x1b[33m`,
33
+ BLUE: `\x1b[34m`, MAGENTA: `\x1b[35m`, CYAN: `\x1b[36m`,
34
+ WHITE: `\x1b[37m`, RESET: `\x1b[0m`
35
+ },
36
+ cache: {
37
+ lastStanza: null,
38
+ isConnected: false,
39
+ isReconnecting: false,
40
+ tReconnects: 0,
41
+ sigHault: false,
42
+ events: {type: "FeatureCollection", features: []},
43
+ nodes: {type: "FeatureCollection", features: []},
44
+ hashes: [],
45
+ processed: [],
46
+ ugc: new Map<string, string[]>()
47
+ },
48
+ settings: {
49
+ Database: path.join(process.cwd(), 'shapefiles.db'),
50
+ EnableWireService: false,
51
+ EnableDebugging: false,
52
+ EnableJournal: true,
53
+ NOAAWeatherWireServiceSettings: {
54
+ ReconnectionSettings: {
55
+ Enabled: true,
56
+ ReconnectionInterval: 60,
57
+ },
58
+ CredentialSettings: {
59
+ Username: null,
60
+ Password: null,
61
+ Nickname: "@atmosx/event-product-parser/3.0",
62
+ },
63
+ CacheSettings: {
64
+ Enabled: true,
65
+ MaxDatabaseHistory: 5000,
66
+ MaxRetentionHistory: 1000,
67
+ },
68
+ StanzaSettings: {
69
+ DisableUGC: false,
70
+ DisableVTEC: false,
71
+ DisableText: false,
72
+ }
73
+ },
74
+ NationalWeatherServiceSettings: {
75
+ CallbackInterval: 15,
76
+ EventsEndpoint: `https://api.weather.gov/alerts/active`,
77
+ },
78
+ BroadcastifySettings: {
79
+ BroadcastifyAttachments: true,
80
+ BroadcastifyDatabase: `https://scriptkitty.cafe/ftp/@atmosphericx/assets/broadcastify.json`,
81
+ BroadcastifyTags: [`Ham`, `Air`, `Fire`, `Public Safety`, `Weather`, `EMS`, `Police`, `Rail`]
82
+ },
83
+ ListenerSettings: [],
84
+ GlobalSettings: {
85
+ EventManagement: true,
86
+ BetterEventNames: true,
87
+ DisableGeometryParsing: false,
88
+ UseShapefileCoordinates: true,
89
+ SPCWatchesOnly: true,
90
+ ShapefileSkipPoints: 15,
91
+ NodeTTL: 60,
92
+ NodeMinDistance: 120,
93
+ EventFiltering: {
94
+ ListeningEvents: [],
95
+ ListeningICAO: [],
96
+ ListeningUGC: [],
97
+ ListeningStates: [],
98
+ IgnoredICAO: [],
99
+ IgnoredEvents: [`Test Message`],
100
+ NodeLocationFiltering: false,
101
+ IgnoreTestProducts: true,
102
+ },
103
+ ArchiveSettings: {
104
+ TTL: 60,
105
+ EventDirectory: null,
106
+ TextDirectory: null,
107
+ EasDirectory: null,
108
+ EasToneout: null
109
+ }
110
+ }
111
+ },
112
+ }
113
+
114
+
115
+
package/src/index.ts CHANGED
@@ -1,74 +1,74 @@
1
- /*
2
- _ _ _ __ __
3
- /\ | | | | (_) \ \ / /
4
- / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
- / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
- / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
- /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
- | |
9
- |_|
10
-
11
- Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
- Discord: https://atmosphericx-discord.scriptkitty.cafe
13
- Ko-Fi: https://ko-fi.com/k3yomi
14
- Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
-
16
- Internal Package: @atmosx/event-product-parser
17
-
18
- */
19
-
20
- import { TypeSettings } from './@types/type.settings'
21
- import { setSettings } from "./@modules/@utilities/utilities.setSettings"
22
- import { getEventGeometry } from "./@building/building.geometry";
23
- import { getCleanedEvent } from "./@building/building.clean"
24
- import { setEventEmit } from './@modules/@utilities/utilities.setEventEmit';
25
- import { setWarning } from './@modules/@utilities/utilities.setWarning';
26
- import { createListener } from "./@core/core.createListener"
27
- import { startService } from "./@core/core.start"
28
- import { stopService } from "./@core/core.stop"
29
- import { setEasTone } from './@modules/@eas/eas.setEasTone';
30
- import { setNode } from "./@core/core.setNode"
31
- import { getEvents } from "./@core/core.getEvents"
32
- import { getNodes } from "./@core/core.getNodes"
33
- import { createEvent } from "./@core/core.createEvent"
34
- import { getRandomEvent } from './@core/core.getRandomEvent';
35
- import { query } from './@core/core.query';
36
- import { clearEvents } from './@core/core.clearEvents';
37
-
38
- export class Manager {
39
- constructor(settings: TypeSettings) { this.trycatch(); startService(settings) }
40
-
41
- on(event: string, callback: () => void) {
42
- createListener(event, callback)
43
- }
44
-
45
- trycatch() {
46
- process.on('uncaughtException', (err: any) => {
47
- const ignored = ['ETIMEDOUT', 'ECONNRESET', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNREFUSED', 'EPIPE', 'EADDRINUSE', 'EALREADY', 'EACCES', 'EAGAIN', 'EHOSTDOWN', 'STARTTLS_FAILURE'];
48
- if (ignored.includes(err?.code)) {
49
- setEventEmit({
50
- event: `onServiceStatus`,
51
- metadata: {
52
- message: `Ignored Critical Error: ${err?.code ?? 'Unknown error code'}. This may indicate a connection issue. Attempting to continue...`,
53
- data: {},
54
- type: `error`,
55
- error: true
56
- }
57
- })
58
- return;
59
- }
60
- setWarning({message: `Uncaught Exception: ${err instanceof Error ? err.stack ?? err.message : String(err)}`})
61
- })
62
- }
63
- }
64
-
65
- export default Manager;
66
- export type { TypeEvent } from './@types/type.event';
67
- export {
68
- setSettings, getEventGeometry, createEvent,
69
- getCleanedEvent, stopService, clearEvents,
70
- startService, setNode, getRandomEvent,
71
- getEvents, getNodes, setEasTone, query
72
- }
73
-
74
-
1
+ /*
2
+ _ _ _ __ __
3
+ /\ | | | | (_) \ \ / /
4
+ / \ | |_ _ __ ___ ___ ___ _ __ | |__ ___ _ __ _ ___ \ V /
5
+ / /\ \| __| '_ ` _ \ / _ \/ __| '_ \| '_ \ / _ \ '__| |/ __| > <
6
+ / ____ \ |_| | | | | | (_) \__ \ |_) | | | | __/ | | | (__ / . \
7
+ /_/ \_\__|_| |_| |_|\___/|___/ .__/|_| |_|\___|_| |_|\___/_/ \_\
8
+ | |
9
+ |_|
10
+
11
+ Created with ♥ by the AtmosphericX Team (KiyoWx, StarflightWx, & CJ Ziegler)
12
+ Discord: https://atmosphericx-discord.scriptkitty.cafe
13
+ Ko-Fi: https://ko-fi.com/k3yomi
14
+ Documentation: http://localhost/documentation | https://atmosphericx.scriptkitty.cafe/documentation
15
+
16
+ Internal Package: @atmosx/event-product-parser
17
+
18
+ */
19
+
20
+ import { TypeSettings } from './@types/type.settings'
21
+ import { setSettings } from "./@modules/@utilities/utilities.setSettings"
22
+ import { getEventGeometry } from "./@building/building.geometry";
23
+ import { getCleanedEvent } from "./@building/building.clean"
24
+ import { setEventEmit } from './@modules/@utilities/utilities.setEventEmit';
25
+ import { setWarning } from './@modules/@utilities/utilities.setWarning';
26
+ import { createListener } from "./@core/core.createListener"
27
+ import { startService } from "./@core/core.start"
28
+ import { stopService } from "./@core/core.stop"
29
+ import { setEasTone } from './@modules/@eas/eas.setEasTone';
30
+ import { setNode } from "./@core/core.setNode"
31
+ import { getEvents } from "./@core/core.getEvents"
32
+ import { getNodes } from "./@core/core.getNodes"
33
+ import { manualEvent } from "./@core/core.manualEvent"
34
+ import { getRandomEvent } from './@core/core.getRandomEvent';
35
+ import { query } from './@core/core.query';
36
+ import { clearEvents } from './@core/core.clearEvents';
37
+
38
+ export class Manager {
39
+ constructor(settings: TypeSettings) { this.trycatch(); startService(settings) }
40
+
41
+ on(event: string, callback: () => void) {
42
+ createListener(event, callback)
43
+ }
44
+
45
+ trycatch() {
46
+ process.on('uncaughtException', (err: any) => {
47
+ const ignored = ['ETIMEDOUT', 'ECONNRESET', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNREFUSED', 'EPIPE', 'EADDRINUSE', 'EALREADY', 'EACCES', 'EAGAIN', 'EHOSTDOWN', 'STARTTLS_FAILURE'];
48
+ if (ignored.includes(err?.code)) {
49
+ setEventEmit({
50
+ event: `onServiceStatus`,
51
+ metadata: {
52
+ message: `Ignored Critical Error: ${err?.code ?? 'Unknown error code'}. This may indicate a connection issue. Attempting to continue...`,
53
+ data: {},
54
+ type: `error`,
55
+ error: true
56
+ }
57
+ })
58
+ return;
59
+ }
60
+ setWarning({message: `Uncaught Exception: ${err instanceof Error ? err.stack ?? err.message : String(err)}`})
61
+ })
62
+ }
63
+ }
64
+
65
+ export default Manager;
66
+ export type { TypeEvent } from './@types/type.event';
67
+ export {
68
+ setSettings, getEventGeometry, manualEvent,
69
+ getCleanedEvent, stopService, clearEvents,
70
+ startService, setNode, getRandomEvent,
71
+ getEvents, getNodes, setEasTone, query
72
+ }
73
+
74
+
package/test.js CHANGED
@@ -1,93 +1,93 @@
1
- const { Manager } = require(`../dist/cjs/index.cjs`)
2
-
3
- const Client = new Manager({
4
- Database: `shapefiles.db`,
5
- EnableWireService: false,
6
- EnableJournal: true,
7
- EnableDebugging: false,
8
- NOAAWeatherWireServiceSettings: {
9
- ReconnectionSettings: {
10
- Enabled: true,
11
- ReconnectionInterval: 60,
12
- },
13
- CredentialSettings: {
14
- Username: `username`,
15
- Password: `password`,
16
- Nickname: "nickname (@atmosx/event-product-parser/3.0)",
17
- },
18
- CacheSettings: {
19
- Enabled: true,
20
- MaxDatabaseHistory: 5000,
21
- MaxRetentionHistory: 555,
22
- },
23
- StanzaSettings: {
24
- DisableUGC: false,
25
- DisableVTEC: false,
26
- DisableText: false,
27
- }
28
- },
29
- NationalWeatherServiceSettings: {
30
- CallbackInterval: 30,
31
- EventsEndpoint: `https://api.weather.gov/alerts/active`,
32
- },
33
- BroadcastifySettings: {
34
- BroadcastifyAttachments: true,
35
- BroadcastifyTags: [`Public Safety`, `Amateur Radio`, `Other`, `Rail`, `Aviation`, `Marine`, `Disaster Event`, `Special Event`]
36
- },
37
- ListenerSettings: [
38
- {
39
- events: [`*Thunderstorm Warning*`, `* Watch`],
40
- webhook: {
41
- enabled: true,
42
- destination: "https://discord.com/api/XXXXXXXXXX/XXXXXXXXXXX",
43
- title: "AtmosphericX - (Thunderstorm Warnings and Watches)",
44
- message: "<@&XXXXXXXXXXXXXXXXXXXXX>",
45
- ratelimit: 1
46
- },
47
- uploads: {
48
- eas: true,
49
- file: true,
50
- event: true
51
- }
52
- }
53
- ],
54
- GlobalSettings: {
55
- EventManagement: true,
56
- BetterEventNames: true,
57
- DisableGeometryParsing: false,
58
- UseShapefileCoordinates: true,
59
- SPCWatchesOnly: true,
60
- ShapefileSkipPoints: 0,
61
- NodeTTL: 60,
62
- NodeMinDistance: 120,
63
- EventFiltering: {
64
- ListeningEvents: [
65
- "*Severe Thunderstorm Warning*",
66
- "*Blizzard*", "*Ice Storm*", "*Winter Storm*", "*Snow Squall*",
67
- "Tornado Emergency", "*Tornado Warning*",
68
- "Special Weather Statement", "Marine Weather Statement",
69
- "*Tsunami*", "*Hurricane*", "*Tropical Storm*", "*Special Marine*",
70
- "*Flash Flood Warning*", "*Flash Flood Watch*", "*Flash Flood Advisory*",
71
- "Mesoscale Discussion",
72
- "SPC Day 1 Outlook", "SPC Day 2 Outlook", "SPC Day 3 Outlook",
73
- "PDS Tornado Watch", "Tornado Watch", "Severe Thunderstorm Watch", "Flash Flood Watch", "PDS Severe Thunderstorm Watch",
74
- "*Administrative*", "National Weather Service Policy",
75
- "Fire Weather Warning", "Fire Weather Watch", "Fire Weather Advisory",
76
- ],
77
- ListeningICAO: [`KLOT`],
78
- IgnoredICAO: [],
79
- IgnoredEvents: [],
80
- ListeningUGC: [`WIC001`],
81
- ListeningStates: [`MO`, `IA`],
82
- NodeLocationFiltering: false,
83
- IgnoreTestProducts: true,
84
- },
85
- ArchiveSettings: {
86
- TTL: 600,
87
- EventDirectory: `Storage/EventProducts`,
88
- TextDirectory: `Storage/TextProducts`,
89
- EasDirectory: `Storage/EasScenarios`,
90
- EasToneout: `tone.wav`,
91
- }
92
- }
1
+ const { Manager } = require(`../dist/cjs/index.cjs`)
2
+
3
+ const Client = new Manager({
4
+ Database: `shapefiles.db`,
5
+ EnableWireService: false,
6
+ EnableJournal: true,
7
+ EnableDebugging: false,
8
+ NOAAWeatherWireServiceSettings: {
9
+ ReconnectionSettings: {
10
+ Enabled: true,
11
+ ReconnectionInterval: 60,
12
+ },
13
+ CredentialSettings: {
14
+ Username: `username`,
15
+ Password: `password`,
16
+ Nickname: "nickname (@atmosx/event-product-parser/3.0)",
17
+ },
18
+ CacheSettings: {
19
+ Enabled: true,
20
+ MaxDatabaseHistory: 5000,
21
+ MaxRetentionHistory: 555,
22
+ },
23
+ StanzaSettings: {
24
+ DisableUGC: false,
25
+ DisableVTEC: false,
26
+ DisableText: false,
27
+ }
28
+ },
29
+ NationalWeatherServiceSettings: {
30
+ CallbackInterval: 30,
31
+ EventsEndpoint: `https://api.weather.gov/alerts/active`,
32
+ },
33
+ BroadcastifySettings: {
34
+ BroadcastifyAttachments: true,
35
+ BroadcastifyTags: [`Public Safety`, `Amateur Radio`, `Other`, `Rail`, `Aviation`, `Marine`, `Disaster Event`, `Special Event`]
36
+ },
37
+ ListenerSettings: [
38
+ {
39
+ events: [`*Thunderstorm Warning*`, `* Watch`],
40
+ webhook: {
41
+ enabled: true,
42
+ destination: "https://discord.com/api/XXXXXXXXXX/XXXXXXXXXXX",
43
+ title: "AtmosphericX - (Thunderstorm Warnings and Watches)",
44
+ message: "<@&XXXXXXXXXXXXXXXXXXXXX>",
45
+ ratelimit: 1
46
+ },
47
+ uploads: {
48
+ eas: true,
49
+ file: true,
50
+ event: true
51
+ }
52
+ }
53
+ ],
54
+ GlobalSettings: {
55
+ EventManagement: true,
56
+ BetterEventNames: true,
57
+ DisableGeometryParsing: false,
58
+ UseShapefileCoordinates: true,
59
+ SPCWatchesOnly: true,
60
+ ShapefileSkipPoints: 0,
61
+ NodeTTL: 60,
62
+ NodeMinDistance: 120,
63
+ EventFiltering: {
64
+ ListeningEvents: [
65
+ "*Severe Thunderstorm Warning*",
66
+ "*Blizzard*", "*Ice Storm*", "*Winter Storm*", "*Snow Squall*",
67
+ "Tornado Emergency", "*Tornado Warning*",
68
+ "Special Weather Statement", "Marine Weather Statement",
69
+ "*Tsunami*", "*Hurricane*", "*Tropical Storm*", "*Special Marine*",
70
+ "*Flash Flood Warning*", "*Flash Flood Watch*", "*Flash Flood Advisory*",
71
+ "Mesoscale Discussion",
72
+ "SPC Day 1 Outlook", "SPC Day 2 Outlook", "SPC Day 3 Outlook",
73
+ "PDS Tornado Watch", "Tornado Watch", "Severe Thunderstorm Watch", "Flash Flood Watch", "PDS Severe Thunderstorm Watch",
74
+ "*Administrative*", "National Weather Service Policy",
75
+ "Fire Weather Warning", "Fire Weather Watch", "Fire Weather Advisory",
76
+ ],
77
+ ListeningICAO: [`KLOT`],
78
+ IgnoredICAO: [],
79
+ IgnoredEvents: [],
80
+ ListeningUGC: [`WIC001`],
81
+ ListeningStates: [`MO`, `IA`],
82
+ NodeLocationFiltering: false,
83
+ IgnoreTestProducts: true,
84
+ },
85
+ ArchiveSettings: {
86
+ TTL: 600,
87
+ EventDirectory: `Storage/EventProducts`,
88
+ TextDirectory: `Storage/TextProducts`,
89
+ EasDirectory: `Storage/EasScenarios`,
90
+ EasToneout: `tone.wav`,
91
+ }
92
+ }
93
93
  })
package/tsconfig.json CHANGED
@@ -1,14 +1,14 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES6",
4
- "module": "ESNext",
5
- "moduleResolution": "Node",
6
- "outDir": "dist",
7
- "declaration": true,
8
- "declarationDir": "dist/types",
9
- "esModuleInterop": true,
10
- "allowSyntheticDefaultImports": true,
11
- "skipLibCheck": true
12
- },
13
- "include": ["src"]
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES6",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Node",
6
+ "outDir": "dist",
7
+ "declaration": true,
8
+ "declarationDir": "dist/types",
9
+ "esModuleInterop": true,
10
+ "allowSyntheticDefaultImports": true,
11
+ "skipLibCheck": true
12
+ },
13
+ "include": ["src"]
14
14
  }
package/tsup.config.ts CHANGED
@@ -1,16 +1,16 @@
1
- import { defineConfig } from 'tsup'
2
-
3
- export default defineConfig({
4
- entry: ['src/index.ts'],
5
- outDir: 'dist',
6
- format: ['esm', 'cjs'],
7
- dts: false,
8
- noExternal: ["@xmpp/client", "@xmpp/sasl", "@xmpp/sasl-plain"],
9
- clean: true,
10
- outExtension({ format }) {
11
- return { js: format === 'esm' ? '.mjs' : '.cjs' }
12
- },
13
- esbuildOptions(options, context) {
14
- options.outdir = `dist/${context.format}`
15
- },
1
+ import { defineConfig } from 'tsup'
2
+
3
+ export default defineConfig({
4
+ entry: ['src/index.ts'],
5
+ outDir: 'dist',
6
+ format: ['esm', 'cjs'],
7
+ dts: false,
8
+ noExternal: ["@xmpp/client", "@xmpp/sasl", "@xmpp/sasl-plain"],
9
+ clean: true,
10
+ outExtension({ format }) {
11
+ return { js: format === 'esm' ? '.mjs' : '.cjs' }
12
+ },
13
+ esbuildOptions(options, context) {
14
+ options.outdir = `dist/${context.format}`
15
+ },
16
16
  })