@atmosx/event-product-parser 3.0.51 → 3.0.53

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 (140) hide show
  1. package/{CODE_OF_CONDUCT.md → .github/CODE_OF_CONDUCT.md} +9 -9
  2. package/{CONTRIBUTING.md → .github/CONTRIBUTING.md} +29 -29
  3. package/{LICENSE → .github/LICENSE} +17 -17
  4. package/{README.md → .github/README.md} +466 -444
  5. package/{SECURITY.md → .github/SECURITY.md} +20 -20
  6. package/{SUPPORTED_EVENTS.md → .github/SUPPORTED_EVENTS.md} +369 -368
  7. package/.vscode/settings.json +3 -3
  8. package/dist/cjs/index.cjs +243 -213
  9. package/dist/esm/index.mjs +242 -212
  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 +179 -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 +83 -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.getRaw.ts +54 -0
  114. package/src/@parsers/@text/text.getTextFromProduct.ts +42 -42
  115. package/src/@parsers/@text/text.getXML.ts +60 -60
  116. package/src/@parsers/@ugc/ugc.coordinates.ts +110 -110
  117. package/src/@parsers/@ugc/ugc.expiry.ts +31 -31
  118. package/src/@parsers/@ugc/ugc.extract.ts +36 -36
  119. package/src/@parsers/@ugc/ugc.getCache.ts +23 -23
  120. package/src/@parsers/@ugc/ugc.header.ts +29 -29
  121. package/src/@parsers/@ugc/ugc.locations.ts +56 -56
  122. package/src/@parsers/@ugc/ugc.setCache.ts +27 -27
  123. package/src/@parsers/@ugc/ugc.zones.ts +51 -51
  124. package/src/@types/type.attributes.ts +28 -28
  125. package/src/@types/type.compiled.ts +34 -34
  126. package/src/@types/type.event.ts +69 -69
  127. package/src/@types/type.hash.ts +24 -24
  128. package/src/@types/type.hvtec.ts +25 -25
  129. package/src/@types/type.listener.ts +37 -32
  130. package/src/@types/type.properties.ts +77 -77
  131. package/src/@types/type.pvtec.ts +30 -30
  132. package/src/@types/type.settings.ts +93 -84
  133. package/src/@types/type.stanza.ts +37 -37
  134. package/src/@types/type.ugc.ts +24 -24
  135. package/src/bootstrap.ts +124 -115
  136. package/src/index.ts +74 -74
  137. package/{test.js → testing/init.js} +105 -92
  138. package/tsconfig.json +13 -13
  139. package/tsup.config.ts +15 -15
  140. package/src/@core/core.createEvent.ts +0 -82
package/src/bootstrap.ts CHANGED
@@ -1,115 +1,124 @@
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.53`,
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
+ NotifyServer: {
84
+ Enabled: false,
85
+ Server: `https://ntfy.sh`,
86
+ Attachments: null,
87
+ Credentials: {
88
+ Username: null,
89
+ Password: null
90
+ }
91
+ },
92
+ ListenerSettings: [],
93
+ GlobalSettings: {
94
+ EventManagement: true,
95
+ BetterEventNames: true,
96
+ DisableGeometryParsing: false,
97
+ UseShapefileCoordinates: true,
98
+ SPCWatchesOnly: true,
99
+ ShapefileSkipPoints: 15,
100
+ NodeTTL: 60,
101
+ NodeMinDistance: 120,
102
+ EventFiltering: {
103
+ ListeningEvents: [],
104
+ ListeningICAO: [],
105
+ ListeningUGC: [],
106
+ ListeningStates: [],
107
+ IgnoredICAO: [],
108
+ IgnoredEvents: [`Test Message`],
109
+ NodeLocationFiltering: false,
110
+ IgnoreTestProducts: true,
111
+ },
112
+ ArchiveSettings: {
113
+ TTL: 60,
114
+ EventDirectory: null,
115
+ TextDirectory: null,
116
+ EasDirectory: null,
117
+ EasToneout: null
118
+ }
119
+ }
120
+ },
121
+ }
122
+
123
+
124
+
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
+
@@ -1,93 +1,106 @@
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
+ NotifyServer: {
38
+ Enabled: false,
39
+ Server: "https://ntfy.domainname.com",
40
+ Attachments: "https://domainname.com/Storage/EasScenarios",
41
+ Credentials: {
42
+ Username: "username",
43
+ Password: "password"
44
+ }
45
+ },
46
+ ListenerSettings: [
47
+ {
48
+ events: [`*Thunderstorm Warning*`, `* Watch`],
49
+ webhook: {
50
+ enabled: true,
51
+ destination: "https://discord.com/api/XXXXXXXXXX/XXXXXXXXXXX",
52
+ title: "AtmosphericX - (Thunderstorm Warnings and Watches)",
53
+ message: "<@&XXXXXXXXXXXXXXXXXXXXX>",
54
+ ratelimit: 1
55
+ },
56
+ notify: {
57
+ enabled: false,
58
+ topic: "thunderstorm_events",
59
+ },
60
+ uploads: {
61
+ eas: true,
62
+ file: true,
63
+ event: true
64
+ }
65
+ }
66
+ ],
67
+ GlobalSettings: {
68
+ EventManagement: true,
69
+ BetterEventNames: true,
70
+ DisableGeometryParsing: false,
71
+ UseShapefileCoordinates: true,
72
+ SPCWatchesOnly: true,
73
+ ShapefileSkipPoints: 0,
74
+ NodeTTL: 60,
75
+ NodeMinDistance: 120,
76
+ EventFiltering: {
77
+ ListeningEvents: [
78
+ "*Severe Thunderstorm Warning*",
79
+ "*Blizzard*", "*Ice Storm*", "*Winter Storm*", "*Snow Squall*",
80
+ "Tornado Emergency", "*Tornado Warning*",
81
+ "Special Weather Statement", "Marine Weather Statement",
82
+ "*Tsunami*", "*Hurricane*", "*Tropical Storm*", "*Special Marine*",
83
+ "*Flash Flood Warning*", "*Flash Flood Watch*", "*Flash Flood Advisory*",
84
+ "Mesoscale Discussion",
85
+ "*Storm Prediction Center*",
86
+ "PDS Tornado Watch", "Tornado Watch", "Severe Thunderstorm Watch", "Flash Flood Watch", "PDS Severe Thunderstorm Watch",
87
+ "*Administrative*", "National Weather Service Policy",
88
+ "Fire Weather Warning", "Fire Weather Watch", "Fire Weather Advisory",
89
+ ],
90
+ ListeningICAO: [`KLOT`],
91
+ IgnoredICAO: [],
92
+ IgnoredEvents: [],
93
+ ListeningUGC: [`WIC001`],
94
+ ListeningStates: [`MO`, `IA`],
95
+ NodeLocationFiltering: false,
96
+ IgnoreTestProducts: true,
97
+ },
98
+ ArchiveSettings: {
99
+ TTL: 600,
100
+ EventDirectory: `Storage/EventProducts`,
101
+ TextDirectory: `Storage/TextProducts`,
102
+ EasDirectory: `Storage/EasScenarios`,
103
+ EasToneout: `tone.wav`,
104
+ }
105
+ }
93
106
  })
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
  })