@accelint/geo 0.2.9 → 0.3.0

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 (31) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/catalog-info.yaml +36 -0
  3. package/dist/coordinates/coordinate.js +1 -0
  4. package/dist/coordinates/coordinate.js.map +1 -1
  5. package/dist/coordinates/latlon/decimal-degrees/formatter.d.ts +5 -0
  6. package/dist/coordinates/latlon/decimal-degrees/formatter.js +10 -0
  7. package/dist/coordinates/latlon/decimal-degrees/formatter.js.map +1 -0
  8. package/dist/coordinates/latlon/degrees-decimal-minutes/formatter.d.ts +5 -0
  9. package/dist/coordinates/latlon/degrees-decimal-minutes/formatter.js +14 -0
  10. package/dist/coordinates/latlon/degrees-decimal-minutes/formatter.js.map +1 -0
  11. package/dist/coordinates/latlon/degrees-minutes-seconds/formatter.d.ts +5 -0
  12. package/dist/coordinates/latlon/degrees-minutes-seconds/formatter.js +16 -0
  13. package/dist/coordinates/latlon/degrees-minutes-seconds/formatter.js.map +1 -0
  14. package/dist/coordinates/latlon/internal/format.d.ts +9 -0
  15. package/dist/coordinates/latlon/internal/format.js +17 -0
  16. package/dist/coordinates/latlon/internal/format.js.map +1 -0
  17. package/dist/coordinates/latlon/internal/ordinal.d.ts +3 -0
  18. package/dist/coordinates/latlon/internal/ordinal.js +10 -0
  19. package/dist/coordinates/latlon/internal/ordinal.js.map +1 -0
  20. package/dist/coordinates/mgrs/parser.js +3 -3
  21. package/dist/coordinates/mgrs/parser.js.map +1 -1
  22. package/dist/coordinates/mgrs/system.js +3 -3
  23. package/dist/coordinates/mgrs/system.js.map +1 -1
  24. package/dist/coordinates/utm/parser.js +4 -3
  25. package/dist/coordinates/utm/parser.js.map +1 -1
  26. package/dist/coordinates/utm/system.js +3 -3
  27. package/dist/coordinates/utm/system.js.map +1 -1
  28. package/dist/index.d.ts +5 -0
  29. package/dist/index.js +5 -0
  30. package/dist/metafile-esm.json +1 -1
  31. package/package.json +27 -15
package/CHANGELOG.md ADDED
@@ -0,0 +1,146 @@
1
+ # @accelint/geo
2
+
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1788525: Add browser support to the `@accelint/geo` package.
8
+ - b32e3ae: Adds formatters to the existing coordinate representations
9
+
10
+ ### Patch Changes
11
+
12
+ - 0d697fa: Fixed definitions in package files for longhand repository definitions, while disabling the option in syncpack that changed it.
13
+ - f99f294: Updated syncpack and realigned all packages for dependency versions
14
+ - 935b8e5: Updated the package names in the Constellation configuration file.
15
+
16
+ ## 0.2.10
17
+
18
+ ### Patch Changes
19
+
20
+ - 64280a7: - Released `@accelint/constellation-tracker` - A tool that helps maintain catalog-info.yaml files for Constellation integration
21
+ - Ensures all packages include catalog-info.yaml in their published files for better discoverability and integration with Constellation
22
+ - Provides automated tracking and updating of component metadata across the project
23
+ - Enhanced package metadata to support better integration with internal tooling
24
+ - Updated dependencies [64280a7]
25
+ - @accelint/math@0.1.6
26
+ - @accelint/predicates@0.4.2
27
+
28
+ ## 0.2.9
29
+
30
+ ### Patch Changes
31
+
32
+ - 5206880: Linting fixes only.
33
+ - Updated dependencies [5206880]
34
+ - @accelint/predicates@0.4.1
35
+
36
+ ## 0.2.8
37
+
38
+ ### Patch Changes
39
+
40
+ - Updated dependencies [383c42a]
41
+ - @accelint/predicates@0.4.0
42
+
43
+ ## 0.2.7
44
+
45
+ ### Patch Changes
46
+
47
+ - @accelint/predicates@0.3.4
48
+
49
+ ## 0.2.6
50
+
51
+ ### Patch Changes
52
+
53
+ - 83104ea: Refactored ViewStack to be event driven, allowing for triggers anywhere in the app
54
+ - Updated dependencies [83104ea]
55
+ - @accelint/predicates@0.3.3
56
+ - @accelint/math@0.1.5
57
+
58
+ ## 0.2.5
59
+
60
+ ### Patch Changes
61
+
62
+ - Updated dependencies [ca3922a]
63
+ - @accelint/math@0.1.4
64
+ - @accelint/predicates@0.3.2
65
+
66
+ ## 0.2.4
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [938c74e]
71
+ - @accelint/predicates@0.3.1
72
+
73
+ ## 0.2.3
74
+
75
+ ### Patch Changes
76
+
77
+ - Updated dependencies [b77d30e]
78
+ - Updated dependencies [0fafa9f]
79
+ - @accelint/predicates@0.3.0
80
+
81
+ ## 0.2.2
82
+
83
+ ### Patch Changes
84
+
85
+ - @accelint/predicates@0.2.2
86
+
87
+ ## 0.2.1
88
+
89
+ ### Patch Changes
90
+
91
+ - @accelint/predicates@0.2.1
92
+
93
+ ## 0.2.0
94
+
95
+ ### Minor Changes
96
+
97
+ - 6c23f31: Add coordinate parsing capability; parse string into object with conversion
98
+ options: MGRS, UTM, and lat/lon DD, DDM, DMS. Some error messaging is included
99
+ to be helpful for users and debuggers.
100
+
101
+ ### Patch Changes
102
+
103
+ - Updated dependencies [4ceec7e]
104
+ - Updated dependencies [13f0d6c]
105
+ - @accelint/predicates@0.2.0
106
+
107
+ ## 0.1.3
108
+
109
+ ### Patch Changes
110
+
111
+ - f117ea6: Converted build step to use `tsup`.
112
+ - d39c5d8: Added explicit file extensions to relative path imports via esbuild plugin for tsup.
113
+ - Updated dependencies [f117ea6]
114
+ - Updated dependencies [d39c5d8]
115
+ - @accelint/converters@0.1.3
116
+ - @accelint/predicates@0.1.3
117
+
118
+ ## 0.1.2
119
+
120
+ ### Patch Changes
121
+
122
+ - 2c661d3: Standardized package.json "exports" field
123
+ - Updated dependencies [2c661d3]
124
+ - @accelint/converters@0.1.2
125
+ - @accelint/predicates@0.1.2
126
+
127
+ ## 0.1.1
128
+
129
+ ### Patch Changes
130
+
131
+ - 017c16e: Fixed publishing artifacts.
132
+ - Updated dependencies [017c16e]
133
+ - @accelint/converters@0.1.1
134
+ - @accelint/predicates@0.1.1
135
+
136
+ ## 0.1.0
137
+
138
+ ### Minor Changes
139
+
140
+ - eba7ce9: Initial release.
141
+
142
+ ### Patch Changes
143
+
144
+ - Updated dependencies [eba7ce9]
145
+ - @accelint/converters@0.1.0
146
+ - @accelint/predicates@0.1.0
@@ -0,0 +1,36 @@
1
+ ---
2
+ apiVersion: backstage.io/v1alpha1
3
+ kind: Component
4
+ metadata:
5
+ name: accelint_geo
6
+ title: Accelint Geo
7
+ description: >-
8
+ A collection of JavaScript functions for working with coordinates and
9
+ geospatial data.
10
+
11
+
12
+ Dependencies:
13
+
14
+ accelint_constellation-tracker@1.0.1, accelint_typescript-config@0.1.4,
15
+ accelint_vitest-config@0.1.5
16
+ annotations:
17
+ backstage.io/edit-url: https://github.com/gohypergiant/standard-toolkit/blob/main/packages/geo/catalog-info.yaml
18
+ backstage.io/techdocs-ref: dir:.
19
+ package/version: 0.3.0
20
+ github.com/project-slug: gohypergiant/standard-toolkit
21
+ links:
22
+ - url: https://github.com/gohypergiant/standard-toolkit/tree/main/packages/geo
23
+ title: Documentation
24
+ icon: docs
25
+ type: documentation
26
+ tags:
27
+ - dev-tk
28
+ - tooling
29
+ spec:
30
+ type: library
31
+ lifecycle: production
32
+ owner: group:default/pathfinder
33
+ dependsOn:
34
+ - component:accelint_constellation-tracker
35
+ - component:accelint_typescript-config
36
+ - component:accelint_vitest-config
@@ -18,6 +18,7 @@ const freezeCoordinate = (errors, to, raw, valid) => Object.freeze({
18
18
  ddm: (format) => to(systemDegreesDecimalMinutes, format),
19
19
  dms: (format) => to(systemDegreesMinutesSeconds, format),
20
20
  mgrs: (format) => to(systemMGRS, format),
21
+ utm: (format) => to(systemUTM, format),
21
22
  errors,
22
23
  raw,
23
24
  valid
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/coordinates/coordinate.ts"],"names":["errors","key"],"mappings":"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","file":"coordinate.js","sourcesContent":["/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { systemDecimalDegrees } from './latlon/decimal-degrees/system';\nimport { systemDegreesDecimalMinutes } from './latlon/degrees-decimal-minutes/system';\nimport { systemDegreesMinutesSeconds } from './latlon/degrees-minutes-seconds/system';\nimport {\n type Axes,\n type Errors,\n FORMATS_DEFAULT,\n type Format,\n SYMBOLS,\n} from './latlon/internal';\nimport {\n type CoordinateCache,\n createCache,\n} from './latlon/internal/create-cache';\nimport { systemMGRS } from './mgrs/system';\nimport { systemUTM } from './utm/system';\nimport type { CoordinateSystem } from './latlon/internal/coordinate-system';\nimport type { Tokens } from './latlon/internal/lexer';\n\ntype Coordinate = {\n /** {@interitDoc Formatter} */\n dd: Formatter;\n /** {@interitDoc Formatter} */\n ddm: Formatter;\n /** {@interitDoc Formatter} */\n dms: Formatter;\n /** {@interitDoc Formatter} */\n mgrs: Formatter;\n /** {@interitDoc Formatter} */\n utm: Formatter;\n errors: string[];\n raw: CoordinateInternalValue;\n valid: boolean;\n};\n\n// biome-ignore lint/style/useNamingConvention: consistency with Axes type\ntype CoordinateInternalValue = { LAT: number; LON: number };\n\n/**\n * Output a string value of a coordinate using an available system. The\n * original value is preserved without conversion to an internal\n * representation - Decimal Degrees - to prevent the possibility of\n * rounding errors. All alternative values are computed from a common\n * internal value to reduce complexity.\n *\n * @link https://en.wikipedia.org/wiki/Coordinate_system\n *\n * @remarks\n * pure function\n *\n * @example\n * const create = createCoordinate(coordinateSystems.dd, 'LATLON')\n * const coord = create('89.765432109 / 123.456789012')\n *\n * // honors the instantiation format 'LATLON'\n * coord.dd() === '89.765432109 N / 123.456789012 E'\n * coord.ddm() === '89 45.92592654 N / 123 27.40734072 E'\n * coord.dms() === '89 45 55.5555924 N / 123 27 24.4404432 E'\n *\n * // change format to 'LONLAT'\n * coord.dms('LONLAT') === '123 27 24.4404432 E / 89 45 55.5555924 N'\n */\ntype Formatter = (f?: Format) => string;\n\ntype ToFloatArg = Parameters<CoordinateSystem['toFloat']>[0];\n\ntype OutputCache = Record<keyof typeof coordinateSystems, CoordinateCache>;\n\nexport const coordinateSystems = Object.freeze({\n dd: systemDecimalDegrees,\n ddm: systemDegreesDecimalMinutes,\n dms: systemDegreesMinutesSeconds,\n mgrs: systemMGRS,\n utm: systemUTM,\n} as const);\n\nconst freezeCoordinate = (\n errors: Coordinate['errors'],\n to: (s?: CoordinateSystem, f?: Format) => string,\n raw: CoordinateInternalValue,\n valid: Coordinate['valid'],\n) =>\n Object.freeze({\n dd: (format?: Format) => to(systemDecimalDegrees, format),\n ddm: (format?: Format) => to(systemDegreesDecimalMinutes, format),\n dms: (format?: Format) => to(systemDegreesMinutesSeconds, format),\n mgrs: (format?: Format) => to(systemMGRS, format),\n errors,\n raw,\n valid,\n } as Coordinate);\n\n/**\n * Create a coordinate object enabling: lexing, parsing, validation, and\n * formatting in alternative systems and formats. The system and format will be\n * used for validation and eventually for output as defaults if no alternatives\n * are provided.\n *\n * @param initSystem dd, ddm, dms, mgrs, or utm of coordinateSystems\n *\n * @remarks\n * pure function\n *\n * @example\n * const create = createCoordinate(coordinateSystems.dd, 'LATLON')\n * const create = createCoordinate(coordinateSystems.ddm, 'LONLAT')\n */\nexport function createCoordinate(\n initSystem: CoordinateSystem = coordinateSystems.dd,\n initFormat: Format = FORMATS_DEFAULT,\n) {\n return (input: string) => {\n let tokens: Tokens;\n let errors: Errors;\n\n try {\n [tokens, errors] = initSystem.parse(initFormat, input);\n\n if (errors.length) {\n throw errors;\n }\n } catch (errors) {\n return freezeCoordinate(\n errors as Coordinate['errors'],\n () => '',\n {} as CoordinateInternalValue,\n false,\n );\n }\n\n // start with the original value for the original system in the original format\n // other values will be computed as needed and cached per request\n const cachedValues = {\n [initSystem.name]: createCache(\n initFormat,\n // because mgrs doesn't have two formats: LATLON v LONLAT\n initSystem.name === systemMGRS.name ? input : tokens.join(' '),\n ),\n } as OutputCache;\n\n // Create the \"internal\" representation - Decimal Degrees - for\n // consistency and ease of computation; all systems expect to\n // start from a common starting point to reduce complexity.\n const raw = Object.fromEntries([\n [\n initFormat.slice(0, 3),\n initSystem.toFloat(\n tokens.slice(0, tokens.indexOf(SYMBOLS.DIVIDER)) as ToFloatArg,\n ),\n ],\n [\n initFormat.slice(3),\n initSystem.toFloat(\n tokens.slice(1 + tokens.indexOf(SYMBOLS.DIVIDER)) as ToFloatArg,\n ),\n ],\n ]) as CoordinateInternalValue;\n\n function to(\n system: CoordinateSystem = initSystem,\n format: Format = initFormat,\n ) {\n const key = system.name as keyof typeof coordinateSystems;\n\n if (!cachedValues[key]?.[format]) {\n // cache \"miss\" - fill the missing value in the cache before returning it\n\n // update the cache to include the newly computed value\n cachedValues[key] = {\n ...cachedValues[key],\n // use the Format to build the object, correctly pairing the halves of\n // the coordinate value with their labels\n [format]: system.toFormat(\n format,\n ([format.slice(0, 3), format.slice(3)] as Axes[]).map(\n (key) => raw[key],\n ) as [number, number],\n ),\n };\n }\n\n return cachedValues[key][format];\n }\n\n return freezeCoordinate([] as Coordinate['errors'], to, raw, true);\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/coordinates/coordinate.ts"],"names":["errors","key"],"mappings":"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","file":"coordinate.js","sourcesContent":["/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { systemDecimalDegrees } from './latlon/decimal-degrees/system';\nimport { systemDegreesDecimalMinutes } from './latlon/degrees-decimal-minutes/system';\nimport { systemDegreesMinutesSeconds } from './latlon/degrees-minutes-seconds/system';\nimport {\n type Axes,\n type Errors,\n FORMATS_DEFAULT,\n type Format,\n SYMBOLS,\n} from './latlon/internal';\nimport {\n type CoordinateCache,\n createCache,\n} from './latlon/internal/create-cache';\nimport { systemMGRS } from './mgrs/system';\nimport { systemUTM } from './utm/system';\nimport type { CoordinateSystem } from './latlon/internal/coordinate-system';\nimport type { Tokens } from './latlon/internal/lexer';\n\ntype Coordinate = {\n /** {@interitDoc Formatter} */\n dd: Formatter;\n /** {@interitDoc Formatter} */\n ddm: Formatter;\n /** {@interitDoc Formatter} */\n dms: Formatter;\n /** {@interitDoc Formatter} */\n mgrs: Formatter;\n /** {@interitDoc Formatter} */\n utm: Formatter;\n errors: string[];\n raw: CoordinateInternalValue;\n valid: boolean;\n};\n\n// biome-ignore lint/style/useNamingConvention: consistency with Axes type\ntype CoordinateInternalValue = { LAT: number; LON: number };\n\n/**\n * Output a string value of a coordinate using an available system. The\n * original value is preserved without conversion to an internal\n * representation - Decimal Degrees - to prevent the possibility of\n * rounding errors. All alternative values are computed from a common\n * internal value to reduce complexity.\n *\n * @link https://en.wikipedia.org/wiki/Coordinate_system\n *\n * @remarks\n * pure function\n *\n * @example\n * const create = createCoordinate(coordinateSystems.dd, 'LATLON')\n * const coord = create('89.765432109 / 123.456789012')\n *\n * // honors the instantiation format 'LATLON'\n * coord.dd() === '89.765432109 N / 123.456789012 E'\n * coord.ddm() === '89 45.92592654 N / 123 27.40734072 E'\n * coord.dms() === '89 45 55.5555924 N / 123 27 24.4404432 E'\n *\n * // change format to 'LONLAT'\n * coord.dms('LONLAT') === '123 27 24.4404432 E / 89 45 55.5555924 N'\n */\ntype Formatter = (f?: Format) => string;\n\ntype ToFloatArg = Parameters<CoordinateSystem['toFloat']>[0];\n\ntype OutputCache = Record<keyof typeof coordinateSystems, CoordinateCache>;\n\nexport const coordinateSystems = Object.freeze({\n dd: systemDecimalDegrees,\n ddm: systemDegreesDecimalMinutes,\n dms: systemDegreesMinutesSeconds,\n mgrs: systemMGRS,\n utm: systemUTM,\n} as const);\n\nconst freezeCoordinate = (\n errors: Coordinate['errors'],\n to: (s?: CoordinateSystem, f?: Format) => string,\n raw: CoordinateInternalValue,\n valid: Coordinate['valid'],\n) =>\n Object.freeze({\n dd: (format?: Format) => to(systemDecimalDegrees, format),\n ddm: (format?: Format) => to(systemDegreesDecimalMinutes, format),\n dms: (format?: Format) => to(systemDegreesMinutesSeconds, format),\n mgrs: (format?: Format) => to(systemMGRS, format),\n utm: (format?: Format) => to(systemUTM, format),\n errors,\n raw,\n valid,\n } as Coordinate);\n\n/**\n * Create a coordinate object enabling: lexing, parsing, validation, and\n * formatting in alternative systems and formats. The system and format will be\n * used for validation and eventually for output as defaults if no alternatives\n * are provided.\n *\n * @param initSystem dd, ddm, dms, mgrs, or utm of coordinateSystems\n *\n * @remarks\n * pure function\n *\n * @example\n * const create = createCoordinate(coordinateSystems.dd, 'LATLON')\n * const create = createCoordinate(coordinateSystems.ddm, 'LONLAT')\n */\nexport function createCoordinate(\n initSystem: CoordinateSystem = coordinateSystems.dd,\n initFormat: Format = FORMATS_DEFAULT,\n) {\n return (input: string) => {\n let tokens: Tokens;\n let errors: Errors;\n\n try {\n [tokens, errors] = initSystem.parse(initFormat, input);\n\n if (errors.length) {\n throw errors;\n }\n } catch (errors) {\n return freezeCoordinate(\n errors as Coordinate['errors'],\n () => '',\n {} as CoordinateInternalValue,\n false,\n );\n }\n\n // start with the original value for the original system in the original format\n // other values will be computed as needed and cached per request\n const cachedValues = {\n [initSystem.name]: createCache(\n initFormat,\n // because mgrs doesn't have two formats: LATLON v LONLAT\n initSystem.name === systemMGRS.name ? input : tokens.join(' '),\n ),\n } as OutputCache;\n\n // Create the \"internal\" representation - Decimal Degrees - for\n // consistency and ease of computation; all systems expect to\n // start from a common starting point to reduce complexity.\n const raw = Object.fromEntries([\n [\n initFormat.slice(0, 3),\n initSystem.toFloat(\n tokens.slice(0, tokens.indexOf(SYMBOLS.DIVIDER)) as ToFloatArg,\n ),\n ],\n [\n initFormat.slice(3),\n initSystem.toFloat(\n tokens.slice(1 + tokens.indexOf(SYMBOLS.DIVIDER)) as ToFloatArg,\n ),\n ],\n ]) as CoordinateInternalValue;\n\n function to(\n system: CoordinateSystem = initSystem,\n format: Format = initFormat,\n ) {\n const key = system.name as keyof typeof coordinateSystems;\n\n if (!cachedValues[key]?.[format]) {\n // cache \"miss\" - fill the missing value in the cache before returning it\n\n // update the cache to include the newly computed value\n cachedValues[key] = {\n ...cachedValues[key],\n // use the Format to build the object, correctly pairing the halves of\n // the coordinate value with their labels\n [format]: system.toFormat(\n format,\n ([format.slice(0, 3), format.slice(3)] as Axes[]).map(\n (key) => raw[key],\n ) as [number, number],\n ),\n };\n }\n\n return cachedValues[key][format];\n }\n\n return freezeCoordinate([] as Coordinate['errors'], to, raw, true);\n };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { FormatOptions } from '../internal/format.js';
2
+
3
+ declare const formatDecimalDegrees: (coordinates: [number, number], config?: FormatOptions) => string;
4
+
5
+ export { formatDecimalDegrees };
@@ -0,0 +1,10 @@
1
+ import { createFormatter } from '../internal/format.js';
2
+
3
+ const toDecimalDegrees = (num) => {
4
+ return `${num.toFixed(6)}\xB0`;
5
+ };
6
+ const formatDecimalDegrees = createFormatter(toDecimalDegrees);
7
+
8
+ export { formatDecimalDegrees };
9
+ //# sourceMappingURL=formatter.js.map
10
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/coordinates/latlon/decimal-degrees/formatter.ts"],"names":[],"mappings":";;AAcA,MAAM,gBAAA,GAAmB,CAAC,GAAA,KAAwB;AAChD,EAAA,OAAO,CAAA,EAAG,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAC,CAAA,IAAA,CAAA;AAC1B,CAAA;AAEO,MAAM,oBAAA,GAAuB,gBAAgB,gBAAgB","file":"formatter.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { createFormatter } from '../internal/format';\n\nconst toDecimalDegrees = (num: number): string => {\n return `${num.toFixed(6)}°`;\n};\n\nexport const formatDecimalDegrees = createFormatter(toDecimalDegrees);\n"]}
@@ -0,0 +1,5 @@
1
+ import { FormatOptions } from '../internal/format.js';
2
+
3
+ declare const formatDegreesDecimalMinutes: (coordinates: [number, number], config?: FormatOptions) => string;
4
+
5
+ export { formatDegreesDecimalMinutes };
@@ -0,0 +1,14 @@
1
+ import { createFormatter } from '../internal/format.js';
2
+
3
+ const toDegreesDecimalMinutes = (num) => {
4
+ const degrees = Math.floor(Math.abs(num));
5
+ const minutes = ((Math.abs(num) - degrees) * 60).toFixed(4);
6
+ return `${degrees}\xB0 ${minutes}'`;
7
+ };
8
+ const formatDegreesDecimalMinutes = createFormatter(
9
+ toDegreesDecimalMinutes
10
+ );
11
+
12
+ export { formatDegreesDecimalMinutes };
13
+ //# sourceMappingURL=formatter.js.map
14
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/coordinates/latlon/degrees-decimal-minutes/formatter.ts"],"names":[],"mappings":";;AAcA,MAAM,uBAAA,GAA0B,CAAC,GAAA,KAAwB;AACvD,EAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,GAAG,CAAC,CAAA;AACxC,EAAA,MAAM,OAAA,GAAA,CAAA,CAAY,KAAK,GAAA,CAAI,GAAG,IAAI,OAAA,IAAW,EAAA,EAAI,QAAQ,CAAC,CAAA;AAE1D,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,KAAA,EAAK,OAAO,CAAA,CAAA,CAAA;AAC/B,CAAA;AAEO,MAAM,2BAAA,GAA8B,eAAA;AAAA,EACzC;AACF","file":"formatter.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { createFormatter } from '../internal/format';\n\nconst toDegreesDecimalMinutes = (num: number): string => {\n const degrees = Math.floor(Math.abs(num));\n const minutes = ((Math.abs(num) - degrees) * 60).toFixed(4);\n\n return `${degrees}° ${minutes}'`;\n};\n\nexport const formatDegreesDecimalMinutes = createFormatter(\n toDegreesDecimalMinutes,\n);\n"]}
@@ -0,0 +1,5 @@
1
+ import { FormatOptions } from '../internal/format.js';
2
+
3
+ declare const formatDegreesMinutesSeconds: (coordinates: [number, number], config?: FormatOptions) => string;
4
+
5
+ export { formatDegreesMinutesSeconds };
@@ -0,0 +1,16 @@
1
+ import { createFormatter } from '../internal/format.js';
2
+
3
+ const toDegreesMinutesSeconds = (num) => {
4
+ const degrees = Math.floor(Math.abs(num));
5
+ const minutesFull = (Math.abs(num) - degrees) * 60;
6
+ const minutes = Math.floor(minutesFull);
7
+ const seconds = ((minutesFull - minutes) * 60).toFixed(2);
8
+ return `${degrees}\xB0 ${minutes}' ${seconds}\u2033`;
9
+ };
10
+ const formatDegreesMinutesSeconds = createFormatter(
11
+ toDegreesMinutesSeconds
12
+ );
13
+
14
+ export { formatDegreesMinutesSeconds };
15
+ //# sourceMappingURL=formatter.js.map
16
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/coordinates/latlon/degrees-minutes-seconds/formatter.ts"],"names":[],"mappings":";;AAcA,MAAM,uBAAA,GAA0B,CAAC,GAAA,KAAwB;AACvD,EAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,GAAG,CAAC,CAAA;AACxC,EAAA,MAAM,WAAA,GAAA,CAAe,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,OAAA,IAAW,EAAA;AAChD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA;AACtC,EAAA,MAAM,OAAA,GAAA,CAAA,CAAY,WAAA,GAAc,OAAA,IAAW,EAAA,EAAI,QAAQ,CAAC,CAAA;AAExD,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,KAAA,EAAK,OAAO,KAAK,OAAO,CAAA,MAAA,CAAA;AAC3C,CAAA;AAEO,MAAM,2BAAA,GAA8B,eAAA;AAAA,EACzC;AACF","file":"formatter.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { createFormatter } from '../internal/format';\n\nconst toDegreesMinutesSeconds = (num: number): string => {\n const degrees = Math.floor(Math.abs(num));\n const minutesFull = (Math.abs(num) - degrees) * 60;\n const minutes = Math.floor(minutesFull);\n const seconds = ((minutesFull - minutes) * 60).toFixed(2);\n\n return `${degrees}° ${minutes}' ${seconds}″`;\n};\n\nexport const formatDegreesMinutesSeconds = createFormatter(\n toDegreesMinutesSeconds,\n);\n"]}
@@ -0,0 +1,9 @@
1
+ interface FormatOptions {
2
+ prefix: string;
3
+ suffix: string;
4
+ separator: string;
5
+ withOrdinal?: boolean;
6
+ }
7
+ declare const createFormatter: (fn: (coord: number) => string) => (coordinates: [number, number], config?: FormatOptions) => string;
8
+
9
+ export { type FormatOptions, createFormatter };
@@ -0,0 +1,17 @@
1
+ import { getOrdinal } from './ordinal.js';
2
+
3
+ const createFormatter = (fn) => (coordinates, config) => {
4
+ const [latitude, longitude] = coordinates;
5
+ const latOrdinal = `${config?.withOrdinal ? ` ${getOrdinal(latitude, true)}` : ""}`;
6
+ const lonOrdinal = `${config?.withOrdinal ? ` ${getOrdinal(longitude, false)}` : ""}`;
7
+ const lat = fn(latitude);
8
+ const lon = fn(longitude);
9
+ const prefix = config?.prefix ?? "";
10
+ const suffix = config?.suffix ?? "";
11
+ const separator = config?.separator ?? ", ";
12
+ return `${prefix}${lat}${latOrdinal}${separator}${lon}${lonOrdinal}${suffix}`;
13
+ };
14
+
15
+ export { createFormatter };
16
+ //# sourceMappingURL=format.js.map
17
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/coordinates/latlon/internal/format.ts"],"names":[],"mappings":";;AAuBO,MAAM,eAAA,GACX,CAAC,EAAA,KACD,CAAC,aAA+B,MAAA,KAAmC;AACjE,EAAA,MAAM,CAAC,QAAA,EAAU,SAAS,CAAA,GAAI,WAAA;AAC9B,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,MAAA,EAAQ,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,QAAA,EAAU,IAAI,CAAC,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AACjF,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,MAAA,EAAQ,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,SAAA,EAAW,KAAK,CAAC,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AACnF,EAAA,MAAM,GAAA,GAAM,GAAG,QAAQ,CAAA;AACvB,EAAA,MAAM,GAAA,GAAM,GAAG,SAAS,CAAA;AACxB,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,EAAA;AACjC,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,EAAA;AACjC,EAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,IAAA;AAEvC,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,GAAG,CAAA,EAAG,UAAU,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,CAAA,EAAG,UAAU,GAAG,MAAM,CAAA,CAAA;AAC7E","file":"format.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// __private-exports\n\nimport { getOrdinal } from './ordinal';\n\nexport interface FormatOptions {\n prefix: string;\n suffix: string;\n separator: string;\n withOrdinal?: boolean;\n}\n\nexport const createFormatter =\n (fn: (coord: number) => string) =>\n (coordinates: [number, number], config?: FormatOptions): string => {\n const [latitude, longitude] = coordinates;\n const latOrdinal = `${config?.withOrdinal ? ` ${getOrdinal(latitude, true)}` : ''}`;\n const lonOrdinal = `${config?.withOrdinal ? ` ${getOrdinal(longitude, false)}` : ''}`;\n const lat = fn(latitude);\n const lon = fn(longitude);\n const prefix = config?.prefix ?? '';\n const suffix = config?.suffix ?? '';\n const separator = config?.separator ?? ', ';\n\n return `${prefix}${lat}${latOrdinal}${separator}${lon}${lonOrdinal}${suffix}`;\n };\n"]}
@@ -0,0 +1,3 @@
1
+ declare const getOrdinal: (num: number, isLatitude: boolean) => string;
2
+
3
+ export { getOrdinal };
@@ -0,0 +1,10 @@
1
+ const getOrdinal = (num, isLatitude) => {
2
+ if (isLatitude) {
3
+ return num >= 0 ? "N" : "S";
4
+ }
5
+ return num >= 0 ? "E" : "W";
6
+ };
7
+
8
+ export { getOrdinal };
9
+ //# sourceMappingURL=ordinal.js.map
10
+ //# sourceMappingURL=ordinal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/coordinates/latlon/internal/ordinal.ts"],"names":[],"mappings":"AAcO,MAAM,UAAA,GAAa,CAAC,GAAA,EAAa,UAAA,KAAgC;AACtE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,GAAA,IAAO,IAAI,GAAA,GAAM,GAAA;AAAA,EAC1B;AACA,EAAA,OAAO,GAAA,IAAO,IAAI,GAAA,GAAM,GAAA;AAC1B","file":"ordinal.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// __private-exports\n\nexport const getOrdinal = (num: number, isLatitude: boolean): string => {\n if (isLatitude) {\n return num >= 0 ? 'N' : 'S';\n }\n return num >= 0 ? 'E' : 'W';\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { MGRS } from '@ngageoint/mgrs-js';
1
+ import Mgrs from 'geodesy/mgrs';
2
2
  import { parse } from '../latlon/internal/parse.js';
3
3
  import { violation } from '../latlon/internal/violation.js';
4
4
 
@@ -32,8 +32,8 @@ function detailedErrors(input) {
32
32
  }
33
33
  function parseMGRS(_format, input) {
34
34
  try {
35
- const point = MGRS.parse(input).toPoint();
36
- return parse(`${point.getLatitude()} / ${point.getLongitude()}`, "LATLON");
35
+ const point = Mgrs.parse(input).toUtm().toLatLon();
36
+ return parse(`${point.lat} / ${point.lon}`, "LATLON");
37
37
  } catch (_e) {
38
38
  return detailedErrors(input);
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/coordinates/mgrs/parser.ts"],"names":[],"mappings":";;;;AAkBA,MAAM,aAAA,GACJ,iFAAA;AAEF,MAAM,KAAA,GAAQ,CAAC,OAAA,KACb;AAAA,EACE,EAAC;AAAA,EACD,CAAC,CAAA,EAAG,SAAA,CAAU,OAAO,CAAC,CAAA,iCAAA,CAAmC;AAC3D,CAAA;AAEF,SAAS,eAAe,KAAA,EAAe;AACrC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,MAAM,mBAAmB,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,MAAM,KAAK,CAAA,GAAA,CAC/B,MAAM,IAAA,EAAK,CAAE,QAAQ,MAAA,EAAQ,GAAG,EAAE,KAAA,CAAM,aAAa,KAAK,EAAC,EAC3D,MAAM,CAAC,CAAA;AAET,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAM,EAAA,IAAM,CAAC,MAAM,CAAA,EAAG;AACjC,IAAA,OAAO,KAAA;AAAA,MACL,4BAA4B,GAAG,CAAA,gCAAA;AAAA,KACjC;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA,EAAG;AAC7B,IAAA,OAAO,KAAA;AAAA,MACL,iCAAiC,GAAG,CAAA,gCAAA;AAAA,KACtC;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,iBAAA,CAAkB,IAAA,CAAK,GAAG,CAAA,EAAG;AAChC,IAAA,OAAO,KAAA,CAAM,CAAA,sCAAA,EAAyC,GAAG,CAAA,OAAA,CAAS,CAAA;AAAA,EACpE;AAEA,EAAA,IAAI,EAAE,QAAQ,KAAA,IAAS,CAAC,OAAO,CAAA,IAAK,CAAC,QAAQ,CAAA,CAAA,EAAI;AAC/C,IAAA,OAAO,KAAA,CAAM,+BAA+B,CAAC,IAAA,EAAM,KAAK,CAAA,CAAE,IAAA,EAAM,CAAA,OAAA,CAAS,CAAA;AAAA,EAC3E;AAEA,EAAA,OAAO,MAAM,2BAA2B,CAAA;AAC1C;AAGO,SAAS,SAAA,CAAU,SAAc,KAAA,EAAe;AACrD,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,EAAE,OAAA,EAAQ;AAExC,IAAA,OAAO,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,WAAA,EAAa,MAAM,KAAA,CAAM,YAAA,EAAc,CAAA,CAAA,EAAI,QAAQ,CAAA;AAAA,EAC3E,SAAS,EAAA,EAAI;AACX,IAAA,OAAO,eAAe,KAAK,CAAA;AAAA,EAC7B;AACF","file":"parser.js","sourcesContent":["/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { MGRS } from '@ngageoint/mgrs-js';\nimport { type ParseResults, parse } from '../latlon/internal/parse';\nimport { violation } from '../latlon/internal/violation';\n\ntype Match = [string, string, string, string, string];\n\nconst PATTERN_PARTS =\n /^((?:..?)?)(\\w?)\\s*((?:\\w{2})?)\\s*(?:(\\d+(?:\\.\\d*)?)?)\\s*(?:(\\d+(?:\\.\\d*)?)?)$/i;\n\nconst error = (message: string) =>\n [\n [],\n [`${violation(message)}; expected format DDZ AA DDD DDD.`],\n ] as ParseResults;\n\nfunction detailedErrors(input: string) {\n if (!input) {\n return error('No input provided');\n }\n\n const [utm, bnd, hkm, east, north] = (\n input.trim().replace(/\\s+/g, ' ').match(PATTERN_PARTS) ?? []\n ).slice(1) as Match;\n\n if (!utm || +utm > 60 || +utm < 1) {\n return error(\n `Invalid UTM zone number (${utm}) found in grid zone designation`,\n );\n }\n\n if (!/[C-HJ-NP-X]/i.test(bnd)) {\n return error(\n `Invalid Latitude band letter (${bnd}) found in grid zone designation`,\n );\n }\n\n if (!/^[A-HJ-NP-Z]*$/i.test(hkm)) {\n return error(`Invalid 100K m square identification (${hkm}) found`);\n }\n\n if (!(east && north && +east > 0 && +north > 0)) {\n return error(`Invalid numerical location (${[east, north].join()}) found`);\n }\n\n return error('Uncaught error condition.');\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Format is unused\nexport function parseMGRS(_format: any, input: string) {\n try {\n const point = MGRS.parse(input).toPoint();\n\n return parse(`${point.getLatitude()} / ${point.getLongitude()}`, 'LATLON');\n } catch (_e) {\n return detailedErrors(input);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/coordinates/mgrs/parser.ts"],"names":[],"mappings":";;;;AAkBA,MAAM,aAAA,GACJ,iFAAA;AAEF,MAAM,KAAA,GAAQ,CAAC,OAAA,KACb;AAAA,EACE,EAAC;AAAA,EACD,CAAC,CAAA,EAAG,SAAA,CAAU,OAAO,CAAC,CAAA,iCAAA,CAAmC;AAC3D,CAAA;AAEF,SAAS,eAAe,KAAA,EAAe;AACrC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,MAAM,mBAAmB,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,CAAC,KAAK,GAAA,EAAK,GAAA,EAAK,MAAM,KAAK,CAAA,GAAA,CAC/B,MAAM,IAAA,EAAK,CAAE,QAAQ,MAAA,EAAQ,GAAG,EAAE,KAAA,CAAM,aAAa,KAAK,EAAC,EAC3D,MAAM,CAAC,CAAA;AAET,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAM,EAAA,IAAM,CAAC,MAAM,CAAA,EAAG;AACjC,IAAA,OAAO,KAAA;AAAA,MACL,4BAA4B,GAAG,CAAA,gCAAA;AAAA,KACjC;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA,EAAG;AAC7B,IAAA,OAAO,KAAA;AAAA,MACL,iCAAiC,GAAG,CAAA,gCAAA;AAAA,KACtC;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,iBAAA,CAAkB,IAAA,CAAK,GAAG,CAAA,EAAG;AAChC,IAAA,OAAO,KAAA,CAAM,CAAA,sCAAA,EAAyC,GAAG,CAAA,OAAA,CAAS,CAAA;AAAA,EACpE;AAEA,EAAA,IAAI,EAAE,QAAQ,KAAA,IAAS,CAAC,OAAO,CAAA,IAAK,CAAC,QAAQ,CAAA,CAAA,EAAI;AAC/C,IAAA,OAAO,KAAA,CAAM,+BAA+B,CAAC,IAAA,EAAM,KAAK,CAAA,CAAE,IAAA,EAAM,CAAA,OAAA,CAAS,CAAA;AAAA,EAC3E;AAEA,EAAA,OAAO,MAAM,2BAA2B,CAAA;AAC1C;AAGO,SAAS,SAAA,CAAU,SAAc,KAAA,EAAe;AACrD,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,CAAE,KAAA,GAAQ,QAAA,EAAS;AAEjD,IAAA,OAAO,KAAA,CAAM,GAAG,KAAA,CAAM,GAAG,MAAM,KAAA,CAAM,GAAG,IAAI,QAAQ,CAAA;AAAA,EACtD,SAAS,EAAA,EAAI;AACX,IAAA,OAAO,eAAe,KAAK,CAAA;AAAA,EAC7B;AACF","file":"parser.js","sourcesContent":["/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport Mgrs from 'geodesy/mgrs';\nimport { type ParseResults, parse } from '../latlon/internal/parse';\nimport { violation } from '../latlon/internal/violation';\n\ntype Match = [string, string, string, string, string];\n\nconst PATTERN_PARTS =\n /^((?:..?)?)(\\w?)\\s*((?:\\w{2})?)\\s*(?:(\\d+(?:\\.\\d*)?)?)\\s*(?:(\\d+(?:\\.\\d*)?)?)$/i;\n\nconst error = (message: string) =>\n [\n [],\n [`${violation(message)}; expected format DDZ AA DDD DDD.`],\n ] as ParseResults;\n\nfunction detailedErrors(input: string) {\n if (!input) {\n return error('No input provided');\n }\n\n const [utm, bnd, hkm, east, north] = (\n input.trim().replace(/\\s+/g, ' ').match(PATTERN_PARTS) ?? []\n ).slice(1) as Match;\n\n if (!utm || +utm > 60 || +utm < 1) {\n return error(\n `Invalid UTM zone number (${utm}) found in grid zone designation`,\n );\n }\n\n if (!/[C-HJ-NP-X]/i.test(bnd)) {\n return error(\n `Invalid Latitude band letter (${bnd}) found in grid zone designation`,\n );\n }\n\n if (!/^[A-HJ-NP-Z]*$/i.test(hkm)) {\n return error(`Invalid 100K m square identification (${hkm}) found`);\n }\n\n if (!(east && north && +east > 0 && +north > 0)) {\n return error(`Invalid numerical location (${[east, north].join()}) found`);\n }\n\n return error('Uncaught error condition.');\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Format is unused\nexport function parseMGRS(_format: any, input: string) {\n try {\n const point = Mgrs.parse(input).toUtm().toLatLon();\n\n return parse(`${point.lat} / ${point.lon}`, 'LATLON');\n } catch (_e) {\n return detailedErrors(input);\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
- import { Point } from '@ngageoint/grid-js';
2
- import { MGRS } from '@ngageoint/mgrs-js';
1
+ import { LatLon } from 'geodesy/mgrs';
3
2
  import { SYMBOL_PATTERNS } from '../latlon/internal/index.js';
4
3
  import { parseMGRS } from './parser.js';
5
4
 
@@ -15,7 +14,8 @@ const systemMGRS = {
15
14
  [format.slice(0, 3), left],
16
15
  [format.slice(3), right]
17
16
  ]);
18
- return MGRS.from(Point.point(LON, LAT)).toString();
17
+ const latlon = new LatLon(LAT, LON);
18
+ return latlon.toUtm().toMgrs().toString();
19
19
  }
20
20
  };
21
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/coordinates/mgrs/system.ts"],"names":[],"mappings":";;;;;AAmBO,MAAM,UAAA,GAA+B;AAAA,EAC1C,IAAA,EAAM,gCAAA;AAAA,EAEN,KAAA,EAAO,SAAA;AAAA,EAEP,QAAQ,GAAA,EAAK;AACX,IAAA,MAAM,CAAC,GAAA,EAAK,IAAI,CAAA,GAAI,GAAA;AAEpB,IAAA,OACE,MAAA,CAAO,WAAW,GAAG,CAAA,IACpB,gBAAgB,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA,GAAI,EAAA,GAAK,CAAA,CAAA;AAAA,EAEzD,CAAA;AAAA,EAEA,QAAA,CAAS,MAAA,EAAgB,CAAC,IAAA,EAAM,KAAK,CAAA,EAAqB;AACxD,IAAA,MAAM,EAAE,GAAA,EAAK,GAAA,EAAI,GAAI,OAAO,WAAA,CAAY;AAAA,MACtC,CAAC,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,GAAG,IAAI,CAAA;AAAA,MACzB,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,GAAG,KAAK;AAAA,KACxB,CAAA;AAED,IAAA,OAAO,IAAA,CAAK,KAAK,KAAA,CAAM,KAAA,CAAM,KAAK,GAAG,CAAC,EAAE,QAAA,EAAS;AAAA,EACnD;AACF","file":"system.js","sourcesContent":["// __private-exports\n/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { Point } from '@ngageoint/grid-js';\nimport { MGRS } from '@ngageoint/mgrs-js';\nimport { type Compass, type Format, SYMBOL_PATTERNS } from '../latlon/internal';\nimport { parseMGRS } from './parser';\nimport type { CoordinateSystem } from '../latlon/internal/coordinate-system';\n\nexport const systemMGRS: CoordinateSystem = {\n name: 'Military Grid Reference System',\n\n parse: parseMGRS,\n\n toFloat(arg) {\n const [num, bear] = arg as [string, Compass];\n\n return (\n Number.parseFloat(num) *\n (SYMBOL_PATTERNS.NEGATIVE_BEARINGS.test(bear) ? -1 : 1)\n );\n },\n\n toFormat(format: Format, [left, right]: [number, number]) {\n const { LAT, LON } = Object.fromEntries([\n [format.slice(0, 3), left],\n [format.slice(3), right],\n ]) as Record<'LAT' | 'LON', number>;\n\n return MGRS.from(Point.point(LON, LAT)).toString();\n },\n};\n"]}
1
+ {"version":3,"sources":["../../../src/coordinates/mgrs/system.ts"],"names":[],"mappings":";;;;AAkBO,MAAM,UAAA,GAA+B;AAAA,EAC1C,IAAA,EAAM,gCAAA;AAAA,EAEN,KAAA,EAAO,SAAA;AAAA,EAEP,QAAQ,GAAA,EAAK;AACX,IAAA,MAAM,CAAC,GAAA,EAAK,IAAI,CAAA,GAAI,GAAA;AAEpB,IAAA,OACE,MAAA,CAAO,WAAW,GAAG,CAAA,IACpB,gBAAgB,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA,GAAI,EAAA,GAAK,CAAA,CAAA;AAAA,EAEzD,CAAA;AAAA,EAEA,QAAA,CAAS,MAAA,EAAgB,CAAC,IAAA,EAAM,KAAK,CAAA,EAAqB;AACxD,IAAA,MAAM,EAAE,GAAA,EAAK,GAAA,EAAI,GAAI,OAAO,WAAA,CAAY;AAAA,MACtC,CAAC,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,GAAG,IAAI,CAAA;AAAA,MACzB,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,GAAG,KAAK;AAAA,KACxB,CAAA;AAED,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,GAAA,EAAK,GAAG,CAAA;AAElC,IAAA,OAAO,MAAA,CAAO,KAAA,EAAM,CAAE,MAAA,GAAS,QAAA,EAAS;AAAA,EAC1C;AACF","file":"system.js","sourcesContent":["// __private-exports\n/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { LatLon } from 'geodesy/mgrs';\nimport { type Compass, type Format, SYMBOL_PATTERNS } from '../latlon/internal';\nimport { parseMGRS } from './parser';\nimport type { CoordinateSystem } from '../latlon/internal/coordinate-system';\n\nexport const systemMGRS: CoordinateSystem = {\n name: 'Military Grid Reference System',\n\n parse: parseMGRS,\n\n toFloat(arg) {\n const [num, bear] = arg as [string, Compass];\n\n return (\n Number.parseFloat(num) *\n (SYMBOL_PATTERNS.NEGATIVE_BEARINGS.test(bear) ? -1 : 1)\n );\n },\n\n toFormat(format: Format, [left, right]: [number, number]) {\n const { LAT, LON } = Object.fromEntries([\n [format.slice(0, 3), left],\n [format.slice(3), right],\n ]) as Record<'LAT' | 'LON', number>;\n\n const latlon = new LatLon(LAT, LON);\n\n return latlon.toUtm().toMgrs().toString();\n },\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { UTM } from '@ngageoint/mgrs-js';
1
+ import Utm from 'geodesy/utm';
2
2
  import { parse } from '../latlon/internal/parse.js';
3
3
  import { violation } from '../latlon/internal/violation.js';
4
4
 
@@ -25,8 +25,9 @@ function detailedErrors(input) {
25
25
  }
26
26
  function parseUTM(_format, input) {
27
27
  try {
28
- const point = UTM.parse(input).toPoint();
29
- return parse(`${point.getLatitude()} / ${point.getLongitude()}`, "LATLON");
28
+ const utm = Utm.parse(input);
29
+ const latlon = utm.toLatLon();
30
+ return parse(`${latlon.lat} / ${latlon.lon}`, "LATLON");
30
31
  } catch (_) {
31
32
  return detailedErrors(input);
32
33
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/coordinates/utm/parser.ts"],"names":[],"mappings":";;;;AAkBA,MAAM,aAAA,GACJ,oEAAA;AAEF,MAAM,KAAA,GAAQ,CAAC,OAAA,KACb;AAAA,EACE,EAAC;AAAA,EACD,CAAC,CAAA,EAAG,SAAA,CAAU,OAAO,CAAC,CAAA,iCAAA,CAAmC;AAC3D,CAAA;AAEF,SAAS,eAAe,KAAA,EAAe;AACrC,EAAA,MAAM,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,KAAK,CAAA,GAAA,CAC5B,MAAM,IAAA,EAAK,CAAE,QAAQ,MAAA,EAAQ,GAAG,EAAE,KAAA,CAAM,aAAa,KAAK,EAAC,EAC3D,MAAM,CAAC,CAAA;AAET,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,OAAO,EAAA,IAAM,CAAC,OAAO,CAAA,EAAG;AACpC,IAAA,OAAO,KAAA,CAAM,CAAA,qBAAA,EAAwB,IAAI,CAAA,OAAA,CAAS,CAAA;AAAA,EACpD;AAEA,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AACvB,IAAA,OAAO,KAAA,CAAM,CAAA,8BAAA,EAAiC,IAAI,CAAA,OAAA,CAAS,CAAA;AAAA,EAC7D;AAEA,EAAA,IAAI,EAAE,IAAA,IAAQ,CAAC,IAAA,IAAQ,CAAA,CAAA,EAAI;AACzB,IAAA,OAAO,KAAA,CAAM,CAAA,wBAAA,EAA2B,IAAA,IAAQ,EAAE,CAAA,OAAA,CAAS,CAAA;AAAA,EAC7D;AAEA,EAAA,IAAI,EAAE,KAAA,IAAS,CAAC,KAAA,IAAS,CAAA,CAAA,EAAI;AAC3B,IAAA,OAAO,KAAA,CAAM,CAAA,yBAAA,EAA4B,KAAA,IAAS,EAAE,CAAA,OAAA,CAAS,CAAA;AAAA,EAC/D;AAEA,EAAA,OAAO,MAAM,2BAA2B,CAAA;AAC1C;AAGO,SAAS,QAAA,CAAS,SAAc,KAAA,EAAe;AACpD,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,KAAK,EAAE,OAAA,EAAQ;AAEvC,IAAA,OAAO,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,WAAA,EAAa,MAAM,KAAA,CAAM,YAAA,EAAc,CAAA,CAAA,EAAI,QAAQ,CAAA;AAAA,EAC3E,SAAS,CAAA,EAAG;AACV,IAAA,OAAO,eAAe,KAAK,CAAA;AAAA,EAC7B;AACF","file":"parser.js","sourcesContent":["/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { UTM } from '@ngageoint/mgrs-js';\nimport { type ParseResults, parse } from '../latlon/internal/parse';\nimport { violation } from '../latlon/internal/violation';\n\ntype Match = [string, string, string, string];\n\nconst PATTERN_PARTS =\n /^((?:..)?)\\s*(\\w?)\\s*(?:(\\d+(?:\\.\\d*)?)?)\\s*(?:(\\d+(?:\\.\\d*)?)?)$/i;\n\nconst error = (message: string) =>\n [\n [],\n [`${violation(message)}; expected format ZZ N|S DDD DDD.`],\n ] as ParseResults;\n\nfunction detailedErrors(input: string) {\n const [zone, band, east, north] = (\n input.trim().replace(/\\s+/g, ' ').match(PATTERN_PARTS) ?? []\n ).slice(1) as Match;\n\n if (!zone || +zone > 60 || +zone < 1) {\n return error(`Invalid Zone number (${zone}) found`);\n }\n\n if (!/[NS]/i.test(band)) {\n return error(`Invalid Latitude band letter (${band}) found`);\n }\n\n if (!(east || +east >= 0)) {\n return error(`Invalid Easting number (${east ?? ''}) found`);\n }\n\n if (!(north || +north >= 0)) {\n return error(`Invalid Northing number (${north ?? ''}) found`);\n }\n\n return error('Uncaught error condition.');\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Format is unused\nexport function parseUTM(_format: any, input: string) {\n try {\n const point = UTM.parse(input).toPoint();\n\n return parse(`${point.getLatitude()} / ${point.getLongitude()}`, 'LATLON');\n } catch (_) {\n return detailedErrors(input);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/coordinates/utm/parser.ts"],"names":[],"mappings":";;;;AAkBA,MAAM,aAAA,GACJ,oEAAA;AAEF,MAAM,KAAA,GAAQ,CAAC,OAAA,KACb;AAAA,EACE,EAAC;AAAA,EACD,CAAC,CAAA,EAAG,SAAA,CAAU,OAAO,CAAC,CAAA,iCAAA,CAAmC;AAC3D,CAAA;AAEF,SAAS,eAAe,KAAA,EAAe;AACrC,EAAA,MAAM,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,KAAK,CAAA,GAAA,CAC5B,MAAM,IAAA,EAAK,CAAE,QAAQ,MAAA,EAAQ,GAAG,EAAE,KAAA,CAAM,aAAa,KAAK,EAAC,EAC3D,MAAM,CAAC,CAAA;AAET,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,OAAO,EAAA,IAAM,CAAC,OAAO,CAAA,EAAG;AACpC,IAAA,OAAO,KAAA,CAAM,CAAA,qBAAA,EAAwB,IAAI,CAAA,OAAA,CAAS,CAAA;AAAA,EACpD;AAEA,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AACvB,IAAA,OAAO,KAAA,CAAM,CAAA,8BAAA,EAAiC,IAAI,CAAA,OAAA,CAAS,CAAA;AAAA,EAC7D;AAEA,EAAA,IAAI,EAAE,IAAA,IAAQ,CAAC,IAAA,IAAQ,CAAA,CAAA,EAAI;AACzB,IAAA,OAAO,KAAA,CAAM,CAAA,wBAAA,EAA2B,IAAA,IAAQ,EAAE,CAAA,OAAA,CAAS,CAAA;AAAA,EAC7D;AAEA,EAAA,IAAI,EAAE,KAAA,IAAS,CAAC,KAAA,IAAS,CAAA,CAAA,EAAI;AAC3B,IAAA,OAAO,KAAA,CAAM,CAAA,yBAAA,EAA4B,KAAA,IAAS,EAAE,CAAA,OAAA,CAAS,CAAA;AAAA,EAC/D;AAEA,EAAA,OAAO,MAAM,2BAA2B,CAAA;AAC1C;AAGO,SAAS,QAAA,CAAS,SAAc,KAAA,EAAe;AACpD,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA;AAC3B,IAAA,MAAM,MAAA,GAAS,IAAI,QAAA,EAAS;AAE5B,IAAA,OAAO,KAAA,CAAM,GAAG,MAAA,CAAO,GAAG,MAAM,MAAA,CAAO,GAAG,IAAI,QAAQ,CAAA;AAAA,EACxD,SAAS,CAAA,EAAG;AACV,IAAA,OAAO,eAAe,KAAK,CAAA;AAAA,EAC7B;AACF","file":"parser.js","sourcesContent":["/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport Utm from 'geodesy/utm';\nimport { type ParseResults, parse } from '../latlon/internal/parse';\nimport { violation } from '../latlon/internal/violation';\n\ntype Match = [string, string, string, string];\n\nconst PATTERN_PARTS =\n /^((?:..)?)\\s*(\\w?)\\s*(?:(\\d+(?:\\.\\d*)?)?)\\s*(?:(\\d+(?:\\.\\d*)?)?)$/i;\n\nconst error = (message: string) =>\n [\n [],\n [`${violation(message)}; expected format ZZ N|S DDD DDD.`],\n ] as ParseResults;\n\nfunction detailedErrors(input: string) {\n const [zone, band, east, north] = (\n input.trim().replace(/\\s+/g, ' ').match(PATTERN_PARTS) ?? []\n ).slice(1) as Match;\n\n if (!zone || +zone > 60 || +zone < 1) {\n return error(`Invalid Zone number (${zone}) found`);\n }\n\n if (!/[NS]/i.test(band)) {\n return error(`Invalid Latitude band letter (${band}) found`);\n }\n\n if (!(east || +east >= 0)) {\n return error(`Invalid Easting number (${east ?? ''}) found`);\n }\n\n if (!(north || +north >= 0)) {\n return error(`Invalid Northing number (${north ?? ''}) found`);\n }\n\n return error('Uncaught error condition.');\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Format is unused\nexport function parseUTM(_format: any, input: string) {\n try {\n const utm = Utm.parse(input);\n const latlon = utm.toLatLon();\n\n return parse(`${latlon.lat} / ${latlon.lon}`, 'LATLON');\n } catch (_) {\n return detailedErrors(input);\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
- import { Point } from '@ngageoint/grid-js';
2
- import { UTM } from '@ngageoint/mgrs-js';
1
+ import { LatLon } from 'geodesy/utm';
3
2
  import { SYMBOL_PATTERNS } from '../latlon/internal/index.js';
4
3
  import { parseUTM } from './parser.js';
5
4
 
@@ -15,7 +14,8 @@ const systemUTM = {
15
14
  [format.slice(0, 3), left],
16
15
  [format.slice(3), right]
17
16
  ]);
18
- return UTM.from(Point.point(LON, LAT)).toString();
17
+ const latlon = new LatLon(LAT, LON);
18
+ return latlon.toUtm().toString();
19
19
  }
20
20
  };
21
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/coordinates/utm/system.ts"],"names":[],"mappings":";;;;;AAmBO,MAAM,SAAA,GAA8B;AAAA,EACzC,IAAA,EAAM,gCAAA;AAAA,EAEN,KAAA,EAAO,QAAA;AAAA,EAEP,QAAQ,GAAA,EAAK;AACX,IAAA,MAAM,CAAC,GAAA,EAAK,IAAI,CAAA,GAAI,GAAA;AAEpB,IAAA,OACE,MAAA,CAAO,WAAW,GAAG,CAAA,IACpB,gBAAgB,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA,GAAI,EAAA,GAAK,CAAA,CAAA;AAAA,EAEzD,CAAA;AAAA,EAEA,QAAA,CAAS,MAAA,EAAgB,CAAC,IAAA,EAAM,KAAK,CAAA,EAAqB;AACxD,IAAA,MAAM,EAAE,GAAA,EAAK,GAAA,EAAI,GAAI,OAAO,WAAA,CAAY;AAAA,MACtC,CAAC,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,GAAG,IAAI,CAAA;AAAA,MACzB,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,GAAG,KAAK;AAAA,KACxB,CAAA;AAED,IAAA,OAAO,GAAA,CAAI,KAAK,KAAA,CAAM,KAAA,CAAM,KAAK,GAAG,CAAC,EAAE,QAAA,EAAS;AAAA,EAClD;AACF","file":"system.js","sourcesContent":["// __private-exports\n/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { Point } from '@ngageoint/grid-js';\nimport { UTM } from '@ngageoint/mgrs-js';\nimport { type Compass, type Format, SYMBOL_PATTERNS } from '../latlon/internal';\nimport { parseUTM } from './parser';\nimport type { CoordinateSystem } from '../latlon/internal/coordinate-system';\n\nexport const systemUTM: CoordinateSystem = {\n name: 'Military Grid Reference System',\n\n parse: parseUTM,\n\n toFloat(arg) {\n const [num, bear] = arg as [string, Compass];\n\n return (\n Number.parseFloat(num) *\n (SYMBOL_PATTERNS.NEGATIVE_BEARINGS.test(bear) ? -1 : 1)\n );\n },\n\n toFormat(format: Format, [left, right]: [number, number]) {\n const { LAT, LON } = Object.fromEntries([\n [format.slice(0, 3), left],\n [format.slice(3), right],\n ]) as Record<'LAT' | 'LON', number>;\n\n return UTM.from(Point.point(LON, LAT)).toString();\n },\n};\n"]}
1
+ {"version":3,"sources":["../../../src/coordinates/utm/system.ts"],"names":[],"mappings":";;;;AAkBO,MAAM,SAAA,GAA8B;AAAA,EACzC,IAAA,EAAM,gCAAA;AAAA,EAEN,KAAA,EAAO,QAAA;AAAA,EAEP,QAAQ,GAAA,EAAK;AACX,IAAA,MAAM,CAAC,GAAA,EAAK,IAAI,CAAA,GAAI,GAAA;AAEpB,IAAA,OACE,MAAA,CAAO,WAAW,GAAG,CAAA,IACpB,gBAAgB,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA,GAAI,EAAA,GAAK,CAAA,CAAA;AAAA,EAEzD,CAAA;AAAA,EAEA,QAAA,CAAS,MAAA,EAAgB,CAAC,IAAA,EAAM,KAAK,CAAA,EAAqB;AACxD,IAAA,MAAM,EAAE,GAAA,EAAK,GAAA,EAAI,GAAI,OAAO,WAAA,CAAY;AAAA,MACtC,CAAC,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,GAAG,IAAI,CAAA;AAAA,MACzB,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,GAAG,KAAK;AAAA,KACxB,CAAA;AAED,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,GAAA,EAAK,GAAG,CAAA;AAClC,IAAA,OAAO,MAAA,CAAO,KAAA,EAAM,CAAE,QAAA,EAAS;AAAA,EACjC;AACF","file":"system.js","sourcesContent":["// __private-exports\n/*\n * Copyright 2024 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { LatLon } from 'geodesy/utm';\nimport { type Compass, type Format, SYMBOL_PATTERNS } from '../latlon/internal';\nimport { parseUTM } from './parser';\nimport type { CoordinateSystem } from '../latlon/internal/coordinate-system';\n\nexport const systemUTM: CoordinateSystem = {\n name: 'Military Grid Reference System',\n\n parse: parseUTM,\n\n toFloat(arg) {\n const [num, bear] = arg as [string, Compass];\n\n return (\n Number.parseFloat(num) *\n (SYMBOL_PATTERNS.NEGATIVE_BEARINGS.test(bear) ? -1 : 1)\n );\n },\n\n toFormat(format: Format, [left, right]: [number, number]) {\n const { LAT, LON } = Object.fromEntries([\n [format.slice(0, 3), left],\n [format.slice(3), right],\n ]) as Record<'LAT' | 'LON', number>;\n\n const latlon = new LatLon(LAT, LON);\n return latlon.toUtm().toString();\n },\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,12 @@
1
1
  export { coordinateSystems, createCoordinate } from './coordinates/coordinate.js';
2
+ export { formatDecimalDegrees } from './coordinates/latlon/decimal-degrees/formatter.js';
2
3
  export { parseDecimalDegrees } from './coordinates/latlon/decimal-degrees/parser.js';
4
+ export { formatDegreesDecimalMinutes } from './coordinates/latlon/degrees-decimal-minutes/formatter.js';
3
5
  export { parseDegreesDecimalMinutes } from './coordinates/latlon/degrees-decimal-minutes/parser.js';
6
+ export { formatDegreesMinutesSeconds } from './coordinates/latlon/degrees-minutes-seconds/formatter.js';
4
7
  export { parseDegreesMinutesSeconds } from './coordinates/latlon/degrees-minutes-seconds/parser.js';
8
+ export { FormatOptions, createFormatter } from './coordinates/latlon/internal/format.js';
9
+ export { getOrdinal } from './coordinates/latlon/internal/ordinal.js';
5
10
  export { parseMGRS } from './coordinates/mgrs/parser.js';
6
11
  export { parseUTM } from './coordinates/utm/parser.js';
7
12
  import './coordinates/latlon/internal/index.js';
package/dist/index.js CHANGED
@@ -1,7 +1,12 @@
1
1
  export { coordinateSystems, createCoordinate } from './coordinates/coordinate.js';
2
+ export { formatDecimalDegrees } from './coordinates/latlon/decimal-degrees/formatter.js';
2
3
  export { parseDecimalDegrees } from './coordinates/latlon/decimal-degrees/parser.js';
4
+ export { formatDegreesDecimalMinutes } from './coordinates/latlon/degrees-decimal-minutes/formatter.js';
3
5
  export { parseDegreesDecimalMinutes } from './coordinates/latlon/degrees-decimal-minutes/parser.js';
6
+ export { formatDegreesMinutesSeconds } from './coordinates/latlon/degrees-minutes-seconds/formatter.js';
4
7
  export { parseDegreesMinutesSeconds } from './coordinates/latlon/degrees-minutes-seconds/parser.js';
8
+ export { createFormatter } from './coordinates/latlon/internal/format.js';
9
+ export { getOrdinal } from './coordinates/latlon/internal/ordinal.js';
5
10
  export { parseMGRS } from './coordinates/mgrs/parser.js';
6
11
  export { parseUTM } from './coordinates/utm/parser.js';
7
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"inputs":{"src/cartesian.ts":{"bytes":1459,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1325,"imports":[],"format":"esm"},"src/patterning.ts":{"bytes":2573,"imports":[],"format":"esm"},"src/coordinates/coordinate.ts":{"bytes":6515,"imports":[],"format":"esm"},"src/coordinates/mgrs/parser.ts":{"bytes":2248,"imports":[],"format":"esm"},"src/coordinates/mgrs/system.ts":{"bytes":1531,"imports":[],"format":"esm"},"src/coordinates/utm/parser.ts":{"bytes":2033,"imports":[],"format":"esm"},"src/coordinates/utm/system.ts":{"bytes":1526,"imports":[],"format":"esm"},"src/coordinates/latlon/decimal-degrees/parser.ts":{"bytes":3062,"imports":[],"format":"esm"},"src/coordinates/latlon/decimal-degrees/system.ts":{"bytes":1449,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-decimal-minutes/parser.ts":{"bytes":3676,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-decimal-minutes/system.ts":{"bytes":1727,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-minutes-seconds/parser.ts":{"bytes":3770,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-minutes-seconds/system.ts":{"bytes":1913,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/coordinate-system.ts":{"bytes":1059,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/create-cache.ts":{"bytes":1421,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/exhaustive-errors.ts":{"bytes":3159,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/in-range.ts":{"bytes":1063,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/index.ts":{"bytes":4481,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/lexer.ts":{"bytes":4016,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/parse-format.ts":{"bytes":3081,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/parse.ts":{"bytes":2350,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/violation.ts":{"bytes":725,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/check-ambiguous.ts":{"bytes":2341,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/check-numbers.ts":{"bytes":1905,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/fix-bearings.ts":{"bytes":3672,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/fix-dividers.ts":{"bytes":2205,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/genome.ts":{"bytes":2501,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/index.ts":{"bytes":3285,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/simpler.ts":{"bytes":1026,"imports":[],"format":"esm"}},"outputs":{"dist/coordinates/latlon/internal/pipes/check-numbers.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2810},"dist/coordinates/latlon/internal/pipes/check-numbers.js":{"imports":[{"path":"../pipes","kind":"import-statement","external":true},{"path":"./simpler","kind":"import-statement","external":true}],"exports":["checkNumberValues"],"entryPoint":"src/coordinates/latlon/internal/pipes/check-numbers.ts","inputs":{"src/coordinates/latlon/internal/pipes/check-numbers.ts":{"bytesInOutput":946}},"bytes":978},"dist/coordinates/latlon/internal/pipes/fix-bearings.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5883},"dist/coordinates/latlon/internal/pipes/fix-bearings.js":{"imports":[{"path":"..","kind":"import-statement","external":true}],"exports":["fixBearings"],"entryPoint":"src/coordinates/latlon/internal/pipes/fix-bearings.ts","inputs":{"src/coordinates/latlon/internal/pipes/fix-bearings.ts":{"bytesInOutput":2167}},"bytes":2193},"dist/coordinates/latlon/internal/pipes/fix-dividers.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3051},"dist/coordinates/latlon/internal/pipes/fix-dividers.js":{"imports":[{"path":"..","kind":"import-statement","external":true},{"path":"./genome","kind":"import-statement","external":true},{"path":"./simpler","kind":"import-statement","external":true}],"exports":["fixDivider"],"entryPoint":"src/coordinates/latlon/internal/pipes/fix-dividers.ts","inputs":{"src/coordinates/latlon/internal/pipes/fix-dividers.ts":{"bytesInOutput":733}},"bytes":758},"dist/coordinates/latlon/internal/pipes/genome.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3496},"dist/coordinates/latlon/internal/pipes/genome.js":{"imports":[{"path":"..","kind":"import-statement","external":true}],"exports":["getGenomeIndex"],"entryPoint":"src/coordinates/latlon/internal/pipes/genome.ts","inputs":{"src/coordinates/latlon/internal/pipes/genome.ts":{"bytesInOutput":925}},"bytes":954},"dist/coordinates/latlon/internal/pipes/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4610},"dist/coordinates/latlon/internal/pipes/index.js":{"imports":[{"path":"..","kind":"import-statement","external":true},{"path":"./check-ambiguous","kind":"import-statement","external":true},{"path":"./check-numbers","kind":"import-statement","external":true},{"path":"./fix-bearings","kind":"import-statement","external":true},{"path":"./fix-dividers","kind":"import-statement","external":true}],"exports":["pipesResult","pipesRunner"],"entryPoint":"src/coordinates/latlon/internal/pipes/index.ts","inputs":{"src/coordinates/latlon/internal/pipes/index.ts":{"bytesInOutput":1524}},"bytes":1565},"dist/coordinates/latlon/internal/pipes/simpler.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1310},"dist/coordinates/latlon/internal/pipes/simpler.js":{"imports":[],"exports":["simpler"],"entryPoint":"src/coordinates/latlon/internal/pipes/simpler.ts","inputs":{"src/coordinates/latlon/internal/pipes/simpler.ts":{"bytesInOutput":82}},"bytes":104},"dist/coordinates/latlon/internal/exhaustive-errors.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5128},"dist/coordinates/latlon/internal/exhaustive-errors.js":{"imports":[{"path":"@/cartesian","kind":"import-statement","external":true}],"exports":["EXHAUSTIVE_ERRORS"],"entryPoint":"src/coordinates/latlon/internal/exhaustive-errors.ts","inputs":{"src/coordinates/latlon/internal/exhaustive-errors.ts":{"bytesInOutput":1924}},"bytes":1956},"dist/coordinates/latlon/internal/in-range.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1455},"dist/coordinates/latlon/internal/in-range.js":{"imports":[],"exports":["inRange"],"entryPoint":"src/coordinates/latlon/internal/in-range.ts","inputs":{"src/coordinates/latlon/internal/in-range.ts":{"bytesInOutput":260}},"bytes":282},"dist/coordinates/latlon/internal/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6839},"dist/coordinates/latlon/internal/index.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true}],"exports":["BEARINGS","FORMATS","FORMATS_DEFAULT","LIMITS","PARTIAL_PATTERNS","SYMBOLS","SYMBOL_PATTERNS"],"entryPoint":"src/coordinates/latlon/internal/index.ts","inputs":{"src/coordinates/latlon/internal/index.ts":{"bytesInOutput":3051}},"bytes":3164},"dist/coordinates/latlon/internal/lexer.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5141},"dist/coordinates/latlon/internal/lexer.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":".","kind":"import-statement","external":true}],"exports":["lexer"],"entryPoint":"src/coordinates/latlon/internal/lexer.ts","inputs":{"src/coordinates/latlon/internal/lexer.ts":{"bytesInOutput":1173}},"bytes":1193},"dist/coordinates/latlon/internal/parse-format.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4783},"dist/coordinates/latlon/internal/parse-format.js":{"imports":[{"path":".","kind":"import-statement","external":true},{"path":"./parse","kind":"import-statement","external":true},{"path":"./violation","kind":"import-statement","external":true}],"exports":["createParser"],"entryPoint":"src/coordinates/latlon/internal/parse-format.ts","inputs":{"src/coordinates/latlon/internal/parse-format.ts":{"bytesInOutput":1758}},"bytes":1785},"dist/coordinates/latlon/internal/parse.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2869},"dist/coordinates/latlon/internal/parse.js":{"imports":[{"path":"./lexer","kind":"import-statement","external":true},{"path":"./pipes","kind":"import-statement","external":true},{"path":"./violation","kind":"import-statement","external":true}],"exports":["parse"],"entryPoint":"src/coordinates/latlon/internal/parse.ts","inputs":{"src/coordinates/latlon/internal/parse.ts":{"bytesInOutput":344}},"bytes":364},"dist/coordinates/latlon/internal/violation.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":931},"dist/coordinates/latlon/internal/violation.js":{"imports":[],"exports":["violation"],"entryPoint":"src/coordinates/latlon/internal/violation.ts","inputs":{"src/coordinates/latlon/internal/violation.ts":{"bytesInOutput":41}},"bytes":65},"dist/coordinates/latlon/internal/pipes/check-ambiguous.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3135},"dist/coordinates/latlon/internal/pipes/check-ambiguous.js":{"imports":[{"path":"..","kind":"import-statement","external":true},{"path":"../pipes","kind":"import-statement","external":true},{"path":"./simpler","kind":"import-statement","external":true}],"exports":["checkAmbiguousGrouping"],"entryPoint":"src/coordinates/latlon/internal/pipes/check-ambiguous.ts","inputs":{"src/coordinates/latlon/internal/pipes/check-ambiguous.ts":{"bytesInOutput":763}},"bytes":800},"dist/coordinates/latlon/decimal-degrees/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5039},"dist/coordinates/latlon/decimal-degrees/parser.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":"../internal","kind":"import-statement","external":true},{"path":"../internal/parse-format","kind":"import-statement","external":true}],"exports":["parseDecimalDegrees"],"entryPoint":"src/coordinates/latlon/decimal-degrees/parser.ts","inputs":{"src/coordinates/latlon/decimal-degrees/parser.ts":{"bytesInOutput":2051}},"bytes":2085},"dist/coordinates/latlon/decimal-degrees/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2125},"dist/coordinates/latlon/decimal-degrees/system.js":{"imports":[{"path":"../internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemDecimalDegrees"],"entryPoint":"src/coordinates/latlon/decimal-degrees/system.ts","inputs":{"src/coordinates/latlon/decimal-degrees/system.ts":{"bytesInOutput":541}},"bytes":576},"dist/coordinates/latlon/degrees-decimal-minutes/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6056},"dist/coordinates/latlon/degrees-decimal-minutes/parser.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":"../internal","kind":"import-statement","external":true},{"path":"../internal/in-range","kind":"import-statement","external":true},{"path":"../internal/parse-format","kind":"import-statement","external":true}],"exports":["parseDegreesDecimalMinutes"],"entryPoint":"src/coordinates/latlon/degrees-decimal-minutes/parser.ts","inputs":{"src/coordinates/latlon/degrees-decimal-minutes/parser.ts":{"bytesInOutput":2529}},"bytes":2570},"dist/coordinates/latlon/degrees-decimal-minutes/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2610},"dist/coordinates/latlon/degrees-decimal-minutes/system.js":{"imports":[{"path":"../internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemDegreesDecimalMinutes"],"entryPoint":"src/coordinates/latlon/degrees-decimal-minutes/system.ts","inputs":{"src/coordinates/latlon/degrees-decimal-minutes/system.ts":{"bytesInOutput":810}},"bytes":852},"dist/coordinates/latlon/degrees-minutes-seconds/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6155},"dist/coordinates/latlon/degrees-minutes-seconds/parser.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":"../internal","kind":"import-statement","external":true},{"path":"../internal/in-range","kind":"import-statement","external":true},{"path":"../internal/parse-format","kind":"import-statement","external":true}],"exports":["parseDegreesMinutesSeconds"],"entryPoint":"src/coordinates/latlon/degrees-minutes-seconds/parser.ts","inputs":{"src/coordinates/latlon/degrees-minutes-seconds/parser.ts":{"bytesInOutput":2538}},"bytes":2579},"dist/coordinates/latlon/degrees-minutes-seconds/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2904},"dist/coordinates/latlon/degrees-minutes-seconds/system.js":{"imports":[{"path":"../internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemDegreesMinutesSeconds"],"entryPoint":"src/coordinates/latlon/degrees-minutes-seconds/system.ts","inputs":{"src/coordinates/latlon/degrees-minutes-seconds/system.ts":{"bytesInOutput":933}},"bytes":975},"dist/coordinates/latlon/internal/coordinate-system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/coordinates/latlon/internal/coordinate-system.js":{"imports":[],"exports":[],"entryPoint":"src/coordinates/latlon/internal/coordinate-system.ts","inputs":{"src/coordinates/latlon/internal/coordinate-system.ts":{"bytesInOutput":0}},"bytes":0},"dist/coordinates/latlon/internal/create-cache.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1913},"dist/coordinates/latlon/internal/create-cache.js":{"imports":[{"path":".","kind":"import-statement","external":true}],"exports":["createCache"],"entryPoint":"src/coordinates/latlon/internal/create-cache.ts","inputs":{"src/coordinates/latlon/internal/create-cache.ts":{"bytesInOutput":325}},"bytes":351},"dist/cartesian.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1855},"dist/cartesian.js":{"imports":[],"exports":["cartesian"],"entryPoint":"src/cartesian.ts","inputs":{"src/cartesian.ts":{"bytesInOutput":207}},"bytes":231},"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1580},"dist/index.js":{"imports":[{"path":"./coordinates/coordinate","kind":"import-statement","external":true},{"path":"./coordinates/latlon/decimal-degrees/parser","kind":"import-statement","external":true},{"path":"./coordinates/latlon/degrees-decimal-minutes/parser","kind":"import-statement","external":true},{"path":"./coordinates/latlon/degrees-minutes-seconds/parser","kind":"import-statement","external":true},{"path":"./coordinates/mgrs/parser","kind":"import-statement","external":true},{"path":"./coordinates/utm/parser","kind":"import-statement","external":true}],"exports":["coordinateSystems","createCoordinate","parseDecimalDegrees","parseDegreesDecimalMinutes","parseDegreesMinutesSeconds","parseMGRS","parseUTM"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":467}},"bytes":627},"dist/patterning.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3276},"dist/patterning.js":{"imports":[],"exports":["capture","fromTemplate","group","merge","optional"],"entryPoint":"src/patterning.ts","inputs":{"src/patterning.ts":{"bytesInOutput":465}},"bytes":533},"dist/coordinates/coordinate.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":8551},"dist/coordinates/coordinate.js":{"imports":[{"path":"./latlon/decimal-degrees/system","kind":"import-statement","external":true},{"path":"./latlon/degrees-decimal-minutes/system","kind":"import-statement","external":true},{"path":"./latlon/degrees-minutes-seconds/system","kind":"import-statement","external":true},{"path":"./latlon/internal","kind":"import-statement","external":true},{"path":"./latlon/internal/create-cache","kind":"import-statement","external":true},{"path":"./mgrs/system","kind":"import-statement","external":true},{"path":"./utm/system","kind":"import-statement","external":true}],"exports":["coordinateSystems","createCoordinate"],"entryPoint":"src/coordinates/coordinate.ts","inputs":{"src/coordinates/coordinate.ts":{"bytesInOutput":2557}},"bytes":2609},"dist/coordinates/mgrs/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3440},"dist/coordinates/mgrs/parser.js":{"imports":[{"path":"@ngageoint/mgrs-js","kind":"import-statement","external":true},{"path":"../latlon/internal/parse","kind":"import-statement","external":true},{"path":"../latlon/internal/violation","kind":"import-statement","external":true}],"exports":["parseMGRS"],"entryPoint":"src/coordinates/mgrs/parser.ts","inputs":{"src/coordinates/mgrs/parser.ts":{"bytesInOutput":1368}},"bytes":1392},"dist/coordinates/mgrs/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2213},"dist/coordinates/mgrs/system.js":{"imports":[{"path":"@ngageoint/grid-js","kind":"import-statement","external":true},{"path":"@ngageoint/mgrs-js","kind":"import-statement","external":true},{"path":"../latlon/internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemMGRS"],"entryPoint":"src/coordinates/mgrs/system.ts","inputs":{"src/coordinates/mgrs/system.ts":{"bytesInOutput":624}},"bytes":649},"dist/coordinates/utm/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3100},"dist/coordinates/utm/parser.js":{"imports":[{"path":"@ngageoint/mgrs-js","kind":"import-statement","external":true},{"path":"../latlon/internal/parse","kind":"import-statement","external":true},{"path":"../latlon/internal/violation","kind":"import-statement","external":true}],"exports":["parseUTM"],"entryPoint":"src/coordinates/utm/parser.ts","inputs":{"src/coordinates/utm/parser.ts":{"bytesInOutput":1164}},"bytes":1187},"dist/coordinates/utm/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2207},"dist/coordinates/utm/system.js":{"imports":[{"path":"@ngageoint/grid-js","kind":"import-statement","external":true},{"path":"@ngageoint/mgrs-js","kind":"import-statement","external":true},{"path":"../latlon/internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemUTM"],"entryPoint":"src/coordinates/utm/system.ts","inputs":{"src/coordinates/utm/system.ts":{"bytesInOutput":619}},"bytes":643}}}
1
+ {"inputs":{"src/cartesian.ts":{"bytes":1459,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1831,"imports":[],"format":"esm"},"src/patterning.ts":{"bytes":2573,"imports":[],"format":"esm"},"src/coordinates/coordinate.ts":{"bytes":6568,"imports":[],"format":"esm"},"src/coordinates/mgrs/parser.ts":{"bytes":2226,"imports":[],"format":"esm"},"src/coordinates/mgrs/system.ts":{"bytes":1516,"imports":[],"format":"esm"},"src/coordinates/utm/parser.ts":{"bytes":2026,"imports":[],"format":"esm"},"src/coordinates/utm/system.ts":{"bytes":1502,"imports":[],"format":"esm"},"src/coordinates/latlon/decimal-degrees/formatter.ts":{"bytes":862,"imports":[],"format":"esm"},"src/coordinates/latlon/decimal-degrees/parser.ts":{"bytes":3062,"imports":[],"format":"esm"},"src/coordinates/latlon/decimal-degrees/system.ts":{"bytes":1449,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-decimal-minutes/formatter.ts":{"bytes":1002,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-decimal-minutes/parser.ts":{"bytes":3676,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-decimal-minutes/system.ts":{"bytes":1727,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-minutes-seconds/formatter.ts":{"bytes":1111,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-minutes-seconds/parser.ts":{"bytes":3770,"imports":[],"format":"esm"},"src/coordinates/latlon/degrees-minutes-seconds/system.ts":{"bytes":1913,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/coordinate-system.ts":{"bytes":1059,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/create-cache.ts":{"bytes":1421,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/exhaustive-errors.ts":{"bytes":3159,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/format.ts":{"bytes":1476,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/in-range.ts":{"bytes":1063,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/index.ts":{"bytes":4481,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/lexer.ts":{"bytes":4016,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/ordinal.ts":{"bytes":835,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/parse-format.ts":{"bytes":3081,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/parse.ts":{"bytes":2350,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/violation.ts":{"bytes":725,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/check-ambiguous.ts":{"bytes":2341,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/check-numbers.ts":{"bytes":1905,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/fix-bearings.ts":{"bytes":3672,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/fix-dividers.ts":{"bytes":2205,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/genome.ts":{"bytes":2501,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/index.ts":{"bytes":3285,"imports":[],"format":"esm"},"src/coordinates/latlon/internal/pipes/simpler.ts":{"bytes":1026,"imports":[],"format":"esm"}},"outputs":{"dist/coordinates/latlon/internal/pipes/genome.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3496},"dist/coordinates/latlon/internal/pipes/genome.js":{"imports":[{"path":"..","kind":"import-statement","external":true}],"exports":["getGenomeIndex"],"entryPoint":"src/coordinates/latlon/internal/pipes/genome.ts","inputs":{"src/coordinates/latlon/internal/pipes/genome.ts":{"bytesInOutput":925}},"bytes":954},"dist/coordinates/latlon/internal/pipes/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4610},"dist/coordinates/latlon/internal/pipes/index.js":{"imports":[{"path":"..","kind":"import-statement","external":true},{"path":"./check-ambiguous","kind":"import-statement","external":true},{"path":"./check-numbers","kind":"import-statement","external":true},{"path":"./fix-bearings","kind":"import-statement","external":true},{"path":"./fix-dividers","kind":"import-statement","external":true}],"exports":["pipesResult","pipesRunner"],"entryPoint":"src/coordinates/latlon/internal/pipes/index.ts","inputs":{"src/coordinates/latlon/internal/pipes/index.ts":{"bytesInOutput":1524}},"bytes":1565},"dist/coordinates/latlon/internal/pipes/simpler.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1310},"dist/coordinates/latlon/internal/pipes/simpler.js":{"imports":[],"exports":["simpler"],"entryPoint":"src/coordinates/latlon/internal/pipes/simpler.ts","inputs":{"src/coordinates/latlon/internal/pipes/simpler.ts":{"bytesInOutput":82}},"bytes":104},"dist/coordinates/latlon/internal/ordinal.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1124},"dist/coordinates/latlon/internal/ordinal.js":{"imports":[],"exports":["getOrdinal"],"entryPoint":"src/coordinates/latlon/internal/ordinal.ts","inputs":{"src/coordinates/latlon/internal/ordinal.ts":{"bytesInOutput":133}},"bytes":158},"dist/coordinates/latlon/internal/parse-format.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4783},"dist/coordinates/latlon/internal/parse-format.js":{"imports":[{"path":".","kind":"import-statement","external":true},{"path":"./parse","kind":"import-statement","external":true},{"path":"./violation","kind":"import-statement","external":true}],"exports":["createParser"],"entryPoint":"src/coordinates/latlon/internal/parse-format.ts","inputs":{"src/coordinates/latlon/internal/parse-format.ts":{"bytesInOutput":1758}},"bytes":1785},"dist/coordinates/latlon/internal/parse.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2869},"dist/coordinates/latlon/internal/parse.js":{"imports":[{"path":"./lexer","kind":"import-statement","external":true},{"path":"./pipes","kind":"import-statement","external":true},{"path":"./violation","kind":"import-statement","external":true}],"exports":["parse"],"entryPoint":"src/coordinates/latlon/internal/parse.ts","inputs":{"src/coordinates/latlon/internal/parse.ts":{"bytesInOutput":344}},"bytes":364},"dist/coordinates/latlon/internal/violation.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":931},"dist/coordinates/latlon/internal/violation.js":{"imports":[],"exports":["violation"],"entryPoint":"src/coordinates/latlon/internal/violation.ts","inputs":{"src/coordinates/latlon/internal/violation.ts":{"bytesInOutput":41}},"bytes":65},"dist/coordinates/latlon/internal/pipes/check-ambiguous.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3135},"dist/coordinates/latlon/internal/pipes/check-ambiguous.js":{"imports":[{"path":"..","kind":"import-statement","external":true},{"path":"../pipes","kind":"import-statement","external":true},{"path":"./simpler","kind":"import-statement","external":true}],"exports":["checkAmbiguousGrouping"],"entryPoint":"src/coordinates/latlon/internal/pipes/check-ambiguous.ts","inputs":{"src/coordinates/latlon/internal/pipes/check-ambiguous.ts":{"bytesInOutput":763}},"bytes":800},"dist/coordinates/latlon/internal/pipes/check-numbers.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2810},"dist/coordinates/latlon/internal/pipes/check-numbers.js":{"imports":[{"path":"../pipes","kind":"import-statement","external":true},{"path":"./simpler","kind":"import-statement","external":true}],"exports":["checkNumberValues"],"entryPoint":"src/coordinates/latlon/internal/pipes/check-numbers.ts","inputs":{"src/coordinates/latlon/internal/pipes/check-numbers.ts":{"bytesInOutput":946}},"bytes":978},"dist/coordinates/latlon/internal/pipes/fix-bearings.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5883},"dist/coordinates/latlon/internal/pipes/fix-bearings.js":{"imports":[{"path":"..","kind":"import-statement","external":true}],"exports":["fixBearings"],"entryPoint":"src/coordinates/latlon/internal/pipes/fix-bearings.ts","inputs":{"src/coordinates/latlon/internal/pipes/fix-bearings.ts":{"bytesInOutput":2167}},"bytes":2193},"dist/coordinates/latlon/internal/pipes/fix-dividers.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3051},"dist/coordinates/latlon/internal/pipes/fix-dividers.js":{"imports":[{"path":"..","kind":"import-statement","external":true},{"path":"./genome","kind":"import-statement","external":true},{"path":"./simpler","kind":"import-statement","external":true}],"exports":["fixDivider"],"entryPoint":"src/coordinates/latlon/internal/pipes/fix-dividers.ts","inputs":{"src/coordinates/latlon/internal/pipes/fix-dividers.ts":{"bytesInOutput":733}},"bytes":758},"dist/coordinates/latlon/degrees-minutes-seconds/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2904},"dist/coordinates/latlon/degrees-minutes-seconds/system.js":{"imports":[{"path":"../internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemDegreesMinutesSeconds"],"entryPoint":"src/coordinates/latlon/degrees-minutes-seconds/system.ts","inputs":{"src/coordinates/latlon/degrees-minutes-seconds/system.ts":{"bytesInOutput":933}},"bytes":975},"dist/coordinates/latlon/internal/coordinate-system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/coordinates/latlon/internal/coordinate-system.js":{"imports":[],"exports":[],"entryPoint":"src/coordinates/latlon/internal/coordinate-system.ts","inputs":{"src/coordinates/latlon/internal/coordinate-system.ts":{"bytesInOutput":0}},"bytes":0},"dist/coordinates/latlon/internal/create-cache.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1913},"dist/coordinates/latlon/internal/create-cache.js":{"imports":[{"path":".","kind":"import-statement","external":true}],"exports":["createCache"],"entryPoint":"src/coordinates/latlon/internal/create-cache.ts","inputs":{"src/coordinates/latlon/internal/create-cache.ts":{"bytesInOutput":325}},"bytes":351},"dist/coordinates/latlon/internal/exhaustive-errors.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5128},"dist/coordinates/latlon/internal/exhaustive-errors.js":{"imports":[{"path":"@/cartesian","kind":"import-statement","external":true}],"exports":["EXHAUSTIVE_ERRORS"],"entryPoint":"src/coordinates/latlon/internal/exhaustive-errors.ts","inputs":{"src/coordinates/latlon/internal/exhaustive-errors.ts":{"bytesInOutput":1924}},"bytes":1956},"dist/coordinates/latlon/internal/format.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2108},"dist/coordinates/latlon/internal/format.js":{"imports":[{"path":"./ordinal","kind":"import-statement","external":true}],"exports":["createFormatter"],"entryPoint":"src/coordinates/latlon/internal/format.ts","inputs":{"src/coordinates/latlon/internal/format.ts":{"bytesInOutput":586}},"bytes":616},"dist/coordinates/latlon/internal/in-range.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1455},"dist/coordinates/latlon/internal/in-range.js":{"imports":[],"exports":["inRange"],"entryPoint":"src/coordinates/latlon/internal/in-range.ts","inputs":{"src/coordinates/latlon/internal/in-range.ts":{"bytesInOutput":260}},"bytes":282},"dist/coordinates/latlon/internal/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6839},"dist/coordinates/latlon/internal/index.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true}],"exports":["BEARINGS","FORMATS","FORMATS_DEFAULT","LIMITS","PARTIAL_PATTERNS","SYMBOLS","SYMBOL_PATTERNS"],"entryPoint":"src/coordinates/latlon/internal/index.ts","inputs":{"src/coordinates/latlon/internal/index.ts":{"bytesInOutput":3051}},"bytes":3164},"dist/coordinates/latlon/internal/lexer.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5141},"dist/coordinates/latlon/internal/lexer.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":".","kind":"import-statement","external":true}],"exports":["lexer"],"entryPoint":"src/coordinates/latlon/internal/lexer.ts","inputs":{"src/coordinates/latlon/internal/lexer.ts":{"bytesInOutput":1173}},"bytes":1193},"dist/coordinates/latlon/decimal-degrees/formatter.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1168},"dist/coordinates/latlon/decimal-degrees/formatter.js":{"imports":[{"path":"../internal/format","kind":"import-statement","external":true}],"exports":["formatDecimalDegrees"],"entryPoint":"src/coordinates/latlon/decimal-degrees/formatter.ts","inputs":{"src/coordinates/latlon/decimal-degrees/formatter.ts":{"bytesInOutput":191}},"bytes":226},"dist/coordinates/latlon/decimal-degrees/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5039},"dist/coordinates/latlon/decimal-degrees/parser.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":"../internal","kind":"import-statement","external":true},{"path":"../internal/parse-format","kind":"import-statement","external":true}],"exports":["parseDecimalDegrees"],"entryPoint":"src/coordinates/latlon/decimal-degrees/parser.ts","inputs":{"src/coordinates/latlon/decimal-degrees/parser.ts":{"bytesInOutput":2051}},"bytes":2085},"dist/coordinates/latlon/decimal-degrees/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2125},"dist/coordinates/latlon/decimal-degrees/system.js":{"imports":[{"path":"../internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemDecimalDegrees"],"entryPoint":"src/coordinates/latlon/decimal-degrees/system.ts","inputs":{"src/coordinates/latlon/decimal-degrees/system.ts":{"bytesInOutput":541}},"bytes":576},"dist/coordinates/latlon/degrees-decimal-minutes/formatter.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1420},"dist/coordinates/latlon/degrees-decimal-minutes/formatter.js":{"imports":[{"path":"../internal/format","kind":"import-statement","external":true}],"exports":["formatDegreesDecimalMinutes"],"entryPoint":"src/coordinates/latlon/degrees-decimal-minutes/formatter.ts","inputs":{"src/coordinates/latlon/degrees-decimal-minutes/formatter.ts":{"bytesInOutput":329}},"bytes":371},"dist/coordinates/latlon/degrees-decimal-minutes/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6056},"dist/coordinates/latlon/degrees-decimal-minutes/parser.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":"../internal","kind":"import-statement","external":true},{"path":"../internal/in-range","kind":"import-statement","external":true},{"path":"../internal/parse-format","kind":"import-statement","external":true}],"exports":["parseDegreesDecimalMinutes"],"entryPoint":"src/coordinates/latlon/degrees-decimal-minutes/parser.ts","inputs":{"src/coordinates/latlon/degrees-decimal-minutes/parser.ts":{"bytesInOutput":2529}},"bytes":2570},"dist/coordinates/latlon/degrees-decimal-minutes/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2610},"dist/coordinates/latlon/degrees-decimal-minutes/system.js":{"imports":[{"path":"../internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemDegreesDecimalMinutes"],"entryPoint":"src/coordinates/latlon/degrees-decimal-minutes/system.ts","inputs":{"src/coordinates/latlon/degrees-decimal-minutes/system.ts":{"bytesInOutput":810}},"bytes":852},"dist/coordinates/latlon/degrees-minutes-seconds/formatter.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1601},"dist/coordinates/latlon/degrees-minutes-seconds/formatter.js":{"imports":[{"path":"../internal/format","kind":"import-statement","external":true}],"exports":["formatDegreesMinutesSeconds"],"entryPoint":"src/coordinates/latlon/degrees-minutes-seconds/formatter.ts","inputs":{"src/coordinates/latlon/degrees-minutes-seconds/formatter.ts":{"bytesInOutput":441}},"bytes":483},"dist/coordinates/latlon/degrees-minutes-seconds/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":6155},"dist/coordinates/latlon/degrees-minutes-seconds/parser.js":{"imports":[{"path":"@/patterning","kind":"import-statement","external":true},{"path":"../internal","kind":"import-statement","external":true},{"path":"../internal/in-range","kind":"import-statement","external":true},{"path":"../internal/parse-format","kind":"import-statement","external":true}],"exports":["parseDegreesMinutesSeconds"],"entryPoint":"src/coordinates/latlon/degrees-minutes-seconds/parser.ts","inputs":{"src/coordinates/latlon/degrees-minutes-seconds/parser.ts":{"bytesInOutput":2538}},"bytes":2579},"dist/cartesian.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1855},"dist/cartesian.js":{"imports":[],"exports":["cartesian"],"entryPoint":"src/cartesian.ts","inputs":{"src/cartesian.ts":{"bytesInOutput":207}},"bytes":231},"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2182},"dist/index.js":{"imports":[{"path":"./coordinates/coordinate","kind":"import-statement","external":true},{"path":"./coordinates/latlon/decimal-degrees/formatter","kind":"import-statement","external":true},{"path":"./coordinates/latlon/decimal-degrees/parser","kind":"import-statement","external":true},{"path":"./coordinates/latlon/degrees-decimal-minutes/formatter","kind":"import-statement","external":true},{"path":"./coordinates/latlon/degrees-decimal-minutes/parser","kind":"import-statement","external":true},{"path":"./coordinates/latlon/degrees-minutes-seconds/formatter","kind":"import-statement","external":true},{"path":"./coordinates/latlon/degrees-minutes-seconds/parser","kind":"import-statement","external":true},{"path":"./coordinates/latlon/internal/format","kind":"import-statement","external":true},{"path":"./coordinates/latlon/internal/ordinal","kind":"import-statement","external":true},{"path":"./coordinates/mgrs/parser","kind":"import-statement","external":true},{"path":"./coordinates/utm/parser","kind":"import-statement","external":true}],"exports":["coordinateSystems","createCoordinate","createFormatter","formatDecimalDegrees","formatDegreesDecimalMinutes","formatDegreesMinutesSeconds","getOrdinal","parseDecimalDegrees","parseDegreesDecimalMinutes","parseDegreesMinutesSeconds","parseMGRS","parseUTM"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":898}},"bytes":1177},"dist/patterning.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3276},"dist/patterning.js":{"imports":[],"exports":["capture","fromTemplate","group","merge","optional"],"entryPoint":"src/patterning.ts","inputs":{"src/patterning.ts":{"bytesInOutput":465}},"bytes":533},"dist/coordinates/coordinate.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":8647},"dist/coordinates/coordinate.js":{"imports":[{"path":"./latlon/decimal-degrees/system","kind":"import-statement","external":true},{"path":"./latlon/degrees-decimal-minutes/system","kind":"import-statement","external":true},{"path":"./latlon/degrees-minutes-seconds/system","kind":"import-statement","external":true},{"path":"./latlon/internal","kind":"import-statement","external":true},{"path":"./latlon/internal/create-cache","kind":"import-statement","external":true},{"path":"./mgrs/system","kind":"import-statement","external":true},{"path":"./utm/system","kind":"import-statement","external":true}],"exports":["coordinateSystems","createCoordinate"],"entryPoint":"src/coordinates/coordinate.ts","inputs":{"src/coordinates/coordinate.ts":{"bytesInOutput":2599}},"bytes":2651},"dist/coordinates/mgrs/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3418},"dist/coordinates/mgrs/parser.js":{"imports":[{"path":"geodesy/mgrs","kind":"import-statement","external":true},{"path":"../latlon/internal/parse","kind":"import-statement","external":true},{"path":"../latlon/internal/violation","kind":"import-statement","external":true}],"exports":["parseMGRS"],"entryPoint":"src/coordinates/mgrs/parser.ts","inputs":{"src/coordinates/mgrs/parser.ts":{"bytesInOutput":1346}},"bytes":1370},"dist/coordinates/mgrs/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2204},"dist/coordinates/mgrs/system.js":{"imports":[{"path":"geodesy/mgrs","kind":"import-statement","external":true},{"path":"../latlon/internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemMGRS"],"entryPoint":"src/coordinates/mgrs/system.ts","inputs":{"src/coordinates/mgrs/system.ts":{"bytesInOutput":608}},"bytes":633},"dist/coordinates/utm/parser.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3100},"dist/coordinates/utm/parser.js":{"imports":[{"path":"geodesy/utm","kind":"import-statement","external":true},{"path":"../latlon/internal/parse","kind":"import-statement","external":true},{"path":"../latlon/internal/violation","kind":"import-statement","external":true}],"exports":["parseUTM"],"entryPoint":"src/coordinates/utm/parser.ts","inputs":{"src/coordinates/utm/parser.ts":{"bytesInOutput":1157}},"bytes":1180},"dist/coordinates/utm/system.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":2178},"dist/coordinates/utm/system.js":{"imports":[{"path":"geodesy/utm","kind":"import-statement","external":true},{"path":"../latlon/internal","kind":"import-statement","external":true},{"path":"./parser","kind":"import-statement","external":true}],"exports":["systemUTM"],"entryPoint":"src/coordinates/utm/system.ts","inputs":{"src/coordinates/utm/system.ts":{"bytesInOutput":595}},"bytes":619}}}
package/package.json CHANGED
@@ -1,6 +1,16 @@
1
1
  {
2
+ "$schema": "https://json.schemastore.org/package",
2
3
  "name": "@accelint/geo",
3
- "version": "0.2.9",
4
+ "title": "Accelint Geo",
5
+ "description": "A collection of JavaScript functions for working with coordinates and geospatial data.",
6
+ "author": "https://hypergiant.com",
7
+ "owner": "default/pathfinder",
8
+ "keywords": [
9
+ "dev-tk",
10
+ "tooling"
11
+ ],
12
+ "subPath": "packages/geo",
13
+ "version": "0.3.0",
4
14
  "private": false,
5
15
  "license": "Apache-2.0",
6
16
  "repository": {
@@ -9,7 +19,11 @@
9
19
  },
10
20
  "type": "module",
11
21
  "files": [
12
- "dist/**"
22
+ "./dist/**",
23
+ "./catalog-info.yaml",
24
+ "./CHANGELOG.md",
25
+ "./package.json",
26
+ "./README.md"
13
27
  ],
14
28
  "types": "./dist/index.d.ts",
15
29
  "exports": {
@@ -22,22 +36,19 @@
22
36
  },
23
37
  "./package.json": "./package.json"
24
38
  },
39
+ "dependencies": {
40
+ "geodesy": "^2.4.0"
41
+ },
25
42
  "devDependencies": {
26
- "esbuild-fix-imports-plugin": "1.0.21",
43
+ "@types/geodesy": "^2.2.8",
44
+ "esbuild-fix-imports-plugin": "^1.0.23",
27
45
  "tsup": "8.5.0",
28
- "vitest": "2.1.3",
29
- "@accelint/typescript-config": "0.1.2",
30
- "@accelint/vitest-config": "0.1.3"
46
+ "typescript": "5.8.3",
47
+ "vitest": "^2.1.9",
48
+ "@accelint/constellation-tracker": "1.0.1",
49
+ "@accelint/typescript-config": "0.1.4",
50
+ "@accelint/vitest-config": "0.1.5"
31
51
  },
32
- "dependencies": {
33
- "@ngageoint/grid-js": "2.1.0",
34
- "@ngageoint/mgrs-js": "1.0.0",
35
- "typescript": "^5.8.3",
36
- "@accelint/math": "0.1.5",
37
- "@accelint/predicates": "0.4.1"
38
- },
39
- "$schema": "https://json.schemastore.org/package",
40
- "author": "https://hypergiant.com",
41
52
  "publishConfig": {
42
53
  "access": "public"
43
54
  },
@@ -45,6 +56,7 @@
45
56
  "scripts": {
46
57
  "bench": "pnpm vitest bench --run --dir src",
47
58
  "build": "pnpm tsup",
59
+ "constellation-tracker": "constellation-tracker",
48
60
  "dev": "pnpm tsc --watch",
49
61
  "index": "pnpm zx ../../scripts/indexer.mjs packages/geo",
50
62
  "lint": "pnpm biome lint",