@atmosx/event-product-parser 3.0.55 → 3.0.61

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 (156) hide show
  1. package/.github/CODE_OF_CONDUCT.md +9 -9
  2. package/.github/CONTRIBUTING.md +29 -29
  3. package/.github/LICENSE +17 -17
  4. package/.github/SECURITY.md +20 -20
  5. package/.github/SUPPORTED_EVENTS.md +369 -369
  6. package/.github/docs/docs-functions.md +30 -0
  7. package/.github/docs/docs-general-configurations.md +209 -0
  8. package/.github/docs/docs-integrations.md +37 -0
  9. package/.github/docs/docs-listeners.md +28 -0
  10. package/.github/docs/docs-source-configuration.md +218 -0
  11. package/.github/docs/docs-technical.md +50 -0
  12. package/.github/logo.png +0 -0
  13. package/.github/samples/SAMPLE_EAS_GENERATION.wav +0 -0
  14. package/.github/samples/SAMPLE_GEOJSON.json +204 -0
  15. package/.github/samples/SAMPLE_TEXT_PRODUCT.txt +119 -0
  16. package/.vscode/settings.json +3 -3
  17. package/README.md +167 -0
  18. package/dist/cjs/index.cjs +1439 -1277
  19. package/dist/esm/index.mjs +1420 -1258
  20. package/package.json +47 -52
  21. package/src/@building/{building.create.ts → CreateEvent.ts} +55 -55
  22. package/src/@building/{building.clean.ts → GetCleanedEvent.ts} +29 -29
  23. package/src/@building/{building.attachments.ts → GetEventAttachments.ts} +85 -82
  24. package/src/@building/{building.enhance.ts → GetEventEnhancedName.ts} +54 -59
  25. package/src/@building/{building.geometry.ts → GetEventGeometry.ts} +47 -47
  26. package/src/@building/{building.headers.ts → GetEventHeader.ts} +36 -36
  27. package/src/@building/{building.polygon.ts → GetEventNodes.ts} +72 -69
  28. package/src/@building/{building.office.ts → GetEventOffice.ts} +42 -42
  29. package/src/@building/{building.properties.ts → GetEventProperties.ts} +95 -95
  30. package/src/@building/{building.signature.ts → GetEventSignature.ts} +60 -60
  31. package/src/@building/{building.tags.ts → GetEventTags.ts} +29 -24
  32. package/src/@building/{building.tracking.ts → GetEventTracking.ts} +67 -67
  33. package/src/@core/{core.clearEvents.ts → ClearEvents.ts} +30 -30
  34. package/src/@core/{core.createListener.ts → CreateListener.ts} +23 -23
  35. package/src/@core/{core.getEvents.ts → GetEvents.ts} +23 -23
  36. package/src/@core/{core.getNodes.ts → GetNodes.ts} +23 -23
  37. package/src/@core/{core.getRandomEvent.ts → GetRandomEvent.ts} +23 -23
  38. package/src/@core/{core.getVersion.ts → GetVersion.ts} +23 -23
  39. package/src/@core/{core.manualEvent.ts → ManualEvent.ts} +56 -38
  40. package/src/@core/{core.query.ts → QueryStanza.ts} +38 -38
  41. package/src/@core/{core.setNode.ts → SetNode.ts} +80 -80
  42. package/src/@core/{core.start.ts → StartService.ts} +60 -60
  43. package/src/@core/{core.stop.ts → StopService.ts} +31 -31
  44. package/src/@enums/AWIPS.ts +366 -0
  45. package/src/{@dictionaries/dictionaries.actions.ts → @enums/Actions.ts} +27 -27
  46. package/src/{@dictionaries/dictionaries.cancellation.ts → @enums/Cancellation.ts} +30 -30
  47. package/src/{@dictionaries/dictionaries.causes.ts → @enums/Causes.ts} +35 -35
  48. package/src/{@dictionaries/dictionaries.correlations.ts → @enums/Correlations.ts} +42 -42
  49. package/src/{@dictionaries/dictionaries.enhanced.ts → @enums/Enhanced.ts} +69 -69
  50. package/src/{@dictionaries/dictionaries.events.ts → @enums/Events.ts} +82 -82
  51. package/src/{@dictionaries/dictionaries.expressions.ts → @enums/Expressions.ts} +28 -28
  52. package/src/@enums/GlobalFilter.ts +24 -0
  53. package/src/{@dictionaries/dictionaries.hail.ts → @enums/Hail.ts} +37 -35
  54. package/src/{@dictionaries/dictionaries.icao.ts → @enums/ICAO.ts} +258 -258
  55. package/src/{@dictionaries/dictionaries.matches.ts → @enums/Matches.ts} +54 -54
  56. package/src/{@dictionaries/dictionaries.products.ts → @enums/Products.ts} +24 -24
  57. package/src/{@dictionaries/dictionaries.records.ts → @enums/Records.ts} +25 -25
  58. package/src/{@dictionaries/dictionaries.severity.ts → @enums/Severity.ts} +27 -27
  59. package/src/{@dictionaries/dictionaries.shapefiles.ts → @enums/Shapefiles.ts} +35 -35
  60. package/src/{@dictionaries/dictionaries.states.ts → @enums/States.ts} +71 -71
  61. package/src/{@dictionaries/dictionaries.status.ts → @enums/Status.ts} +30 -30
  62. package/src/{@dictionaries/dictionaries.global.ts → @enums/Strings.ts} +22 -24
  63. package/src/@enums/Tags.ts +167 -0
  64. package/src/{@dictionaries/dictionaries.testing.ts → @enums/Testing.ts} +24 -24
  65. package/src/@events/{events.api.ts → ParseAPI.ts} +116 -116
  66. package/src/@events/{events.text.ts → ParseText.ts} +87 -84
  67. package/src/@events/{events.ugc.ts → ParseUGC.ts} +93 -89
  68. package/src/@events/{events.vtec.ts → ParseVTEC.ts} +86 -86
  69. package/src/@manager/MakeEvents.ts +106 -0
  70. package/src/@manager/{manager.rmEvent.ts → RemoveEvent.ts} +69 -71
  71. package/src/@manager/{manager.setHash.ts → SetHash.ts} +35 -35
  72. package/src/@manager/Tasks.ts +246 -0
  73. package/src/@manager/{manager.updateEvents.ts → UpdateEvents.ts} +34 -34
  74. package/src/@manager/{manager.updateNodes.ts → UpdateNode.ts} +61 -53
  75. package/src/{@building/building.validate.ts → @manager/ValidateEvents.ts} +141 -154
  76. package/src/@modules/@database/{database.cache.ts → GetCachedEvents.ts} +49 -49
  77. package/src/@modules/@database/{database.broadcastify.ts → ImportBroadcastify.ts} +69 -66
  78. package/src/@modules/@database/{database.shapefiles.ts → ImportShapefiles.ts} +92 -92
  79. package/src/@modules/@database/{database.stanza.ts → ImportStanza.ts} +46 -46
  80. package/src/@modules/@database/{database.init.ts → InitializeDatabase.ts} +58 -58
  81. package/src/@modules/@eas/{eas.setEasTone.ts → GenerateEASMessage.ts} +144 -151
  82. package/src/@modules/@eas/{eas.getCleanDescription.ts → GetCleanDescription.ts} +91 -91
  83. package/src/@modules/@eas/{eas.getFloatPCM16.ts → GetFloatPCM16.ts} +29 -29
  84. package/src/@modules/@eas/{eas.getMergedPCM16.ts → GetMergedPCM16.ts} +32 -32
  85. package/src/@modules/@eas/{eas.getPCM16.ts → GetPCM16.ts} +52 -52
  86. package/src/@modules/@eas/{eas.getPCMToFloat.ts → GetPCMToFloat.ts} +26 -26
  87. package/src/@modules/@eas/{eas.getSampledPCM16.ts → GetSampledPCM16.ts} +36 -36
  88. package/src/@modules/@eas/{eas.getTTS.ts → GetTTS.ts} +54 -54
  89. package/src/@modules/@eas/{eas.getWavPCM16.ts → GetWavPCM16.ts} +52 -52
  90. package/src/@modules/@eas/{eas.setAFSK.ts → SetAFSK.ts} +51 -51
  91. package/src/@modules/@eas/{eas.setAsciiToBits.ts → SetAsciiToBits.ts} +31 -31
  92. package/src/@modules/@eas/{eas.setAttentionTone.ts → SetAttentionTone.ts} +40 -40
  93. package/src/@modules/@eas/{eas.setNoise.ts → SetNoise.ts} +32 -32
  94. package/src/@modules/@eas/{eas.setRadioEffect.ts → SetRadioEffect.ts} +50 -50
  95. package/src/@modules/@eas/{eas.setSameHeader.ts → SetSameHeader.ts} +44 -44
  96. package/src/@modules/@stanza/{stanza.getAwipsType.ts → GetAwipsType.ts} +47 -45
  97. package/src/@modules/@stanza/{stanza.validate.ts → ValidateStanza.ts} +49 -49
  98. package/src/@modules/@utilities/{utilities.createHttp.ts → CreateHttp.ts} +83 -83
  99. package/src/@modules/@utilities/{utilities.getFormattedTime.ts → GetFormattedTime.ts} +43 -43
  100. package/src/@modules/@utilities/{utilities.getLatestIssuance.ts → GetLatestIssuance.ts} +32 -32
  101. package/src/@modules/@utilities/{utilities.getMatched.ts → GetMatched.ts} +33 -33
  102. package/src/@modules/@utilities/{utilities.getSettings.ts → GetSettings.ts} +25 -25
  103. package/src/@modules/@utilities/{utilities.getShapeNearestPoint.ts → GetShapeNearestPoint.ts} +114 -114
  104. package/src/@modules/@utilities/{utilities.setCronSchedule.ts → SetCronSchedule.ts} +94 -94
  105. package/src/@modules/@utilities/{utilities.setDebug.ts → SetDebug.ts} +37 -38
  106. package/src/@modules/@utilities/{utilities.setEventEmit.ts → SetEventEmit.ts} +41 -41
  107. package/src/@modules/@utilities/{utilities.setListener.ts → SetListener.ts} +30 -30
  108. package/src/@modules/@utilities/{utilities.setSettings.ts → SetSettings.ts} +42 -42
  109. package/src/@modules/@utilities/{utilities.setSleep.ts → SetSleep.ts} +33 -33
  110. package/src/@modules/@utilities/{utilities.setTimeoutAction.ts → SetTimeoutAction.ts} +63 -63
  111. package/src/@modules/@utilities/{utilities.setWarning.ts → SetWarning.ts} +34 -34
  112. package/src/@modules/@xmpp/{xmpp.xDeploy.ts → DeployXMPP.ts} +57 -57
  113. package/src/@modules/@xmpp/{xmpp.xError.ts → ErrorXMPP.ts} +26 -26
  114. package/src/@modules/@xmpp/{xmpp.xOffline.ts → OfflineXMPP.ts} +36 -36
  115. package/src/@modules/@xmpp/{xmpp.xOnline.ts → OnlineXMPP.ts} +45 -45
  116. package/src/@modules/@xmpp/{xmpp.xReconnect.ts → ReconnectXMPP.ts} +64 -64
  117. package/src/@modules/@xmpp/{xmpp.xStanza.ts → StanzaXMPP.ts} +62 -62
  118. package/src/@parsers/@hvtec/{hvtec.extract.ts → HVExtract.ts} +39 -39
  119. package/src/@parsers/@pvtec/{pvtec.expires.ts → GetExpiry.ts} +25 -25
  120. package/src/@parsers/@pvtec/{pvtec.extract.ts → VTECExtract.ts} +48 -48
  121. package/src/@parsers/@text/{text.getDescriptionFromProduct.ts → GetDescriptionFromProduct.ts} +59 -52
  122. package/src/@parsers/@text/{text.getEmbedText.ts → GetEmbededText.ts} +55 -55
  123. package/src/@parsers/@text/{text.getPolygonFromProduct.ts → GetPolygonFromProduct.ts} +52 -52
  124. package/src/@parsers/@text/{text.getStringText.ts → GetStringText.ts} +57 -53
  125. package/src/@parsers/@text/{text.getTextFromProduct.ts → GetTextFromProduct.ts} +42 -42
  126. package/src/@parsers/@text/{text.getXML.ts → GetXML.ts} +60 -60
  127. package/src/@parsers/@ugc/{ugc.getCache.ts → GetCache.ts} +23 -23
  128. package/src/@parsers/@ugc/{ugc.expiry.ts → GetExpiry.ts} +31 -31
  129. package/src/@parsers/@ugc/{ugc.locations.ts → GetLocations.ts} +56 -56
  130. package/src/@parsers/@ugc/{ugc.header.ts → GetUGCHeader.ts} +29 -29
  131. package/src/@parsers/@ugc/{ugc.coordinates.ts → GetZonePolygon.ts} +110 -110
  132. package/src/@parsers/@ugc/{ugc.zones.ts → GetZones.ts} +51 -51
  133. package/src/@parsers/@ugc/{ugc.setCache.ts → SetCache.ts} +27 -27
  134. package/src/@parsers/@ugc/{ugc.extract.ts → UGCExtract.ts} +36 -36
  135. package/src/@types/{type.listener.ts → Actions.ts} +37 -38
  136. package/src/@types/{type.attributes.ts → Attributes.ts} +28 -28
  137. package/src/@types/{type.event.ts → Event.ts} +69 -69
  138. package/src/@types/{type.hvtec.ts → HVTEC.ts} +25 -25
  139. package/src/@types/{type.hash.ts → Hash.ts} +24 -24
  140. package/src/@types/{type.properties.ts → Properties.ts} +77 -77
  141. package/src/@types/{type.settings.ts → Settings.ts} +99 -93
  142. package/src/@types/{type.stanza.ts → Stanza.ts} +37 -37
  143. package/src/@types/{type.compiled.ts → StanzaCompiled.ts} +35 -34
  144. package/src/@types/{type.ugc.ts → UGC.ts} +24 -24
  145. package/src/@types/{type.pvtec.ts → VTEC.ts} +30 -30
  146. package/src/bootstrap.ts +128 -124
  147. package/src/index.ts +74 -74
  148. package/tsconfig.json +13 -13
  149. package/tsup.config.ts +15 -15
  150. package/.github/README.md +0 -384
  151. package/src/@dictionaries/dictionaries.awips.ts +0 -364
  152. package/src/@dictionaries/dictionaries.strings.ts +0 -22
  153. package/src/@dictionaries/dictionaries.tags.ts +0 -93
  154. package/src/@manager/manager.mkEvent.ts +0 -98
  155. package/src/@manager/manager.updateListener.ts +0 -180
  156. package/testing/init.js +0 -91
@@ -1,38 +1,56 @@
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 { TypeAttributes } from "../@types/type.attributes";
21
- import { dict_expressions } from "../@dictionaries/dictionaries.expressions"
22
- import { getAwipsType } from "../@modules/@stanza/stanza.getAwipsType";
23
- import { createEvent } from "../@building/building.create";
24
-
25
- interface CreateEventOptions {
26
- message: string
27
- attributes: TypeAttributes
28
- }
29
-
30
- export const manualEvent = async (options: CreateEventOptions): Promise<void> => {
31
- const isCapEvent = options.message.includes(`<?xml`);
32
- const isCapAreaDescription = options.message.includes(`<areaDesc>`)
33
- const isVTEC = options.message.match(dict_expressions.pvtec) != null;
34
- const isUGC = options.message.match(dict_expressions.ugc1) != null;
35
- const getType = getAwipsType({ attributes: options.attributes})
36
- const result = { message: options.message, attributes: options.attributes, isCapEvent, isVTEC, isUGC, isCapAreaDescription, isIgnored: false, isNWWS: true, getType }
37
- await createEvent(result);
38
- }
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 { TypeAttributes } from "../@types/Attributes";
21
+ import { EnumExpressions } from "../@enums/Expressions"
22
+ import { GetAwipsType } from "../@modules/@stanza/GetAwipsType";
23
+ import { CreateEvent } from "../@building/CreateEvent";
24
+
25
+ interface CreateEventOptions {
26
+ message: string
27
+ awipsid?: string
28
+ }
29
+
30
+ export const ManualEvent = async (options: CreateEventOptions): Promise<void> => {
31
+ const isCapEvent = options.message.includes(`<?xml`);
32
+ const isCapAreaDescription = options.message.includes(`<areaDesc>`)
33
+ const isVTEC = options.message.match(EnumExpressions.pvtec) != null;
34
+ const isUGC = options.message.match(EnumExpressions.ugc1) != null;
35
+ const attributes = {
36
+ "xmlns": "@atmosx/event-product-parser",
37
+ "id": "manual_processor.0000",
38
+ "issue": new Date().toISOString(),
39
+ "ttaaii": "XXXXX",
40
+ "cccc": "XXX",
41
+ "awipsid": options.awipsid ?? "XXXXXX",
42
+ }
43
+ const getType = GetAwipsType({ attributes })
44
+ const result = {
45
+ message: options.message,
46
+ attributes,
47
+ isCapEvent,
48
+ isVTEC,
49
+ isUGC,
50
+ isCapAreaDescription,
51
+ isIgnored: false,
52
+ isNWWS: true,
53
+ getType
54
+ }
55
+ await CreateEvent(result);
56
+ }
@@ -1,39 +1,39 @@
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 { TypeStanza } from "../@types/type.stanza";
21
- import { bootstrap } from "../bootstrap";
22
-
23
- interface QueryOptions {
24
- search: string
25
- max?: number
26
- }
27
-
28
- type RowQuery = {
29
- rowid: number
30
- stanza: string
31
- }
32
-
33
- export const query = async (options: QueryOptions): Promise<TypeStanza[]> => {
34
- const get = await bootstrap.database.prepare(
35
- `SELECT * FROM stanzas WHERE stanza LIKE ? LIMIT ?`)
36
- .all(`%${options.search}%`, options.max ?? 100) as RowQuery[];
37
- const events = get.map((row) => JSON.parse(row.stanza));
38
- return events as TypeStanza[];
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 { TypeStanza } from "../@types/Stanza";
21
+ import { bootstrap } from "../bootstrap";
22
+
23
+ interface QueryStanzaOptions {
24
+ search: string
25
+ max?: number
26
+ }
27
+
28
+ type QueryStanza = {
29
+ rowid: number
30
+ stanza: string
31
+ }
32
+
33
+ export const QueryStanza = async (options: QueryStanzaOptions): Promise<TypeStanza[]> => {
34
+ const get = await bootstrap.database.prepare(
35
+ `SELECT * FROM stanzas WHERE stanza LIKE ? LIMIT ?`)
36
+ .all(`%${options.search}%`, options.max ?? 100) as QueryStanza[];
37
+ const events = get.map((row) => JSON.parse(row.stanza));
38
+ return events as TypeStanza[];
39
39
  }
@@ -1,81 +1,81 @@
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 { bootstrap } from "../bootstrap";
21
- import { setWarning } from "../@modules/@utilities/utilities.setWarning"
22
- import { setEventEmit } from "../@modules/@utilities/utilities.setEventEmit";
23
-
24
- interface GetNodeOptions {
25
- identifier: string
26
- delete?: boolean
27
- coordinates: { longitude: number; latitude: number }
28
- }
29
-
30
- export const setNode = (options: GetNodeOptions) => {
31
- const nodes = bootstrap.cache.nodes.features;
32
- const exists = nodes.find((node) => node.properties.identifier === options.identifier);
33
- if (options.delete) {
34
- if (exists) {
35
- const index = nodes.indexOf(exists);
36
- nodes.splice(index, 1);
37
- return setEventEmit({
38
- event: `onNodeDelete`,
39
- metadata: {
40
- type: `node-delete`,
41
- node: exists
42
- }
43
- })
44
- }
45
- return setWarning({ message: `Node with identifier '${options.identifier}' not found.` })
46
- }
47
- if (exists) {
48
- const index = nodes.indexOf(exists);
49
- nodes[index] = {
50
- ...exists,
51
- geometry: {
52
- type: "Point",
53
- coordinates: [options.coordinates.longitude, options.coordinates.latitude]
54
- }
55
- };
56
- return setEventEmit({
57
- event: `onNodeUpdate`,
58
- metadata: {
59
- type: `node-update`,
60
- node: nodes[index]
61
- }
62
- })
63
- }
64
- nodes.push({
65
- type: "Feature",
66
- geometry: {
67
- type: "Point",
68
- coordinates: [options.coordinates.longitude, options.coordinates.latitude]
69
- },
70
- properties: {
71
- identifier: options.identifier
72
- }
73
- });
74
- return setEventEmit({
75
- event: `onNodeAdd`,
76
- metadata: {
77
- type: `node-add`,
78
- node: nodes[nodes.length - 1]
79
- }
80
- })
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 { bootstrap } from "../bootstrap";
21
+ import { SetWarning } from "../@modules/@utilities/SetWarning"
22
+ import { SetEventEmit } from "../@modules/@utilities/SetEventEmit";
23
+
24
+ interface GetNodeOptions {
25
+ identifier: string
26
+ delete?: boolean
27
+ coordinates: { longitude: number; latitude: number }
28
+ }
29
+
30
+ export const SetNode = (options: GetNodeOptions) => {
31
+ const nodes = bootstrap.cache.nodes.features;
32
+ const exists = nodes.find((node) => node.properties.identifier === options.identifier);
33
+ if (options.delete) {
34
+ if (exists) {
35
+ const index = nodes.indexOf(exists);
36
+ nodes.splice(index, 1);
37
+ return SetEventEmit({
38
+ event: `onNodeDelete`,
39
+ metadata: {
40
+ type: `node-delete`,
41
+ node: exists
42
+ }
43
+ })
44
+ }
45
+ return SetWarning({ message: `Node with identifier '${options.identifier}' not found.` })
46
+ }
47
+ if (exists) {
48
+ const index = nodes.indexOf(exists);
49
+ nodes[index] = {
50
+ ...exists,
51
+ geometry: {
52
+ type: "Point",
53
+ coordinates: [options.coordinates.longitude, options.coordinates.latitude]
54
+ }
55
+ };
56
+ return SetEventEmit({
57
+ event: `onNodeUpdate`,
58
+ metadata: {
59
+ type: `node-update`,
60
+ node: nodes[index]
61
+ }
62
+ })
63
+ }
64
+ nodes.push({
65
+ type: "Feature",
66
+ geometry: {
67
+ type: "Point",
68
+ coordinates: [options.coordinates.longitude, options.coordinates.latitude]
69
+ },
70
+ properties: {
71
+ identifier: options.identifier
72
+ }
73
+ });
74
+ return SetEventEmit({
75
+ event: `onNodeAdd`,
76
+ metadata: {
77
+ type: `node-add`,
78
+ node: nodes[nodes.length - 1]
79
+ }
80
+ })
81
81
  }
@@ -1,61 +1,61 @@
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 { bootstrap } from "../bootstrap";
22
- import { setWarning } from "../@modules/@utilities/utilities.setWarning"
23
- import { setSettings } from "../@modules/@utilities/utilities.setSettings"
24
- import { xDeploy } from "../@modules/@xmpp/xmpp.xDeploy"
25
- import { initializeDatabase } from "../@modules/@database/database.init";
26
- import { getCachedEvents } from "../@modules/@database/database.cache";
27
- import { setCronSchedule } from "../@modules/@utilities/utilities.setCronSchedule";
28
- import { updateNode } from "../@manager/manager.updateNodes";
29
- import { updateEvents } from "../@manager/manager.updateEvents";
30
- import { Cron } from "croner";
31
-
32
- export const startService = async (configurations: TypeSettings): Promise<void> => {
33
- if (!bootstrap.isReady) {
34
- return setWarning({
35
- message: `You can not create another instance without shutting down the current one first, please make sure to call the stop() method first!`
36
- })
37
- }
38
- const settings = setSettings(configurations);
39
- bootstrap.isReady = true;
40
- await initializeDatabase();
41
- if (settings.EnableWireService) {
42
- (async () => {
43
- await getCachedEvents();
44
- await xDeploy()
45
- })();
46
- }
47
- await setCronSchedule()
48
- let scheduleInterval = !settings.EnableWireService ? settings.NationalWeatherServiceSettings.CallbackInterval : 1;
49
- if (!settings.EnableWireService && scheduleInterval < 15) {
50
- setWarning({ message: `Schedule interval of ${scheduleInterval} seconds is too low, setting to 15 seconds` })
51
- bootstrap.settings.NationalWeatherServiceSettings.CallbackInterval = 15;
52
- scheduleInterval = 15;
53
- }
54
- bootstrap.cron = new Cron(`*/${scheduleInterval} * * * * *`, async () => {
55
- await setCronSchedule();
56
- })
57
- bootstrap.cron = new Cron(`* * * * * *`, async () => {
58
- await updateNode();
59
- await updateEvents();
60
- })
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/Settings";
21
+ import { bootstrap } from "../bootstrap";
22
+ import { SetWarning } from "../@modules/@utilities/SetWarning"
23
+ import { SetSettings } from "../@modules/@utilities/SetSettings"
24
+ import { DeployXMPP } from "../@modules/@xmpp/DeployXMPP"
25
+ import { InitializeDatabase } from "../@modules/@database/InitializeDatabase";
26
+ import { GetCachedEvents } from "../@modules/@database/GetCachedEvents";
27
+ import { SetCronSchedule } from "../@modules/@utilities/SetCronSchedule";
28
+ import { UpdateNode } from "../@manager/UpdateNode";
29
+ import { UpdateEvents } from "../@manager/UpdateEvents";
30
+ import { Cron } from "croner";
31
+
32
+ export const StartService = async (configurations: TypeSettings): Promise<void> => {
33
+ if (!bootstrap.isReady) {
34
+ return SetWarning({
35
+ message: `You can not create another instance without shutting down the current one first, please make sure to call the stop() method first!`
36
+ })
37
+ }
38
+ const settings = SetSettings(configurations);
39
+ bootstrap.isReady = true;
40
+ await InitializeDatabase();
41
+ if (settings.EnableWireService) {
42
+ (async () => {
43
+ await GetCachedEvents();
44
+ await DeployXMPP()
45
+ })();
46
+ }
47
+ await SetCronSchedule()
48
+ let scheduleInterval = !settings.EnableWireService ? settings.NationalWeatherServiceSettings.CallbackInterval : 1;
49
+ if (!settings.EnableWireService && scheduleInterval < 15) {
50
+ SetWarning({ message: `Schedule interval of ${scheduleInterval} seconds is too low, setting to 15 seconds` })
51
+ bootstrap.settings.NationalWeatherServiceSettings.CallbackInterval = 15;
52
+ scheduleInterval = 15;
53
+ }
54
+ bootstrap.cron = new Cron(`*/${scheduleInterval} * * * * *`, async () => {
55
+ await SetCronSchedule();
56
+ })
57
+ bootstrap.cron = new Cron(`* * * * * *`, async () => {
58
+ await UpdateNode();
59
+ await UpdateEvents();
60
+ })
61
61
  }
@@ -1,32 +1,32 @@
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 { bootstrap } from "../bootstrap";
21
-
22
- export const stopService = async (): Promise<void> => {
23
- if (bootstrap.isReady) {
24
- bootstrap.isReady = false;
25
- if (bootstrap.session_xmpp) {
26
- try { await bootstrap.session_xmpp.stop(); } catch {}
27
- bootstrap.cache.isConnected = false;
28
- bootstrap.cache.sigHault = true;
29
- bootstrap.session_xmpp = null;
30
- }
31
- }
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 { bootstrap } from "../bootstrap";
21
+
22
+ export const StopService = async (): Promise<void> => {
23
+ if (bootstrap.isReady) {
24
+ bootstrap.isReady = false;
25
+ if (bootstrap.session_xmpp) {
26
+ try { await bootstrap.session_xmpp.stop(); } catch {}
27
+ bootstrap.cache.isConnected = false;
28
+ bootstrap.cache.sigHault = true;
29
+ bootstrap.session_xmpp = null;
30
+ }
31
+ }
32
32
  }