@atmosx/event-product-parser 3.0.48 → 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 (141) 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 -417
  6. package/SECURITY.md +20 -20
  7. package/SUPPORTED_EVENTS.md +369 -368
  8. package/dist/cjs/index.cjs +1925 -1885
  9. package/dist/esm/index.mjs +1927 -1887
  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 -41
  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 -70
  19. package/src/@building/building.properties.ts +95 -95
  20. package/src/@building/building.signature.ts +60 -61
  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 -146
  24. package/src/@core/core.clearEvents.ts +30 -31
  25. package/src/@core/core.createListener.ts +23 -23
  26. package/src/@core/core.getEvents.ts +23 -24
  27. package/src/@core/core.getNodes.ts +23 -24
  28. package/src/@core/core.getRandomEvent.ts +23 -24
  29. package/src/@core/core.getVersion.ts +23 -24
  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 -118
  56. package/src/@events/events.text.ts +84 -81
  57. package/src/@events/events.ugc.ts +89 -85
  58. package/src/@events/events.vtec.ts +86 -87
  59. package/src/@manager/manager.mkEvent.ts +97 -88
  60. package/src/@manager/manager.rmEvent.ts +56 -49
  61. package/src/@manager/manager.setHash.ts +35 -36
  62. package/src/@manager/manager.updateEvents.ts +32 -34
  63. package/src/@manager/manager.updateListener.ts +154 -159
  64. package/src/@manager/manager.updateNodes.ts +53 -54
  65. package/src/@modules/@database/database.broadcastify.ts +66 -66
  66. package/src/@modules/@database/database.cache.ts +49 -47
  67. package/src/@modules/@database/database.init.ts +58 -57
  68. package/src/@modules/@database/database.shapefiles.ts +92 -92
  69. package/src/@modules/@database/database.stanza.ts +46 -47
  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 -52
  79. package/src/@modules/@eas/eas.setAsciiToBits.ts +31 -32
  80. package/src/@modules/@eas/eas.setAttentionTone.ts +40 -40
  81. package/src/@modules/@eas/eas.setEasTone.ts +151 -147
  82. package/src/@modules/@eas/eas.setNoise.ts +32 -31
  83. package/src/@modules/@eas/eas.setRadioEffect.ts +50 -49
  84. package/src/@modules/@eas/eas.setSameHeader.ts +44 -45
  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 -0
  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 -0
  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 -58
  100. package/src/@modules/@utilities/utilities.setWarning.ts +34 -34
  101. package/src/@modules/@xmpp/xmpp.xDeploy.ts +57 -58
  102. package/src/@modules/@xmpp/xmpp.xError.ts +26 -28
  103. package/src/@modules/@xmpp/xmpp.xOffline.ts +36 -37
  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 -57
  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 -109
  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 +24 -0
  119. package/src/@parsers/@ugc/ugc.header.ts +29 -29
  120. package/src/@parsers/@ugc/ugc.locations.ts +57 -29
  121. package/src/@parsers/@ugc/ugc.setCache.ts +28 -0
  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 -83
  132. package/src/@types/type.stanza.ts +37 -37
  133. package/src/@types/type.ugc.ts +24 -24
  134. package/src/bootstrap.ts +115 -112
  135. package/src/index.ts +74 -74
  136. package/test.js +92 -98
  137. package/tsconfig.json +13 -13
  138. package/tsup.config.ts +15 -15
  139. package/dist/index.d.mts +0 -299
  140. package/dist/index.d.ts +0 -299
  141. package/src/@core/core.createEvent.ts +0 -83
@@ -1,46 +1,46 @@
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_awips } from "../../@dictionaries/dictionaries.awips"
22
-
23
- interface ValidateOptions {
24
- attributes: TypeAttributes
25
- }
26
-
27
- interface ValidiateResponse {
28
- type: string
29
- prefix: string
30
- }
31
-
32
- export const getAwipsType = (options: ValidateOptions): ValidiateResponse => {
33
- const attributes = options.attributes;
34
- if (!attributes.awipsid) {
35
- return {
36
- type: null,
37
- prefix: null
38
- }
39
- }
40
- for (const [prefix, type] of Object.entries(dict_awips)) {
41
- if (attributes.awipsid.startsWith(prefix)) {
42
- return { type, prefix }
43
- }
44
- }
45
- return { type: null, prefix: null }
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_awips } from "../../@dictionaries/dictionaries.awips"
22
+
23
+ interface ValidateOptions {
24
+ attributes: TypeAttributes
25
+ }
26
+
27
+ interface ValidiateResponse {
28
+ type: string
29
+ prefix: string
30
+ }
31
+
32
+ export const getAwipsType = (options: ValidateOptions): ValidiateResponse => {
33
+ const attributes = options.attributes;
34
+ if (!attributes.awipsid) {
35
+ return {
36
+ type: null,
37
+ prefix: null
38
+ }
39
+ }
40
+ for (const [prefix, type] of Object.entries(dict_awips)) {
41
+ if (attributes.awipsid.startsWith(prefix)) {
42
+ return { type, prefix }
43
+ }
44
+ }
45
+ return { type: null, prefix: null }
46
46
  }
@@ -1,50 +1,50 @@
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 { TypeStanzaCompiled } from "../../@types/type.compiled"
22
- import { dict_expressions } from "../../@dictionaries/dictionaries.expressions"
23
- import { getAwipsType } from "./stanza.getAwipsType"
24
-
25
- interface ValidateOptions {
26
- stanza: TypeStanza
27
- }
28
-
29
- export const validate = (options: ValidateOptions): TypeStanzaCompiled => {
30
- if (options.stanza.is(`message`)) {
31
- const cb = options.stanza.getChild(`x`) as TypeStanza;
32
- if (cb && cb.children) {
33
- const message = unescape(cb.children[0]);
34
- const attributes = cb.attrs;
35
- if (attributes.awipsid && attributes.awipsid.length > 1) {
36
- const isCapEvent = message.includes(`<?xml`);
37
- const isCapAreaDescription = message.includes(`<areaDesc>`)
38
- const isVTEC = message.match(dict_expressions.pvtec) != null;
39
- const isUGC = message.match(dict_expressions.ugc1) != null;
40
- const getType = getAwipsType({ attributes: attributes})
41
- if (getType.type != null) {
42
- return {
43
- message, attributes, isCapEvent, isVTEC, isUGC, isCapAreaDescription, isIgnored: false, isNWWS: true, getType
44
- }
45
- }
46
- }
47
- }
48
- }
49
- return { isIgnored: true}
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 { TypeStanzaCompiled } from "../../@types/type.compiled"
22
+ import { dict_expressions } from "../../@dictionaries/dictionaries.expressions"
23
+ import { getAwipsType } from "./stanza.getAwipsType"
24
+
25
+ interface ValidateOptions {
26
+ stanza: TypeStanza
27
+ }
28
+
29
+ export const validate = (options: ValidateOptions): TypeStanzaCompiled => {
30
+ if (options.stanza.is(`message`)) {
31
+ const cb = options.stanza.getChild(`x`) as TypeStanza;
32
+ if (cb && cb.children) {
33
+ const message = unescape(cb.children[0]);
34
+ const attributes = cb.attrs;
35
+ if (attributes.awipsid && attributes.awipsid.length > 1) {
36
+ const isCapEvent = message.includes(`<?xml`);
37
+ const isCapAreaDescription = message.includes(`<areaDesc>`)
38
+ const isVTEC = message.match(dict_expressions.pvtec) != null;
39
+ const isUGC = message.match(dict_expressions.ugc1) != null;
40
+ const getType = getAwipsType({ attributes: attributes})
41
+ if (getType.type != null) {
42
+ return {
43
+ message, attributes, isCapEvent, isVTEC, isUGC, isCapAreaDescription, isIgnored: false, isNWWS: true, getType
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+ return { isIgnored: true}
50
50
  }
@@ -1,70 +1,70 @@
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
- interface CreateHttpOptions {
21
- url: string
22
- headers?: any
23
- timeout?: number
24
- method?: `GET` | `POST` | `PUT` | `DELETE`
25
- body?: any;
26
- formData?: any;
27
- }
28
-
29
- export const createHttp = async (options: CreateHttpOptions): Promise<any> => {
30
- const requestOptions: RequestInit = {
31
- method: options.method ?? "GET",
32
- headers: options.headers ?? {
33
- "User-Agent": "AtmosphericX",
34
- "Accept": "application/geo+json, text/plain, */*; q=0.9",
35
- "Accept-Language": "en-US,en;q=0.9",
36
- },
37
- signal: AbortSignal.timeout(options.timeout ?? 10_000),
38
- redirect: "follow"
39
- };
40
-
41
-
42
- const returnHttp = function(error: boolean,status: number, message: string) {
43
- return { error: error, options: requestOptions, status, message };
44
- }
45
-
46
- if (options?.formData) {
47
- requestOptions.body = options.formData;
48
- } else if (options?.body != undefined) {
49
- requestOptions.body =
50
- options.body instanceof FormData
51
- ? options.body
52
- : typeof options.body === "string"
53
- ? options.body
54
- : JSON.stringify(options.body);
55
- }
56
-
57
- try {
58
- const response = await fetch(
59
- options?.url ?? `https://api.weather.gov/alerts/active`,
60
- requestOptions
61
- )
62
- const body = await response.text();
63
- if (!response.ok) {
64
- return returnHttp(true, response.status, `HTTP Status Code ${response.status} (${response.statusText})`)
65
- }
66
- return returnHttp(false, response.status, body)
67
- } catch (error) {
68
- return returnHttp(true, 500, `Internal Server Error: ${error}`)
69
- }
70
- }
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
+ interface CreateHttpOptions {
21
+ url: string
22
+ headers?: any
23
+ timeout?: number
24
+ method?: `GET` | `POST` | `PUT` | `DELETE`
25
+ body?: any;
26
+ formData?: any;
27
+ }
28
+
29
+ export const createHttp = async (options: CreateHttpOptions): Promise<any> => {
30
+ const requestOptions: RequestInit = {
31
+ method: options.method ?? "GET",
32
+ headers: options.headers ?? {
33
+ "User-Agent": "AtmosphericX",
34
+ "Accept": "application/geo+json, text/plain, */*; q=0.9",
35
+ "Accept-Language": "en-US,en;q=0.9",
36
+ },
37
+ signal: AbortSignal.timeout(options.timeout ?? 10_000),
38
+ redirect: "follow"
39
+ };
40
+
41
+
42
+ const returnHttp = function(error: boolean,status: number, message: string) {
43
+ return { error: error, options: requestOptions, status, message };
44
+ }
45
+
46
+ if (options?.formData) {
47
+ requestOptions.body = options.formData;
48
+ } else if (options?.body != undefined) {
49
+ requestOptions.body =
50
+ options.body instanceof FormData
51
+ ? options.body
52
+ : typeof options.body === "string"
53
+ ? options.body
54
+ : JSON.stringify(options.body);
55
+ }
56
+
57
+ try {
58
+ const response = await fetch(
59
+ options?.url ?? `https://api.weather.gov/alerts/active`,
60
+ requestOptions
61
+ )
62
+ const body = await response.text();
63
+ if (!response.ok) {
64
+ return returnHttp(true, response.status, `HTTP Status Code ${response.status} (${response.statusText})`)
65
+ }
66
+ return returnHttp(false, response.status, body)
67
+ } catch (error) {
68
+ return returnHttp(true, 500, `Internal Server Error: ${error}`)
69
+ }
70
+ }
@@ -1,43 +1,43 @@
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
-
21
- export const getFormattedTime = (date: string): string => {
22
- const now = Date.now();
23
- const then = typeof date === "number" ? date : new Date(date).getTime()
24
- const seconds = Math.floor((now - then) / 1000);
25
- const absSeconds = Math.abs(seconds);
26
- const isPast = seconds > 0;
27
- const units: [string, number][] = [
28
- ["year", 31536000], ["month", 2592000],
29
- ["day", 86400], ["hour", 3600],
30
- ["minute", 60], ["second", 1],
31
- ];
32
- for (const [name, value] of units) {
33
- const interval = Math.floor(absSeconds / value);
34
- if (interval >= 1) {
35
- return isPast
36
- ? `${interval} ${name}${interval > 1 ? "s" : ""} ago`
37
- : `in ${interval} ${name}${interval > 1 ? "s" : ""}`;
38
- }
39
- }
40
- return "just now";
41
- }
42
-
43
-
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
+
21
+ export const getFormattedTime = (date: string): string => {
22
+ const now = Date.now();
23
+ const then = typeof date === "number" ? date : new Date(date).getTime()
24
+ const seconds = Math.floor((now - then) / 1000);
25
+ const absSeconds = Math.abs(seconds);
26
+ const isPast = seconds > 0;
27
+ const units: [string, number][] = [
28
+ ["year", 31536000], ["month", 2592000],
29
+ ["day", 86400], ["hour", 3600],
30
+ ["minute", 60], ["second", 1],
31
+ ];
32
+ for (const [name, value] of units) {
33
+ const interval = Math.floor(absSeconds / value);
34
+ if (interval >= 1) {
35
+ return isPast
36
+ ? `${interval} ${name}${interval > 1 ? "s" : ""} ago`
37
+ : `in ${interval} ${name}${interval > 1 ? "s" : ""}`;
38
+ }
39
+ }
40
+ return "just now";
41
+ }
42
+
43
+
@@ -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
-
21
- export const getLatestIssuance = (): string => {
22
- const now = new Date();
23
- const current = now.getUTCHours() * 100 + now.getUTCMinutes();
24
- const issuances = [100, 600, 1300, 1630, 2000];
25
- let latest = issuances[0];
26
- for (const issuance of issuances) {
27
- if (current >= issuance) {
28
- latest = issuance;
29
- }
30
- }
31
- return latest.toString().padStart(4, "0");
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
+
21
+ export const getLatestIssuance = (): string => {
22
+ const now = new Date();
23
+ const current = now.getUTCHours() * 100 + now.getUTCMinutes();
24
+ const issuances = [100, 600, 1300, 1630, 2000];
25
+ let latest = issuances[0];
26
+ for (const issuance of issuances) {
27
+ if (current >= issuance) {
28
+ latest = issuance;
29
+ }
30
+ }
31
+ return latest.toString().padStart(4, "0");
32
+ }
@@ -0,0 +1,33 @@
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
+ export const getMatched = (strings: string[], string: string): boolean => {
21
+ const isMatched = strings.some(pattern => {
22
+ if (!pattern) return false;
23
+ const lowerP = pattern.toLowerCase();
24
+ const lowerS = string.toLowerCase()
25
+ if (lowerP === "*" || lowerP === lowerS) return true;
26
+ if (lowerP.includes("*")) {
27
+ const regex = "^" + lowerP.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*") + "$";
28
+ return new RegExp(regex).test(lowerS);
29
+ }
30
+ return false;
31
+ });
32
+ return isMatched;
33
+ }
@@ -1,25 +1,25 @@
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
-
23
- export const getSettings = (): TypeSettings => {
24
- return bootstrap.settings;
25
- }
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
+
23
+ export const getSettings = (): TypeSettings => {
24
+ return bootstrap.settings;
25
+ }