@math.gl/projection 0.0.0-stage → 5.0.0-alpha.12

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 (1297) hide show
  1. package/APACHE-2.0-LICENSE.txt +55 -0
  2. package/PROJ-LICENSE.txt +37 -0
  3. package/PROJ4-LICENSE.md +29 -0
  4. package/README.md +27 -2
  5. package/THIRD-PARTY-NOTICES.md +163 -0
  6. package/dist/deformation.cjs +189 -0
  7. package/dist/deformation.cjs.map +6 -0
  8. package/dist/deformation.d.ts +3 -0
  9. package/dist/deformation.d.ts.map +1 -0
  10. package/dist/deformation.js +5 -0
  11. package/dist/deformation.js.map +1 -0
  12. package/dist/experimental/catalogue-kernel.d.ts +7 -0
  13. package/dist/experimental/catalogue-kernel.d.ts.map +1 -0
  14. package/dist/experimental/catalogue-kernel.js +36 -0
  15. package/dist/experimental/catalogue-kernel.js.map +1 -0
  16. package/dist/experimental/common/adjust_lat.d.ts +2 -0
  17. package/dist/experimental/common/adjust_lat.d.ts.map +1 -0
  18. package/dist/experimental/common/adjust_lat.js +10 -0
  19. package/dist/experimental/common/adjust_lat.js.map +1 -0
  20. package/dist/experimental/common/adjust_lon.d.ts +2 -0
  21. package/dist/experimental/common/adjust_lon.d.ts.map +1 -0
  22. package/dist/experimental/common/adjust_lon.js +13 -0
  23. package/dist/experimental/common/adjust_lon.js.map +1 -0
  24. package/dist/experimental/common/asinhy.d.ts +2 -0
  25. package/dist/experimental/common/asinhy.d.ts.map +1 -0
  26. package/dist/experimental/common/asinhy.js +12 -0
  27. package/dist/experimental/common/asinhy.js.map +1 -0
  28. package/dist/experimental/common/asinz.d.ts +2 -0
  29. package/dist/experimental/common/asinz.d.ts.map +1 -0
  30. package/dist/experimental/common/asinz.js +11 -0
  31. package/dist/experimental/common/asinz.js.map +1 -0
  32. package/dist/experimental/common/authlat.d.ts +2 -0
  33. package/dist/experimental/common/authlat.d.ts.map +1 -0
  34. package/dist/experimental/common/authlat.js +9 -0
  35. package/dist/experimental/common/authlat.js.map +1 -0
  36. package/dist/experimental/common/authset.d.ts +2 -0
  37. package/dist/experimental/common/authset.d.ts.map +1 -0
  38. package/dist/experimental/common/authset.js +24 -0
  39. package/dist/experimental/common/authset.js.map +1 -0
  40. package/dist/experimental/common/clens.d.ts +2 -0
  41. package/dist/experimental/common/clens.d.ts.map +1 -0
  42. package/dist/experimental/common/clens.js +18 -0
  43. package/dist/experimental/common/clens.js.map +1 -0
  44. package/dist/experimental/common/clens_cmplx.d.ts +5 -0
  45. package/dist/experimental/common/clens_cmplx.d.ts.map +1 -0
  46. package/dist/experimental/common/clens_cmplx.js +34 -0
  47. package/dist/experimental/common/clens_cmplx.js.map +1 -0
  48. package/dist/experimental/common/constants.d.ts +9 -0
  49. package/dist/experimental/common/constants.d.ts.map +1 -0
  50. package/dist/experimental/common/constants.js +14 -0
  51. package/dist/experimental/common/constants.js.map +1 -0
  52. package/dist/experimental/common/cosh.d.ts +2 -0
  53. package/dist/experimental/common/cosh.d.ts.map +1 -0
  54. package/dist/experimental/common/cosh.js +10 -0
  55. package/dist/experimental/common/cosh.js.map +1 -0
  56. package/dist/experimental/common/e0fn.d.ts +2 -0
  57. package/dist/experimental/common/e0fn.d.ts.map +1 -0
  58. package/dist/experimental/common/e0fn.js +8 -0
  59. package/dist/experimental/common/e0fn.js.map +1 -0
  60. package/dist/experimental/common/e1fn.d.ts +2 -0
  61. package/dist/experimental/common/e1fn.d.ts.map +1 -0
  62. package/dist/experimental/common/e1fn.js +8 -0
  63. package/dist/experimental/common/e1fn.js.map +1 -0
  64. package/dist/experimental/common/e2fn.d.ts +2 -0
  65. package/dist/experimental/common/e2fn.d.ts.map +1 -0
  66. package/dist/experimental/common/e2fn.js +8 -0
  67. package/dist/experimental/common/e2fn.js.map +1 -0
  68. package/dist/experimental/common/e3fn.d.ts +2 -0
  69. package/dist/experimental/common/e3fn.d.ts.map +1 -0
  70. package/dist/experimental/common/e3fn.js +8 -0
  71. package/dist/experimental/common/e3fn.js.map +1 -0
  72. package/dist/experimental/common/fL.d.ts +2 -0
  73. package/dist/experimental/common/fL.d.ts.map +1 -0
  74. package/dist/experimental/common/fL.js +9 -0
  75. package/dist/experimental/common/fL.js.map +1 -0
  76. package/dist/experimental/common/gN.d.ts +2 -0
  77. package/dist/experimental/common/gN.d.ts.map +1 -0
  78. package/dist/experimental/common/gN.js +9 -0
  79. package/dist/experimental/common/gN.js.map +1 -0
  80. package/dist/experimental/common/gatg.d.ts +2 -0
  81. package/dist/experimental/common/gatg.d.ts.map +1 -0
  82. package/dist/experimental/common/gatg.js +18 -0
  83. package/dist/experimental/common/gatg.js.map +1 -0
  84. package/dist/experimental/common/hypot.d.ts +2 -0
  85. package/dist/experimental/common/hypot.d.ts.map +1 -0
  86. package/dist/experimental/common/hypot.js +12 -0
  87. package/dist/experimental/common/hypot.js.map +1 -0
  88. package/dist/experimental/common/imlfn.d.ts +2 -0
  89. package/dist/experimental/common/imlfn.d.ts.map +1 -0
  90. package/dist/experimental/common/imlfn.js +21 -0
  91. package/dist/experimental/common/imlfn.js.map +1 -0
  92. package/dist/experimental/common/invlatiso.d.ts +2 -0
  93. package/dist/experimental/common/invlatiso.d.ts.map +1 -0
  94. package/dist/experimental/common/invlatiso.js +20 -0
  95. package/dist/experimental/common/invlatiso.js.map +1 -0
  96. package/dist/experimental/common/iqsfnz.d.ts +2 -0
  97. package/dist/experimental/common/iqsfnz.d.ts.map +1 -0
  98. package/dist/experimental/common/iqsfnz.js +44 -0
  99. package/dist/experimental/common/iqsfnz.js.map +1 -0
  100. package/dist/experimental/common/latiso.d.ts +2 -0
  101. package/dist/experimental/common/latiso.d.ts.map +1 -0
  102. package/dist/experimental/common/latiso.js +19 -0
  103. package/dist/experimental/common/latiso.js.map +1 -0
  104. package/dist/experimental/common/log1py.d.ts +2 -0
  105. package/dist/experimental/common/log1py.d.ts.map +1 -0
  106. package/dist/experimental/common/log1py.js +10 -0
  107. package/dist/experimental/common/log1py.js.map +1 -0
  108. package/dist/experimental/common/mlfn.d.ts +2 -0
  109. package/dist/experimental/common/mlfn.d.ts.map +1 -0
  110. package/dist/experimental/common/mlfn.js +8 -0
  111. package/dist/experimental/common/mlfn.js.map +1 -0
  112. package/dist/experimental/common/msfnz.d.ts +2 -0
  113. package/dist/experimental/common/msfnz.d.ts.map +1 -0
  114. package/dist/experimental/common/msfnz.js +9 -0
  115. package/dist/experimental/common/msfnz.js.map +1 -0
  116. package/dist/experimental/common/phi2z.d.ts +2 -0
  117. package/dist/experimental/common/phi2z.d.ts.map +1 -0
  118. package/dist/experimental/common/phi2z.js +21 -0
  119. package/dist/experimental/common/phi2z.js.map +1 -0
  120. package/dist/experimental/common/pj_enfn.d.ts +2 -0
  121. package/dist/experimental/common/pj_enfn.d.ts.map +1 -0
  122. package/dist/experimental/common/pj_enfn.js +28 -0
  123. package/dist/experimental/common/pj_enfn.js.map +1 -0
  124. package/dist/experimental/common/pj_inv_mlfn.d.ts +2 -0
  125. package/dist/experimental/common/pj_inv_mlfn.d.ts.map +1 -0
  126. package/dist/experimental/common/pj_inv_mlfn.js +26 -0
  127. package/dist/experimental/common/pj_inv_mlfn.js.map +1 -0
  128. package/dist/experimental/common/pj_mlfn.d.ts +2 -0
  129. package/dist/experimental/common/pj_mlfn.d.ts.map +1 -0
  130. package/dist/experimental/common/pj_mlfn.js +10 -0
  131. package/dist/experimental/common/pj_mlfn.js.map +1 -0
  132. package/dist/experimental/common/qsfnz.d.ts +2 -0
  133. package/dist/experimental/common/qsfnz.d.ts.map +1 -0
  134. package/dist/experimental/common/qsfnz.js +16 -0
  135. package/dist/experimental/common/qsfnz.js.map +1 -0
  136. package/dist/experimental/common/sign.d.ts +2 -0
  137. package/dist/experimental/common/sign.d.ts.map +1 -0
  138. package/dist/experimental/common/sign.js +8 -0
  139. package/dist/experimental/common/sign.js.map +1 -0
  140. package/dist/experimental/common/sinh.d.ts +2 -0
  141. package/dist/experimental/common/sinh.d.ts.map +1 -0
  142. package/dist/experimental/common/sinh.js +10 -0
  143. package/dist/experimental/common/sinh.js.map +1 -0
  144. package/dist/experimental/common/srat.d.ts +2 -0
  145. package/dist/experimental/common/srat.d.ts.map +1 -0
  146. package/dist/experimental/common/srat.js +8 -0
  147. package/dist/experimental/common/srat.js.map +1 -0
  148. package/dist/experimental/common/tsfnz.d.ts +2 -0
  149. package/dist/experimental/common/tsfnz.d.ts.map +1 -0
  150. package/dist/experimental/common/tsfnz.js +12 -0
  151. package/dist/experimental/common/tsfnz.js.map +1 -0
  152. package/dist/experimental/common/vincenty.d.ts +29 -0
  153. package/dist/experimental/common/vincenty.d.ts.map +1 -0
  154. package/dist/experimental/common/vincenty.js +134 -0
  155. package/dist/experimental/common/vincenty.js.map +1 -0
  156. package/dist/experimental/core.cjs +2868 -0
  157. package/dist/experimental/core.cjs.map +6 -0
  158. package/dist/experimental/core.d.ts +13 -0
  159. package/dist/experimental/core.d.ts.map +1 -0
  160. package/dist/experimental/core.js +9 -0
  161. package/dist/experimental/core.js.map +1 -0
  162. package/dist/experimental/crs/datum-table.d.ts +8 -0
  163. package/dist/experimental/crs/datum-table.d.ts.map +1 -0
  164. package/dist/experimental/crs/datum-table.js +1365 -0
  165. package/dist/experimental/crs/datum-table.js.map +1 -0
  166. package/dist/experimental/crs/ellipsoid-table.d.ts +8 -0
  167. package/dist/experimental/crs/ellipsoid-table.d.ts.map +1 -0
  168. package/dist/experimental/crs/ellipsoid-table.js +229 -0
  169. package/dist/experimental/crs/ellipsoid-table.js.map +1 -0
  170. package/dist/experimental/crs/normalize.d.ts +8 -0
  171. package/dist/experimental/crs/normalize.d.ts.map +1 -0
  172. package/dist/experimental/crs/normalize.js +277 -0
  173. package/dist/experimental/crs/normalize.js.map +1 -0
  174. package/dist/experimental/crs/primemeridian-table.d.ts +3 -0
  175. package/dist/experimental/crs/primemeridian-table.d.ts.map +1 -0
  176. package/dist/experimental/crs/primemeridian-table.js +20 -0
  177. package/dist/experimental/crs/primemeridian-table.js.map +1 -0
  178. package/dist/experimental/crs/projjson.cjs +1847 -0
  179. package/dist/experimental/crs/projjson.cjs.map +6 -0
  180. package/dist/experimental/crs/projjson.d.ts +4 -0
  181. package/dist/experimental/crs/projjson.d.ts.map +1 -0
  182. package/dist/experimental/crs/projjson.js +12 -0
  183. package/dist/experimental/crs/projjson.js.map +1 -0
  184. package/dist/experimental/crs/spatial-reference.d.ts +11 -0
  185. package/dist/experimental/crs/spatial-reference.d.ts.map +1 -0
  186. package/dist/experimental/crs/spatial-reference.js +91 -0
  187. package/dist/experimental/crs/spatial-reference.js.map +1 -0
  188. package/dist/experimental/crs/structured.d.ts +8 -0
  189. package/dist/experimental/crs/structured.d.ts.map +1 -0
  190. package/dist/experimental/crs/structured.js +481 -0
  191. package/dist/experimental/crs/structured.js.map +1 -0
  192. package/dist/experimental/crs/types.d.ts +58 -0
  193. package/dist/experimental/crs/types.d.ts.map +1 -0
  194. package/dist/experimental/crs/types.js +21 -0
  195. package/dist/experimental/crs/types.js.map +1 -0
  196. package/dist/experimental/crs/units-table.d.ts +64 -0
  197. package/dist/experimental/crs/units-table.d.ts.map +1 -0
  198. package/dist/experimental/crs/units-table.js +27 -0
  199. package/dist/experimental/crs/units-table.js.map +1 -0
  200. package/dist/experimental/crs/wkt.cjs +2507 -0
  201. package/dist/experimental/crs/wkt.cjs.map +6 -0
  202. package/dist/experimental/crs/wkt.d.ts +3 -0
  203. package/dist/experimental/crs/wkt.d.ts.map +1 -0
  204. package/dist/experimental/crs/wkt.js +181 -0
  205. package/dist/experimental/crs/wkt.js.map +1 -0
  206. package/dist/experimental/datum.d.ts +17 -0
  207. package/dist/experimental/datum.d.ts.map +1 -0
  208. package/dist/experimental/datum.js +160 -0
  209. package/dist/experimental/datum.js.map +1 -0
  210. package/dist/experimental/deformation.d.ts +25 -0
  211. package/dist/experimental/deformation.d.ts.map +1 -0
  212. package/dist/experimental/deformation.js +98 -0
  213. package/dist/experimental/deformation.js.map +1 -0
  214. package/dist/experimental/entries/projections/aea.cjs +367 -0
  215. package/dist/experimental/entries/projections/aea.cjs.map +6 -0
  216. package/dist/experimental/entries/projections/aea.d.ts +2 -0
  217. package/dist/experimental/entries/projections/aea.d.ts.map +1 -0
  218. package/dist/experimental/entries/projections/aea.js +5 -0
  219. package/dist/experimental/entries/projections/aea.js.map +1 -0
  220. package/dist/experimental/entries/projections/aeqd.cjs +461 -0
  221. package/dist/experimental/entries/projections/aeqd.cjs.map +6 -0
  222. package/dist/experimental/entries/projections/aeqd.d.ts +2 -0
  223. package/dist/experimental/entries/projections/aeqd.d.ts.map +1 -0
  224. package/dist/experimental/entries/projections/aeqd.js +5 -0
  225. package/dist/experimental/entries/projections/aeqd.js.map +1 -0
  226. package/dist/experimental/entries/projections/bonne.cjs +359 -0
  227. package/dist/experimental/entries/projections/bonne.cjs.map +6 -0
  228. package/dist/experimental/entries/projections/bonne.d.ts +2 -0
  229. package/dist/experimental/entries/projections/bonne.d.ts.map +1 -0
  230. package/dist/experimental/entries/projections/bonne.js +5 -0
  231. package/dist/experimental/entries/projections/bonne.js.map +1 -0
  232. package/dist/experimental/entries/projections/cass.cjs +347 -0
  233. package/dist/experimental/entries/projections/cass.cjs.map +6 -0
  234. package/dist/experimental/entries/projections/cass.d.ts +2 -0
  235. package/dist/experimental/entries/projections/cass.d.ts.map +1 -0
  236. package/dist/experimental/entries/projections/cass.js +5 -0
  237. package/dist/experimental/entries/projections/cass.js.map +1 -0
  238. package/dist/experimental/entries/projections/cea.cjs +283 -0
  239. package/dist/experimental/entries/projections/cea.cjs.map +6 -0
  240. package/dist/experimental/entries/projections/cea.d.ts +2 -0
  241. package/dist/experimental/entries/projections/cea.d.ts.map +1 -0
  242. package/dist/experimental/entries/projections/cea.js +5 -0
  243. package/dist/experimental/entries/projections/cea.js.map +1 -0
  244. package/dist/experimental/entries/projections/eck6.cjs +306 -0
  245. package/dist/experimental/entries/projections/eck6.cjs.map +6 -0
  246. package/dist/experimental/entries/projections/eck6.d.ts +2 -0
  247. package/dist/experimental/entries/projections/eck6.d.ts.map +1 -0
  248. package/dist/experimental/entries/projections/eck6.js +5 -0
  249. package/dist/experimental/entries/projections/eck6.js.map +1 -0
  250. package/dist/experimental/entries/projections/eqc.cjs +119 -0
  251. package/dist/experimental/entries/projections/eqc.cjs.map +6 -0
  252. package/dist/experimental/entries/projections/eqc.d.ts +2 -0
  253. package/dist/experimental/entries/projections/eqc.d.ts.map +1 -0
  254. package/dist/experimental/entries/projections/eqc.js +5 -0
  255. package/dist/experimental/entries/projections/eqc.js.map +1 -0
  256. package/dist/experimental/entries/projections/eqdc.cjs +377 -0
  257. package/dist/experimental/entries/projections/eqdc.cjs.map +6 -0
  258. package/dist/experimental/entries/projections/eqdc.d.ts +2 -0
  259. package/dist/experimental/entries/projections/eqdc.d.ts.map +1 -0
  260. package/dist/experimental/entries/projections/eqdc.js +5 -0
  261. package/dist/experimental/entries/projections/eqdc.js.map +1 -0
  262. package/dist/experimental/entries/projections/eqearth.cjs +292 -0
  263. package/dist/experimental/entries/projections/eqearth.cjs.map +6 -0
  264. package/dist/experimental/entries/projections/eqearth.d.ts +2 -0
  265. package/dist/experimental/entries/projections/eqearth.d.ts.map +1 -0
  266. package/dist/experimental/entries/projections/eqearth.js +5 -0
  267. package/dist/experimental/entries/projections/eqearth.js.map +1 -0
  268. package/dist/experimental/entries/projections/equi.cjs +222 -0
  269. package/dist/experimental/entries/projections/equi.cjs.map +6 -0
  270. package/dist/experimental/entries/projections/equi.d.ts +2 -0
  271. package/dist/experimental/entries/projections/equi.d.ts.map +1 -0
  272. package/dist/experimental/entries/projections/equi.js +5 -0
  273. package/dist/experimental/entries/projections/equi.js.map +1 -0
  274. package/dist/experimental/entries/projections/etmerc.cjs +618 -0
  275. package/dist/experimental/entries/projections/etmerc.cjs.map +6 -0
  276. package/dist/experimental/entries/projections/etmerc.d.ts +2 -0
  277. package/dist/experimental/entries/projections/etmerc.d.ts.map +1 -0
  278. package/dist/experimental/entries/projections/etmerc.js +5 -0
  279. package/dist/experimental/entries/projections/etmerc.js.map +1 -0
  280. package/dist/experimental/entries/projections/geocent.cjs +161 -0
  281. package/dist/experimental/entries/projections/geocent.cjs.map +6 -0
  282. package/dist/experimental/entries/projections/geocent.d.ts +2 -0
  283. package/dist/experimental/entries/projections/geocent.d.ts.map +1 -0
  284. package/dist/experimental/entries/projections/geocent.js +5 -0
  285. package/dist/experimental/entries/projections/geocent.js.map +1 -0
  286. package/dist/experimental/entries/projections/geos.cjs +328 -0
  287. package/dist/experimental/entries/projections/geos.cjs.map +6 -0
  288. package/dist/experimental/entries/projections/geos.d.ts +2 -0
  289. package/dist/experimental/entries/projections/geos.d.ts.map +1 -0
  290. package/dist/experimental/entries/projections/geos.js +5 -0
  291. package/dist/experimental/entries/projections/geos.js.map +1 -0
  292. package/dist/experimental/entries/projections/gnom.cjs +274 -0
  293. package/dist/experimental/entries/projections/gnom.cjs.map +6 -0
  294. package/dist/experimental/entries/projections/gnom.d.ts +2 -0
  295. package/dist/experimental/entries/projections/gnom.d.ts.map +1 -0
  296. package/dist/experimental/entries/projections/gnom.js +5 -0
  297. package/dist/experimental/entries/projections/gnom.js.map +1 -0
  298. package/dist/experimental/entries/projections/gstmerc.cjs +266 -0
  299. package/dist/experimental/entries/projections/gstmerc.cjs.map +6 -0
  300. package/dist/experimental/entries/projections/gstmerc.d.ts +2 -0
  301. package/dist/experimental/entries/projections/gstmerc.d.ts.map +1 -0
  302. package/dist/experimental/entries/projections/gstmerc.js +5 -0
  303. package/dist/experimental/entries/projections/gstmerc.js.map +1 -0
  304. package/dist/experimental/entries/projections/krovak.cjs +301 -0
  305. package/dist/experimental/entries/projections/krovak.cjs.map +6 -0
  306. package/dist/experimental/entries/projections/krovak.d.ts +2 -0
  307. package/dist/experimental/entries/projections/krovak.d.ts.map +1 -0
  308. package/dist/experimental/entries/projections/krovak.js +5 -0
  309. package/dist/experimental/entries/projections/krovak.js.map +1 -0
  310. package/dist/experimental/entries/projections/laea.cjs +477 -0
  311. package/dist/experimental/entries/projections/laea.cjs.map +6 -0
  312. package/dist/experimental/entries/projections/laea.d.ts +2 -0
  313. package/dist/experimental/entries/projections/laea.d.ts.map +1 -0
  314. package/dist/experimental/entries/projections/laea.js +5 -0
  315. package/dist/experimental/entries/projections/laea.js.map +1 -0
  316. package/dist/experimental/entries/projections/lcc.cjs +368 -0
  317. package/dist/experimental/entries/projections/lcc.cjs.map +6 -0
  318. package/dist/experimental/entries/projections/lcc.d.ts +2 -0
  319. package/dist/experimental/entries/projections/lcc.d.ts.map +1 -0
  320. package/dist/experimental/entries/projections/lcc.js +5 -0
  321. package/dist/experimental/entries/projections/lcc.js.map +1 -0
  322. package/dist/experimental/entries/projections/merc.cjs +201 -0
  323. package/dist/experimental/entries/projections/merc.cjs.map +6 -0
  324. package/dist/experimental/entries/projections/merc.d.ts +2 -0
  325. package/dist/experimental/entries/projections/merc.d.ts.map +1 -0
  326. package/dist/experimental/entries/projections/merc.js +5 -0
  327. package/dist/experimental/entries/projections/merc.js.map +1 -0
  328. package/dist/experimental/entries/projections/mill.cjs +217 -0
  329. package/dist/experimental/entries/projections/mill.cjs.map +6 -0
  330. package/dist/experimental/entries/projections/mill.d.ts +2 -0
  331. package/dist/experimental/entries/projections/mill.d.ts.map +1 -0
  332. package/dist/experimental/entries/projections/mill.js +5 -0
  333. package/dist/experimental/entries/projections/mill.js.map +1 -0
  334. package/dist/experimental/entries/projections/moll.cjs +257 -0
  335. package/dist/experimental/entries/projections/moll.cjs.map +6 -0
  336. package/dist/experimental/entries/projections/moll.d.ts +2 -0
  337. package/dist/experimental/entries/projections/moll.d.ts.map +1 -0
  338. package/dist/experimental/entries/projections/moll.js +5 -0
  339. package/dist/experimental/entries/projections/moll.js.map +1 -0
  340. package/dist/experimental/entries/projections/nzmg.cjs +346 -0
  341. package/dist/experimental/entries/projections/nzmg.cjs.map +6 -0
  342. package/dist/experimental/entries/projections/nzmg.d.ts +2 -0
  343. package/dist/experimental/entries/projections/nzmg.d.ts.map +1 -0
  344. package/dist/experimental/entries/projections/nzmg.js +5 -0
  345. package/dist/experimental/entries/projections/nzmg.js.map +1 -0
  346. package/dist/experimental/entries/projections/ob_tran.cjs +233 -0
  347. package/dist/experimental/entries/projections/ob_tran.cjs.map +6 -0
  348. package/dist/experimental/entries/projections/ob_tran.d.ts +2 -0
  349. package/dist/experimental/entries/projections/ob_tran.d.ts.map +1 -0
  350. package/dist/experimental/entries/projections/ob_tran.js +5 -0
  351. package/dist/experimental/entries/projections/ob_tran.js.map +1 -0
  352. package/dist/experimental/entries/projections/omerc.cjs +479 -0
  353. package/dist/experimental/entries/projections/omerc.cjs.map +6 -0
  354. package/dist/experimental/entries/projections/omerc.d.ts +2 -0
  355. package/dist/experimental/entries/projections/omerc.d.ts.map +1 -0
  356. package/dist/experimental/entries/projections/omerc.js +5 -0
  357. package/dist/experimental/entries/projections/omerc.js.map +1 -0
  358. package/dist/experimental/entries/projections/ortho.cjs +276 -0
  359. package/dist/experimental/entries/projections/ortho.cjs.map +6 -0
  360. package/dist/experimental/entries/projections/ortho.d.ts +2 -0
  361. package/dist/experimental/entries/projections/ortho.d.ts.map +1 -0
  362. package/dist/experimental/entries/projections/ortho.js +5 -0
  363. package/dist/experimental/entries/projections/ortho.js.map +1 -0
  364. package/dist/experimental/entries/projections/poly.cjs +326 -0
  365. package/dist/experimental/entries/projections/poly.cjs.map +6 -0
  366. package/dist/experimental/entries/projections/poly.d.ts +2 -0
  367. package/dist/experimental/entries/projections/poly.d.ts.map +1 -0
  368. package/dist/experimental/entries/projections/poly.js +5 -0
  369. package/dist/experimental/entries/projections/poly.js.map +1 -0
  370. package/dist/experimental/entries/projections/qsc.cjs +455 -0
  371. package/dist/experimental/entries/projections/qsc.cjs.map +6 -0
  372. package/dist/experimental/entries/projections/qsc.d.ts +2 -0
  373. package/dist/experimental/entries/projections/qsc.d.ts.map +1 -0
  374. package/dist/experimental/entries/projections/qsc.js +5 -0
  375. package/dist/experimental/entries/projections/qsc.js.map +1 -0
  376. package/dist/experimental/entries/projections/robin.cjs +331 -0
  377. package/dist/experimental/entries/projections/robin.cjs.map +6 -0
  378. package/dist/experimental/entries/projections/robin.d.ts +2 -0
  379. package/dist/experimental/entries/projections/robin.d.ts.map +1 -0
  380. package/dist/experimental/entries/projections/robin.js +5 -0
  381. package/dist/experimental/entries/projections/robin.js.map +1 -0
  382. package/dist/experimental/entries/projections/sinu.cjs +330 -0
  383. package/dist/experimental/entries/projections/sinu.cjs.map +6 -0
  384. package/dist/experimental/entries/projections/sinu.d.ts +2 -0
  385. package/dist/experimental/entries/projections/sinu.d.ts.map +1 -0
  386. package/dist/experimental/entries/projections/sinu.js +5 -0
  387. package/dist/experimental/entries/projections/sinu.js.map +1 -0
  388. package/dist/experimental/entries/projections/somerc.cjs +228 -0
  389. package/dist/experimental/entries/projections/somerc.cjs.map +6 -0
  390. package/dist/experimental/entries/projections/somerc.d.ts +2 -0
  391. package/dist/experimental/entries/projections/somerc.d.ts.map +1 -0
  392. package/dist/experimental/entries/projections/somerc.js +5 -0
  393. package/dist/experimental/entries/projections/somerc.js.map +1 -0
  394. package/dist/experimental/entries/projections/stere.cjs +379 -0
  395. package/dist/experimental/entries/projections/stere.cjs.map +6 -0
  396. package/dist/experimental/entries/projections/stere.d.ts +2 -0
  397. package/dist/experimental/entries/projections/stere.d.ts.map +1 -0
  398. package/dist/experimental/entries/projections/stere.js +5 -0
  399. package/dist/experimental/entries/projections/stere.js.map +1 -0
  400. package/dist/experimental/entries/projections/sterea.cjs +328 -0
  401. package/dist/experimental/entries/projections/sterea.cjs.map +6 -0
  402. package/dist/experimental/entries/projections/sterea.d.ts +2 -0
  403. package/dist/experimental/entries/projections/sterea.d.ts.map +1 -0
  404. package/dist/experimental/entries/projections/sterea.js +5 -0
  405. package/dist/experimental/entries/projections/sterea.js.map +1 -0
  406. package/dist/experimental/entries/projections/tmerc.cjs +618 -0
  407. package/dist/experimental/entries/projections/tmerc.cjs.map +6 -0
  408. package/dist/experimental/entries/projections/tmerc.d.ts +2 -0
  409. package/dist/experimental/entries/projections/tmerc.d.ts.map +1 -0
  410. package/dist/experimental/entries/projections/tmerc.js +5 -0
  411. package/dist/experimental/entries/projections/tmerc.js.map +1 -0
  412. package/dist/experimental/entries/projections/tpers.cjs +340 -0
  413. package/dist/experimental/entries/projections/tpers.cjs.map +6 -0
  414. package/dist/experimental/entries/projections/tpers.d.ts +2 -0
  415. package/dist/experimental/entries/projections/tpers.d.ts.map +1 -0
  416. package/dist/experimental/entries/projections/tpers.js +5 -0
  417. package/dist/experimental/entries/projections/tpers.js.map +1 -0
  418. package/dist/experimental/entries/projections/utm.cjs +644 -0
  419. package/dist/experimental/entries/projections/utm.cjs.map +6 -0
  420. package/dist/experimental/entries/projections/utm.d.ts +2 -0
  421. package/dist/experimental/entries/projections/utm.d.ts.map +1 -0
  422. package/dist/experimental/entries/projections/utm.js +5 -0
  423. package/dist/experimental/entries/projections/utm.js.map +1 -0
  424. package/dist/experimental/entries/projections/vandg.cjs +301 -0
  425. package/dist/experimental/entries/projections/vandg.cjs.map +6 -0
  426. package/dist/experimental/entries/projections/vandg.d.ts +2 -0
  427. package/dist/experimental/entries/projections/vandg.d.ts.map +1 -0
  428. package/dist/experimental/entries/projections/vandg.js +5 -0
  429. package/dist/experimental/entries/projections/vandg.js.map +1 -0
  430. package/dist/experimental/exact-helmert.d.ts +9 -0
  431. package/dist/experimental/exact-helmert.d.ts.map +1 -0
  432. package/dist/experimental/exact-helmert.js +32 -0
  433. package/dist/experimental/exact-helmert.js.map +1 -0
  434. package/dist/experimental/flat-projection.d.ts +13 -0
  435. package/dist/experimental/flat-projection.d.ts.map +1 -0
  436. package/dist/experimental/flat-projection.js +61 -0
  437. package/dist/experimental/flat-projection.js.map +1 -0
  438. package/dist/experimental/grids/geotiff.cjs +180 -0
  439. package/dist/experimental/grids/geotiff.cjs.map +6 -0
  440. package/dist/experimental/grids/geotiff.d.ts +23 -0
  441. package/dist/experimental/grids/geotiff.d.ts.map +1 -0
  442. package/dist/experimental/grids/geotiff.js +59 -0
  443. package/dist/experimental/grids/geotiff.js.map +1 -0
  444. package/dist/experimental/grids/grid.d.ts +4 -0
  445. package/dist/experimental/grids/grid.d.ts.map +1 -0
  446. package/dist/experimental/grids/grid.js +111 -0
  447. package/dist/experimental/grids/grid.js.map +1 -0
  448. package/dist/experimental/grids/gtx.cjs +91 -0
  449. package/dist/experimental/grids/gtx.cjs.map +6 -0
  450. package/dist/experimental/grids/gtx.d.ts +7 -0
  451. package/dist/experimental/grids/gtx.d.ts.map +1 -0
  452. package/dist/experimental/grids/gtx.js +30 -0
  453. package/dist/experimental/grids/gtx.js.map +1 -0
  454. package/dist/experimental/grids/ntv2.cjs +181 -0
  455. package/dist/experimental/grids/ntv2.cjs.map +6 -0
  456. package/dist/experimental/grids/ntv2.d.ts +8 -0
  457. package/dist/experimental/grids/ntv2.d.ts.map +1 -0
  458. package/dist/experimental/grids/ntv2.js +56 -0
  459. package/dist/experimental/grids/ntv2.js.map +1 -0
  460. package/dist/experimental/grids/scalar-geotiff.d.ts +58 -0
  461. package/dist/experimental/grids/scalar-geotiff.d.ts.map +1 -0
  462. package/dist/experimental/grids/scalar-geotiff.js +147 -0
  463. package/dist/experimental/grids/scalar-geotiff.js.map +1 -0
  464. package/dist/experimental/grids/types.d.ts +35 -0
  465. package/dist/experimental/grids/types.d.ts.map +1 -0
  466. package/dist/experimental/grids/types.js +2 -0
  467. package/dist/experimental/grids/types.js.map +1 -0
  468. package/dist/experimental/grids/velocity-geotiff.cjs +247 -0
  469. package/dist/experimental/grids/velocity-geotiff.cjs.map +6 -0
  470. package/dist/experimental/grids/velocity-geotiff.d.ts +11 -0
  471. package/dist/experimental/grids/velocity-geotiff.d.ts.map +1 -0
  472. package/dist/experimental/grids/velocity-geotiff.js +61 -0
  473. package/dist/experimental/grids/velocity-geotiff.js.map +1 -0
  474. package/dist/experimental/grids/velocity.d.ts +21 -0
  475. package/dist/experimental/grids/velocity.d.ts.map +1 -0
  476. package/dist/experimental/grids/velocity.js +29 -0
  477. package/dist/experimental/grids/velocity.js.map +1 -0
  478. package/dist/experimental/grids/vertical-geotiff.cjs +195 -0
  479. package/dist/experimental/grids/vertical-geotiff.cjs.map +6 -0
  480. package/dist/experimental/grids/vertical-geotiff.d.ts +6 -0
  481. package/dist/experimental/grids/vertical-geotiff.d.ts.map +1 -0
  482. package/dist/experimental/grids/vertical-geotiff.js +20 -0
  483. package/dist/experimental/grids/vertical-geotiff.js.map +1 -0
  484. package/dist/experimental/grids/vertical.cjs +80 -0
  485. package/dist/experimental/grids/vertical.cjs.map +6 -0
  486. package/dist/experimental/grids/vertical.d.ts +22 -0
  487. package/dist/experimental/grids/vertical.d.ts.map +1 -0
  488. package/dist/experimental/grids/vertical.js +73 -0
  489. package/dist/experimental/grids/vertical.js.map +1 -0
  490. package/dist/experimental/helmert-flat.d.ts +4 -0
  491. package/dist/experimental/helmert-flat.d.ts.map +1 -0
  492. package/dist/experimental/helmert-flat.js +53 -0
  493. package/dist/experimental/helmert-flat.js.map +1 -0
  494. package/dist/experimental/index.cjs +10062 -0
  495. package/dist/experimental/index.cjs.map +6 -0
  496. package/dist/experimental/index.d.ts +49 -0
  497. package/dist/experimental/index.d.ts.map +1 -0
  498. package/dist/experimental/index.js +48 -0
  499. package/dist/experimental/index.js.map +1 -0
  500. package/dist/experimental/kernel.d.ts +36 -0
  501. package/dist/experimental/kernel.d.ts.map +1 -0
  502. package/dist/experimental/kernel.js +80 -0
  503. package/dist/experimental/kernel.js.map +1 -0
  504. package/dist/experimental/kernels/aea.d.ts +25 -0
  505. package/dist/experimental/kernels/aea.d.ts.map +1 -0
  506. package/dist/experimental/kernels/aea.js +136 -0
  507. package/dist/experimental/kernels/aea.js.map +1 -0
  508. package/dist/experimental/kernels/aeqd.d.ts +10 -0
  509. package/dist/experimental/kernels/aeqd.d.ts.map +1 -0
  510. package/dist/experimental/kernels/aeqd.js +176 -0
  511. package/dist/experimental/kernels/aeqd.js.map +1 -0
  512. package/dist/experimental/kernels/bonne.d.ts +12 -0
  513. package/dist/experimental/kernels/bonne.d.ts.map +1 -0
  514. package/dist/experimental/kernels/bonne.js +128 -0
  515. package/dist/experimental/kernels/bonne.js.map +1 -0
  516. package/dist/experimental/kernels/cass.d.ts +10 -0
  517. package/dist/experimental/kernels/cass.d.ts.map +1 -0
  518. package/dist/experimental/kernels/cass.js +122 -0
  519. package/dist/experimental/kernels/cass.js.map +1 -0
  520. package/dist/experimental/kernels/cea.d.ts +6 -0
  521. package/dist/experimental/kernels/cea.d.ts.map +1 -0
  522. package/dist/experimental/kernels/cea.js +63 -0
  523. package/dist/experimental/kernels/cea.js.map +1 -0
  524. package/dist/experimental/kernels/eck6.d.ts +13 -0
  525. package/dist/experimental/kernels/eck6.d.ts.map +1 -0
  526. package/dist/experimental/kernels/eck6.js +23 -0
  527. package/dist/experimental/kernels/eck6.js.map +1 -0
  528. package/dist/experimental/kernels/eqdc.d.ts +19 -0
  529. package/dist/experimental/kernels/eqdc.d.ts.map +1 -0
  530. package/dist/experimental/kernels/eqdc.js +117 -0
  531. package/dist/experimental/kernels/eqdc.js.map +1 -0
  532. package/dist/experimental/kernels/eqearth.d.ts +10 -0
  533. package/dist/experimental/kernels/eqearth.d.ts.map +1 -0
  534. package/dist/experimental/kernels/eqearth.js +103 -0
  535. package/dist/experimental/kernels/eqearth.js.map +1 -0
  536. package/dist/experimental/kernels/equi.d.ts +9 -0
  537. package/dist/experimental/kernels/equi.d.ts.map +1 -0
  538. package/dist/experimental/kernels/equi.js +41 -0
  539. package/dist/experimental/kernels/equi.js.map +1 -0
  540. package/dist/experimental/kernels/etmerc.d.ts +13 -0
  541. package/dist/experimental/kernels/etmerc.d.ts.map +1 -0
  542. package/dist/experimental/kernels/etmerc.js +145 -0
  543. package/dist/experimental/kernels/etmerc.js.map +1 -0
  544. package/dist/experimental/kernels/gauss.d.ts +12 -0
  545. package/dist/experimental/kernels/gauss.d.ts.map +1 -0
  546. package/dist/experimental/kernels/gauss.js +64 -0
  547. package/dist/experimental/kernels/gauss.js.map +1 -0
  548. package/dist/experimental/kernels/geos.d.ts +17 -0
  549. package/dist/experimental/kernels/geos.d.ts.map +1 -0
  550. package/dist/experimental/kernels/geos.js +153 -0
  551. package/dist/experimental/kernels/geos.js.map +1 -0
  552. package/dist/experimental/kernels/gnom.d.ts +12 -0
  553. package/dist/experimental/kernels/gnom.d.ts.map +1 -0
  554. package/dist/experimental/kernels/gnom.js +95 -0
  555. package/dist/experimental/kernels/gnom.js.map +1 -0
  556. package/dist/experimental/kernels/gstmerc.d.ts +13 -0
  557. package/dist/experimental/kernels/gstmerc.d.ts.map +1 -0
  558. package/dist/experimental/kernels/gstmerc.js +57 -0
  559. package/dist/experimental/kernels/gstmerc.js.map +1 -0
  560. package/dist/experimental/kernels/krovak.d.ts +23 -0
  561. package/dist/experimental/kernels/krovak.d.ts.map +1 -0
  562. package/dist/experimental/kernels/krovak.js +128 -0
  563. package/dist/experimental/kernels/krovak.js.map +1 -0
  564. package/dist/experimental/kernels/laea.d.ts +23 -0
  565. package/dist/experimental/kernels/laea.d.ts.map +1 -0
  566. package/dist/experimental/kernels/laea.js +278 -0
  567. package/dist/experimental/kernels/laea.js.map +1 -0
  568. package/dist/experimental/kernels/lcc.d.ts +10 -0
  569. package/dist/experimental/kernels/lcc.d.ts.map +1 -0
  570. package/dist/experimental/kernels/lcc.js +131 -0
  571. package/dist/experimental/kernels/lcc.js.map +1 -0
  572. package/dist/experimental/kernels/mill.d.ts +6 -0
  573. package/dist/experimental/kernels/mill.d.ts.map +1 -0
  574. package/dist/experimental/kernels/mill.js +49 -0
  575. package/dist/experimental/kernels/mill.js.map +1 -0
  576. package/dist/experimental/kernels/moll.d.ts +6 -0
  577. package/dist/experimental/kernels/moll.d.ts.map +1 -0
  578. package/dist/experimental/kernels/moll.js +89 -0
  579. package/dist/experimental/kernels/moll.js.map +1 -0
  580. package/dist/experimental/kernels/nzmg.d.ts +28 -0
  581. package/dist/experimental/kernels/nzmg.d.ts.map +1 -0
  582. package/dist/experimental/kernels/nzmg.js +209 -0
  583. package/dist/experimental/kernels/nzmg.js.map +1 -0
  584. package/dist/experimental/kernels/omerc.d.ts +30 -0
  585. package/dist/experimental/kernels/omerc.d.ts.map +1 -0
  586. package/dist/experimental/kernels/omerc.js +260 -0
  587. package/dist/experimental/kernels/omerc.js.map +1 -0
  588. package/dist/experimental/kernels/ortho.d.ts +9 -0
  589. package/dist/experimental/kernels/ortho.d.ts.map +1 -0
  590. package/dist/experimental/kernels/ortho.js +91 -0
  591. package/dist/experimental/kernels/ortho.js.map +1 -0
  592. package/dist/experimental/kernels/poly.d.ts +13 -0
  593. package/dist/experimental/kernels/poly.d.ts.map +1 -0
  594. package/dist/experimental/kernels/poly.js +141 -0
  595. package/dist/experimental/kernels/poly.js.map +1 -0
  596. package/dist/experimental/kernels/qsc.d.ts +10 -0
  597. package/dist/experimental/kernels/qsc.d.ts.map +1 -0
  598. package/dist/experimental/kernels/qsc.js +379 -0
  599. package/dist/experimental/kernels/qsc.js.map +1 -0
  600. package/dist/experimental/kernels/robin.d.ts +6 -0
  601. package/dist/experimental/kernels/robin.d.ts.map +1 -0
  602. package/dist/experimental/kernels/robin.js +166 -0
  603. package/dist/experimental/kernels/robin.js.map +1 -0
  604. package/dist/experimental/kernels/sinu.d.ts +12 -0
  605. package/dist/experimental/kernels/sinu.d.ts.map +1 -0
  606. package/dist/experimental/kernels/sinu.js +104 -0
  607. package/dist/experimental/kernels/sinu.js.map +1 -0
  608. package/dist/experimental/kernels/somerc.d.ts +13 -0
  609. package/dist/experimental/kernels/somerc.d.ts.map +1 -0
  610. package/dist/experimental/kernels/somerc.js +81 -0
  611. package/dist/experimental/kernels/somerc.js.map +1 -0
  612. package/dist/experimental/kernels/stere.d.ts +15 -0
  613. package/dist/experimental/kernels/stere.d.ts.map +1 -0
  614. package/dist/experimental/kernels/stere.js +195 -0
  615. package/dist/experimental/kernels/stere.js.map +1 -0
  616. package/dist/experimental/kernels/sterea.d.ts +11 -0
  617. package/dist/experimental/kernels/sterea.d.ts.map +1 -0
  618. package/dist/experimental/kernels/sterea.js +65 -0
  619. package/dist/experimental/kernels/sterea.js.map +1 -0
  620. package/dist/experimental/kernels/tmerc.d.ts +9 -0
  621. package/dist/experimental/kernels/tmerc.d.ts.map +1 -0
  622. package/dist/experimental/kernels/tmerc.js +201 -0
  623. package/dist/experimental/kernels/tmerc.js.map +1 -0
  624. package/dist/experimental/kernels/tpers.d.ts +22 -0
  625. package/dist/experimental/kernels/tpers.d.ts.map +1 -0
  626. package/dist/experimental/kernels/tpers.js +156 -0
  627. package/dist/experimental/kernels/tpers.js.map +1 -0
  628. package/dist/experimental/kernels/vandg.d.ts +8 -0
  629. package/dist/experimental/kernels/vandg.d.ts.map +1 -0
  630. package/dist/experimental/kernels/vandg.js +132 -0
  631. package/dist/experimental/kernels/vandg.js.map +1 -0
  632. package/dist/experimental/kinematic-helmert-flat.d.ts +4 -0
  633. package/dist/experimental/kinematic-helmert-flat.d.ts.map +1 -0
  634. package/dist/experimental/kinematic-helmert-flat.js +60 -0
  635. package/dist/experimental/kinematic-helmert-flat.js.map +1 -0
  636. package/dist/experimental/kinematic-helmert.d.ts +11 -0
  637. package/dist/experimental/kinematic-helmert.d.ts.map +1 -0
  638. package/dist/experimental/kinematic-helmert.js +103 -0
  639. package/dist/experimental/kinematic-helmert.js.map +1 -0
  640. package/dist/experimental/lazy-projection.d.ts +11 -0
  641. package/dist/experimental/lazy-projection.d.ts.map +1 -0
  642. package/dist/experimental/lazy-projection.js +138 -0
  643. package/dist/experimental/lazy-projection.js.map +1 -0
  644. package/dist/experimental/lazy-projections/aea.cjs +79 -0
  645. package/dist/experimental/lazy-projections/aea.cjs.map +6 -0
  646. package/dist/experimental/lazy-projections/aea.d.ts +3 -0
  647. package/dist/experimental/lazy-projections/aea.d.ts.map +1 -0
  648. package/dist/experimental/lazy-projections/aea.js +7 -0
  649. package/dist/experimental/lazy-projections/aea.js.map +1 -0
  650. package/dist/experimental/lazy-projections/aeqd.cjs +79 -0
  651. package/dist/experimental/lazy-projections/aeqd.cjs.map +6 -0
  652. package/dist/experimental/lazy-projections/aeqd.d.ts +3 -0
  653. package/dist/experimental/lazy-projections/aeqd.d.ts.map +1 -0
  654. package/dist/experimental/lazy-projections/aeqd.js +8 -0
  655. package/dist/experimental/lazy-projections/aeqd.js.map +1 -0
  656. package/dist/experimental/lazy-projections/bonne.cjs +79 -0
  657. package/dist/experimental/lazy-projections/bonne.cjs.map +6 -0
  658. package/dist/experimental/lazy-projections/bonne.d.ts +3 -0
  659. package/dist/experimental/lazy-projections/bonne.d.ts.map +1 -0
  660. package/dist/experimental/lazy-projections/bonne.js +7 -0
  661. package/dist/experimental/lazy-projections/bonne.js.map +1 -0
  662. package/dist/experimental/lazy-projections/cass.cjs +79 -0
  663. package/dist/experimental/lazy-projections/cass.cjs.map +6 -0
  664. package/dist/experimental/lazy-projections/cass.d.ts +3 -0
  665. package/dist/experimental/lazy-projections/cass.d.ts.map +1 -0
  666. package/dist/experimental/lazy-projections/cass.js +7 -0
  667. package/dist/experimental/lazy-projections/cass.js.map +1 -0
  668. package/dist/experimental/lazy-projections/cea.cjs +79 -0
  669. package/dist/experimental/lazy-projections/cea.cjs.map +6 -0
  670. package/dist/experimental/lazy-projections/cea.d.ts +3 -0
  671. package/dist/experimental/lazy-projections/cea.d.ts.map +1 -0
  672. package/dist/experimental/lazy-projections/cea.js +8 -0
  673. package/dist/experimental/lazy-projections/cea.js.map +1 -0
  674. package/dist/experimental/lazy-projections/eck6.cjs +79 -0
  675. package/dist/experimental/lazy-projections/eck6.cjs.map +6 -0
  676. package/dist/experimental/lazy-projections/eck6.d.ts +3 -0
  677. package/dist/experimental/lazy-projections/eck6.d.ts.map +1 -0
  678. package/dist/experimental/lazy-projections/eck6.js +7 -0
  679. package/dist/experimental/lazy-projections/eck6.js.map +1 -0
  680. package/dist/experimental/lazy-projections/eqc.cjs +82 -0
  681. package/dist/experimental/lazy-projections/eqc.cjs.map +6 -0
  682. package/dist/experimental/lazy-projections/eqc.d.ts +3 -0
  683. package/dist/experimental/lazy-projections/eqc.d.ts.map +1 -0
  684. package/dist/experimental/lazy-projections/eqc.js +11 -0
  685. package/dist/experimental/lazy-projections/eqc.js.map +1 -0
  686. package/dist/experimental/lazy-projections/eqdc.cjs +79 -0
  687. package/dist/experimental/lazy-projections/eqdc.cjs.map +6 -0
  688. package/dist/experimental/lazy-projections/eqdc.d.ts +3 -0
  689. package/dist/experimental/lazy-projections/eqdc.d.ts.map +1 -0
  690. package/dist/experimental/lazy-projections/eqdc.js +8 -0
  691. package/dist/experimental/lazy-projections/eqdc.js.map +1 -0
  692. package/dist/experimental/lazy-projections/eqearth.cjs +79 -0
  693. package/dist/experimental/lazy-projections/eqearth.cjs.map +6 -0
  694. package/dist/experimental/lazy-projections/eqearth.d.ts +3 -0
  695. package/dist/experimental/lazy-projections/eqearth.d.ts.map +1 -0
  696. package/dist/experimental/lazy-projections/eqearth.js +7 -0
  697. package/dist/experimental/lazy-projections/eqearth.js.map +1 -0
  698. package/dist/experimental/lazy-projections/equi.cjs +79 -0
  699. package/dist/experimental/lazy-projections/equi.cjs.map +6 -0
  700. package/dist/experimental/lazy-projections/equi.d.ts +3 -0
  701. package/dist/experimental/lazy-projections/equi.d.ts.map +1 -0
  702. package/dist/experimental/lazy-projections/equi.js +7 -0
  703. package/dist/experimental/lazy-projections/equi.js.map +1 -0
  704. package/dist/experimental/lazy-projections/etmerc.cjs +79 -0
  705. package/dist/experimental/lazy-projections/etmerc.cjs.map +6 -0
  706. package/dist/experimental/lazy-projections/etmerc.d.ts +3 -0
  707. package/dist/experimental/lazy-projections/etmerc.d.ts.map +1 -0
  708. package/dist/experimental/lazy-projections/etmerc.js +8 -0
  709. package/dist/experimental/lazy-projections/etmerc.js.map +1 -0
  710. package/dist/experimental/lazy-projections/geocent.cjs +79 -0
  711. package/dist/experimental/lazy-projections/geocent.cjs.map +6 -0
  712. package/dist/experimental/lazy-projections/geocent.d.ts +3 -0
  713. package/dist/experimental/lazy-projections/geocent.d.ts.map +1 -0
  714. package/dist/experimental/lazy-projections/geocent.js +7 -0
  715. package/dist/experimental/lazy-projections/geocent.js.map +1 -0
  716. package/dist/experimental/lazy-projections/geos.cjs +79 -0
  717. package/dist/experimental/lazy-projections/geos.cjs.map +6 -0
  718. package/dist/experimental/lazy-projections/geos.d.ts +3 -0
  719. package/dist/experimental/lazy-projections/geos.d.ts.map +1 -0
  720. package/dist/experimental/lazy-projections/geos.js +7 -0
  721. package/dist/experimental/lazy-projections/geos.js.map +1 -0
  722. package/dist/experimental/lazy-projections/gnom.cjs +79 -0
  723. package/dist/experimental/lazy-projections/gnom.cjs.map +6 -0
  724. package/dist/experimental/lazy-projections/gnom.d.ts +3 -0
  725. package/dist/experimental/lazy-projections/gnom.d.ts.map +1 -0
  726. package/dist/experimental/lazy-projections/gnom.js +7 -0
  727. package/dist/experimental/lazy-projections/gnom.js.map +1 -0
  728. package/dist/experimental/lazy-projections/gstmerc.cjs +79 -0
  729. package/dist/experimental/lazy-projections/gstmerc.cjs.map +6 -0
  730. package/dist/experimental/lazy-projections/gstmerc.d.ts +3 -0
  731. package/dist/experimental/lazy-projections/gstmerc.d.ts.map +1 -0
  732. package/dist/experimental/lazy-projections/gstmerc.js +8 -0
  733. package/dist/experimental/lazy-projections/gstmerc.js.map +1 -0
  734. package/dist/experimental/lazy-projections/index.cjs +3177 -0
  735. package/dist/experimental/lazy-projections/index.cjs.map +6 -0
  736. package/dist/experimental/lazy-projections/index.d.ts +39 -0
  737. package/dist/experimental/lazy-projections/index.d.ts.map +1 -0
  738. package/dist/experimental/lazy-projections/index.js +41 -0
  739. package/dist/experimental/lazy-projections/index.js.map +1 -0
  740. package/dist/experimental/lazy-projections/krovak.cjs +87 -0
  741. package/dist/experimental/lazy-projections/krovak.cjs.map +6 -0
  742. package/dist/experimental/lazy-projections/krovak.d.ts +3 -0
  743. package/dist/experimental/lazy-projections/krovak.d.ts.map +1 -0
  744. package/dist/experimental/lazy-projections/krovak.js +15 -0
  745. package/dist/experimental/lazy-projections/krovak.js.map +1 -0
  746. package/dist/experimental/lazy-projections/laea.cjs +79 -0
  747. package/dist/experimental/lazy-projections/laea.cjs.map +6 -0
  748. package/dist/experimental/lazy-projections/laea.d.ts +3 -0
  749. package/dist/experimental/lazy-projections/laea.d.ts.map +1 -0
  750. package/dist/experimental/lazy-projections/laea.js +8 -0
  751. package/dist/experimental/lazy-projections/laea.js.map +1 -0
  752. package/dist/experimental/lazy-projections/lcc.cjs +89 -0
  753. package/dist/experimental/lazy-projections/lcc.cjs.map +6 -0
  754. package/dist/experimental/lazy-projections/lcc.d.ts +3 -0
  755. package/dist/experimental/lazy-projections/lcc.d.ts.map +1 -0
  756. package/dist/experimental/lazy-projections/lcc.js +18 -0
  757. package/dist/experimental/lazy-projections/lcc.js.map +1 -0
  758. package/dist/experimental/lazy-projections/merc.cjs +88 -0
  759. package/dist/experimental/lazy-projections/merc.cjs.map +6 -0
  760. package/dist/experimental/lazy-projections/merc.d.ts +3 -0
  761. package/dist/experimental/lazy-projections/merc.d.ts.map +1 -0
  762. package/dist/experimental/lazy-projections/merc.js +16 -0
  763. package/dist/experimental/lazy-projections/merc.js.map +1 -0
  764. package/dist/experimental/lazy-projections/mill.cjs +79 -0
  765. package/dist/experimental/lazy-projections/mill.cjs.map +6 -0
  766. package/dist/experimental/lazy-projections/mill.d.ts +3 -0
  767. package/dist/experimental/lazy-projections/mill.d.ts.map +1 -0
  768. package/dist/experimental/lazy-projections/mill.js +8 -0
  769. package/dist/experimental/lazy-projections/mill.js.map +1 -0
  770. package/dist/experimental/lazy-projections/moll.cjs +79 -0
  771. package/dist/experimental/lazy-projections/moll.cjs.map +6 -0
  772. package/dist/experimental/lazy-projections/moll.d.ts +3 -0
  773. package/dist/experimental/lazy-projections/moll.d.ts.map +1 -0
  774. package/dist/experimental/lazy-projections/moll.js +7 -0
  775. package/dist/experimental/lazy-projections/moll.js.map +1 -0
  776. package/dist/experimental/lazy-projections/nzmg.cjs +79 -0
  777. package/dist/experimental/lazy-projections/nzmg.cjs.map +6 -0
  778. package/dist/experimental/lazy-projections/nzmg.d.ts +3 -0
  779. package/dist/experimental/lazy-projections/nzmg.d.ts.map +1 -0
  780. package/dist/experimental/lazy-projections/nzmg.js +8 -0
  781. package/dist/experimental/lazy-projections/nzmg.js.map +1 -0
  782. package/dist/experimental/lazy-projections/ob_tran.cjs +90 -0
  783. package/dist/experimental/lazy-projections/ob_tran.cjs.map +6 -0
  784. package/dist/experimental/lazy-projections/ob_tran.d.ts +5 -0
  785. package/dist/experimental/lazy-projections/ob_tran.d.ts.map +1 -0
  786. package/dist/experimental/lazy-projections/ob_tran.js +18 -0
  787. package/dist/experimental/lazy-projections/ob_tran.js.map +1 -0
  788. package/dist/experimental/lazy-projections/omerc.cjs +91 -0
  789. package/dist/experimental/lazy-projections/omerc.cjs.map +6 -0
  790. package/dist/experimental/lazy-projections/omerc.d.ts +3 -0
  791. package/dist/experimental/lazy-projections/omerc.d.ts.map +1 -0
  792. package/dist/experimental/lazy-projections/omerc.js +19 -0
  793. package/dist/experimental/lazy-projections/omerc.js.map +1 -0
  794. package/dist/experimental/lazy-projections/ortho.cjs +79 -0
  795. package/dist/experimental/lazy-projections/ortho.cjs.map +6 -0
  796. package/dist/experimental/lazy-projections/ortho.d.ts +3 -0
  797. package/dist/experimental/lazy-projections/ortho.d.ts.map +1 -0
  798. package/dist/experimental/lazy-projections/ortho.js +7 -0
  799. package/dist/experimental/lazy-projections/ortho.js.map +1 -0
  800. package/dist/experimental/lazy-projections/poly.cjs +79 -0
  801. package/dist/experimental/lazy-projections/poly.cjs.map +6 -0
  802. package/dist/experimental/lazy-projections/poly.d.ts +3 -0
  803. package/dist/experimental/lazy-projections/poly.d.ts.map +1 -0
  804. package/dist/experimental/lazy-projections/poly.js +7 -0
  805. package/dist/experimental/lazy-projections/poly.js.map +1 -0
  806. package/dist/experimental/lazy-projections/qsc.cjs +82 -0
  807. package/dist/experimental/lazy-projections/qsc.cjs.map +6 -0
  808. package/dist/experimental/lazy-projections/qsc.d.ts +3 -0
  809. package/dist/experimental/lazy-projections/qsc.d.ts.map +1 -0
  810. package/dist/experimental/lazy-projections/qsc.js +11 -0
  811. package/dist/experimental/lazy-projections/qsc.js.map +1 -0
  812. package/dist/experimental/lazy-projections/robin.cjs +79 -0
  813. package/dist/experimental/lazy-projections/robin.cjs.map +6 -0
  814. package/dist/experimental/lazy-projections/robin.d.ts +3 -0
  815. package/dist/experimental/lazy-projections/robin.d.ts.map +1 -0
  816. package/dist/experimental/lazy-projections/robin.js +7 -0
  817. package/dist/experimental/lazy-projections/robin.js.map +1 -0
  818. package/dist/experimental/lazy-projections/sinu.cjs +79 -0
  819. package/dist/experimental/lazy-projections/sinu.cjs.map +6 -0
  820. package/dist/experimental/lazy-projections/sinu.d.ts +3 -0
  821. package/dist/experimental/lazy-projections/sinu.d.ts.map +1 -0
  822. package/dist/experimental/lazy-projections/sinu.js +7 -0
  823. package/dist/experimental/lazy-projections/sinu.js.map +1 -0
  824. package/dist/experimental/lazy-projections/somerc.cjs +79 -0
  825. package/dist/experimental/lazy-projections/somerc.cjs.map +6 -0
  826. package/dist/experimental/lazy-projections/somerc.d.ts +3 -0
  827. package/dist/experimental/lazy-projections/somerc.d.ts.map +1 -0
  828. package/dist/experimental/lazy-projections/somerc.js +8 -0
  829. package/dist/experimental/lazy-projections/somerc.js.map +1 -0
  830. package/dist/experimental/lazy-projections/stere.cjs +87 -0
  831. package/dist/experimental/lazy-projections/stere.cjs.map +6 -0
  832. package/dist/experimental/lazy-projections/stere.d.ts +3 -0
  833. package/dist/experimental/lazy-projections/stere.d.ts.map +1 -0
  834. package/dist/experimental/lazy-projections/stere.js +15 -0
  835. package/dist/experimental/lazy-projections/stere.js.map +1 -0
  836. package/dist/experimental/lazy-projections/sterea.cjs +87 -0
  837. package/dist/experimental/lazy-projections/sterea.cjs.map +6 -0
  838. package/dist/experimental/lazy-projections/sterea.d.ts +3 -0
  839. package/dist/experimental/lazy-projections/sterea.d.ts.map +1 -0
  840. package/dist/experimental/lazy-projections/sterea.js +16 -0
  841. package/dist/experimental/lazy-projections/sterea.js.map +1 -0
  842. package/dist/experimental/lazy-projections/tmerc.cjs +89 -0
  843. package/dist/experimental/lazy-projections/tmerc.cjs.map +6 -0
  844. package/dist/experimental/lazy-projections/tmerc.d.ts +3 -0
  845. package/dist/experimental/lazy-projections/tmerc.d.ts.map +1 -0
  846. package/dist/experimental/lazy-projections/tmerc.js +18 -0
  847. package/dist/experimental/lazy-projections/tmerc.js.map +1 -0
  848. package/dist/experimental/lazy-projections/tpers.cjs +79 -0
  849. package/dist/experimental/lazy-projections/tpers.cjs.map +6 -0
  850. package/dist/experimental/lazy-projections/tpers.d.ts +3 -0
  851. package/dist/experimental/lazy-projections/tpers.d.ts.map +1 -0
  852. package/dist/experimental/lazy-projections/tpers.js +8 -0
  853. package/dist/experimental/lazy-projections/tpers.js.map +1 -0
  854. package/dist/experimental/lazy-projections/utm.cjs +79 -0
  855. package/dist/experimental/lazy-projections/utm.cjs.map +6 -0
  856. package/dist/experimental/lazy-projections/utm.d.ts +3 -0
  857. package/dist/experimental/lazy-projections/utm.d.ts.map +1 -0
  858. package/dist/experimental/lazy-projections/utm.js +8 -0
  859. package/dist/experimental/lazy-projections/utm.js.map +1 -0
  860. package/dist/experimental/lazy-projections/vandg.cjs +79 -0
  861. package/dist/experimental/lazy-projections/vandg.cjs.map +6 -0
  862. package/dist/experimental/lazy-projections/vandg.d.ts +3 -0
  863. package/dist/experimental/lazy-projections/vandg.d.ts.map +1 -0
  864. package/dist/experimental/lazy-projections/vandg.js +7 -0
  865. package/dist/experimental/lazy-projections/vandg.js.map +1 -0
  866. package/dist/experimental/mutable-projection.d.ts +6 -0
  867. package/dist/experimental/mutable-projection.d.ts.map +1 -0
  868. package/dist/experimental/mutable-projection.js +53 -0
  869. package/dist/experimental/mutable-projection.js.map +1 -0
  870. package/dist/experimental/numeric-flat.d.ts +8 -0
  871. package/dist/experimental/numeric-flat.d.ts.map +1 -0
  872. package/dist/experimental/numeric-flat.js +54 -0
  873. package/dist/experimental/numeric-flat.js.map +1 -0
  874. package/dist/experimental/parameters.d.ts +7 -0
  875. package/dist/experimental/parameters.d.ts.map +1 -0
  876. package/dist/experimental/parameters.js +30 -0
  877. package/dist/experimental/parameters.js.map +1 -0
  878. package/dist/experimental/projection-descriptor.d.ts +13 -0
  879. package/dist/experimental/projection-descriptor.d.ts.map +1 -0
  880. package/dist/experimental/projection-descriptor.js +52 -0
  881. package/dist/experimental/projection-descriptor.js.map +1 -0
  882. package/dist/experimental/projection-pipeline.d.ts +142 -0
  883. package/dist/experimental/projection-pipeline.d.ts.map +1 -0
  884. package/dist/experimental/projection-pipeline.js +746 -0
  885. package/dist/experimental/projection-pipeline.js.map +1 -0
  886. package/dist/experimental/projection-scratch.d.ts +9 -0
  887. package/dist/experimental/projection-scratch.d.ts.map +1 -0
  888. package/dist/experimental/projection-scratch.js +18 -0
  889. package/dist/experimental/projection-scratch.js.map +1 -0
  890. package/dist/experimental/projections/aea.d.ts +3 -0
  891. package/dist/experimental/projections/aea.d.ts.map +1 -0
  892. package/dist/experimental/projections/aea.js +17 -0
  893. package/dist/experimental/projections/aea.js.map +1 -0
  894. package/dist/experimental/projections/aeqd.d.ts +3 -0
  895. package/dist/experimental/projections/aeqd.d.ts.map +1 -0
  896. package/dist/experimental/projections/aeqd.js +15 -0
  897. package/dist/experimental/projections/aeqd.js.map +1 -0
  898. package/dist/experimental/projections/bonne.d.ts +3 -0
  899. package/dist/experimental/projections/bonne.d.ts.map +1 -0
  900. package/dist/experimental/projections/bonne.js +16 -0
  901. package/dist/experimental/projections/bonne.js.map +1 -0
  902. package/dist/experimental/projections/cass.d.ts +3 -0
  903. package/dist/experimental/projections/cass.d.ts.map +1 -0
  904. package/dist/experimental/projections/cass.js +13 -0
  905. package/dist/experimental/projections/cass.js.map +1 -0
  906. package/dist/experimental/projections/cea.d.ts +3 -0
  907. package/dist/experimental/projections/cea.d.ts.map +1 -0
  908. package/dist/experimental/projections/cea.js +15 -0
  909. package/dist/experimental/projections/cea.js.map +1 -0
  910. package/dist/experimental/projections/eck6.d.ts +3 -0
  911. package/dist/experimental/projections/eck6.d.ts.map +1 -0
  912. package/dist/experimental/projections/eck6.js +13 -0
  913. package/dist/experimental/projections/eck6.js.map +1 -0
  914. package/dist/experimental/projections/eqdc.d.ts +3 -0
  915. package/dist/experimental/projections/eqdc.d.ts.map +1 -0
  916. package/dist/experimental/projections/eqdc.js +17 -0
  917. package/dist/experimental/projections/eqdc.js.map +1 -0
  918. package/dist/experimental/projections/eqearth.d.ts +3 -0
  919. package/dist/experimental/projections/eqearth.d.ts.map +1 -0
  920. package/dist/experimental/projections/eqearth.js +13 -0
  921. package/dist/experimental/projections/eqearth.js.map +1 -0
  922. package/dist/experimental/projections/equi.d.ts +3 -0
  923. package/dist/experimental/projections/equi.d.ts.map +1 -0
  924. package/dist/experimental/projections/equi.js +15 -0
  925. package/dist/experimental/projections/equi.js.map +1 -0
  926. package/dist/experimental/projections/equidistant-cylindrical.d.ts +4 -0
  927. package/dist/experimental/projections/equidistant-cylindrical.d.ts.map +1 -0
  928. package/dist/experimental/projections/equidistant-cylindrical.js +30 -0
  929. package/dist/experimental/projections/equidistant-cylindrical.js.map +1 -0
  930. package/dist/experimental/projections/geocentric.d.ts +3 -0
  931. package/dist/experimental/projections/geocentric.d.ts.map +1 -0
  932. package/dist/experimental/projections/geocentric.js +26 -0
  933. package/dist/experimental/projections/geocentric.js.map +1 -0
  934. package/dist/experimental/projections/geos.d.ts +3 -0
  935. package/dist/experimental/projections/geos.d.ts.map +1 -0
  936. package/dist/experimental/projections/geos.js +20 -0
  937. package/dist/experimental/projections/geos.js.map +1 -0
  938. package/dist/experimental/projections/gnom.d.ts +3 -0
  939. package/dist/experimental/projections/gnom.d.ts.map +1 -0
  940. package/dist/experimental/projections/gnom.js +13 -0
  941. package/dist/experimental/projections/gnom.js.map +1 -0
  942. package/dist/experimental/projections/gstmerc.d.ts +3 -0
  943. package/dist/experimental/projections/gstmerc.d.ts.map +1 -0
  944. package/dist/experimental/projections/gstmerc.js +13 -0
  945. package/dist/experimental/projections/gstmerc.js.map +1 -0
  946. package/dist/experimental/projections/krovak.d.ts +3 -0
  947. package/dist/experimental/projections/krovak.d.ts.map +1 -0
  948. package/dist/experimental/projections/krovak.js +32 -0
  949. package/dist/experimental/projections/krovak.js.map +1 -0
  950. package/dist/experimental/projections/laea.d.ts +3 -0
  951. package/dist/experimental/projections/laea.d.ts.map +1 -0
  952. package/dist/experimental/projections/laea.js +15 -0
  953. package/dist/experimental/projections/laea.js.map +1 -0
  954. package/dist/experimental/projections/lcc.d.ts +3 -0
  955. package/dist/experimental/projections/lcc.d.ts.map +1 -0
  956. package/dist/experimental/projections/lcc.js +32 -0
  957. package/dist/experimental/projections/lcc.js.map +1 -0
  958. package/dist/experimental/projections/mercator.d.ts +4 -0
  959. package/dist/experimental/projections/mercator.d.ts.map +1 -0
  960. package/dist/experimental/projections/mercator.js +71 -0
  961. package/dist/experimental/projections/mercator.js.map +1 -0
  962. package/dist/experimental/projections/mill.d.ts +3 -0
  963. package/dist/experimental/projections/mill.d.ts.map +1 -0
  964. package/dist/experimental/projections/mill.js +13 -0
  965. package/dist/experimental/projections/mill.js.map +1 -0
  966. package/dist/experimental/projections/moll.d.ts +3 -0
  967. package/dist/experimental/projections/moll.d.ts.map +1 -0
  968. package/dist/experimental/projections/moll.js +13 -0
  969. package/dist/experimental/projections/moll.js.map +1 -0
  970. package/dist/experimental/projections/nzmg.d.ts +3 -0
  971. package/dist/experimental/projections/nzmg.d.ts.map +1 -0
  972. package/dist/experimental/projections/nzmg.js +20 -0
  973. package/dist/experimental/projections/nzmg.js.map +1 -0
  974. package/dist/experimental/projections/ob-tran.d.ts +4 -0
  975. package/dist/experimental/projections/ob-tran.d.ts.map +1 -0
  976. package/dist/experimental/projections/ob-tran.js +119 -0
  977. package/dist/experimental/projections/ob-tran.js.map +1 -0
  978. package/dist/experimental/projections/omerc.d.ts +3 -0
  979. package/dist/experimental/projections/omerc.d.ts.map +1 -0
  980. package/dist/experimental/projections/omerc.js +60 -0
  981. package/dist/experimental/projections/omerc.js.map +1 -0
  982. package/dist/experimental/projections/ortho.d.ts +3 -0
  983. package/dist/experimental/projections/ortho.d.ts.map +1 -0
  984. package/dist/experimental/projections/ortho.js +13 -0
  985. package/dist/experimental/projections/ortho.js.map +1 -0
  986. package/dist/experimental/projections/poly.d.ts +3 -0
  987. package/dist/experimental/projections/poly.d.ts.map +1 -0
  988. package/dist/experimental/projections/poly.js +13 -0
  989. package/dist/experimental/projections/poly.js.map +1 -0
  990. package/dist/experimental/projections/qsc.d.ts +3 -0
  991. package/dist/experimental/projections/qsc.d.ts.map +1 -0
  992. package/dist/experimental/projections/qsc.js +13 -0
  993. package/dist/experimental/projections/qsc.js.map +1 -0
  994. package/dist/experimental/projections/robin.d.ts +3 -0
  995. package/dist/experimental/projections/robin.d.ts.map +1 -0
  996. package/dist/experimental/projections/robin.js +13 -0
  997. package/dist/experimental/projections/robin.js.map +1 -0
  998. package/dist/experimental/projections/sinu.d.ts +3 -0
  999. package/dist/experimental/projections/sinu.d.ts.map +1 -0
  1000. package/dist/experimental/projections/sinu.js +13 -0
  1001. package/dist/experimental/projections/sinu.js.map +1 -0
  1002. package/dist/experimental/projections/somerc.d.ts +3 -0
  1003. package/dist/experimental/projections/somerc.d.ts.map +1 -0
  1004. package/dist/experimental/projections/somerc.js +13 -0
  1005. package/dist/experimental/projections/somerc.js.map +1 -0
  1006. package/dist/experimental/projections/stere.d.ts +3 -0
  1007. package/dist/experimental/projections/stere.d.ts.map +1 -0
  1008. package/dist/experimental/projections/stere.js +20 -0
  1009. package/dist/experimental/projections/stere.js.map +1 -0
  1010. package/dist/experimental/projections/sterea.d.ts +3 -0
  1011. package/dist/experimental/projections/sterea.d.ts.map +1 -0
  1012. package/dist/experimental/projections/sterea.js +22 -0
  1013. package/dist/experimental/projections/sterea.js.map +1 -0
  1014. package/dist/experimental/projections/tpers.d.ts +3 -0
  1015. package/dist/experimental/projections/tpers.d.ts.map +1 -0
  1016. package/dist/experimental/projections/tpers.js +19 -0
  1017. package/dist/experimental/projections/tpers.js.map +1 -0
  1018. package/dist/experimental/projections/transverse-mercator.d.ts +6 -0
  1019. package/dist/experimental/projections/transverse-mercator.d.ts.map +1 -0
  1020. package/dist/experimental/projections/transverse-mercator.js +39 -0
  1021. package/dist/experimental/projections/transverse-mercator.js.map +1 -0
  1022. package/dist/experimental/projections/utm.d.ts +3 -0
  1023. package/dist/experimental/projections/utm.d.ts.map +1 -0
  1024. package/dist/experimental/projections/utm.js +31 -0
  1025. package/dist/experimental/projections/utm.js.map +1 -0
  1026. package/dist/experimental/projections/vandg.d.ts +3 -0
  1027. package/dist/experimental/projections/vandg.d.ts.map +1 -0
  1028. package/dist/experimental/projections/vandg.js +13 -0
  1029. package/dist/experimental/projections/vandg.js.map +1 -0
  1030. package/dist/experimental/scalar-output.d.ts +8 -0
  1031. package/dist/experimental/scalar-output.d.ts.map +1 -0
  1032. package/dist/experimental/scalar-output.js +46 -0
  1033. package/dist/experimental/scalar-output.js.map +1 -0
  1034. package/dist/experimental/types.d.ts +54 -0
  1035. package/dist/experimental/types.d.ts.map +1 -0
  1036. package/dist/experimental/types.js +5 -0
  1037. package/dist/experimental/types.js.map +1 -0
  1038. package/dist/experimental/typescript-projection.d.ts +67 -0
  1039. package/dist/experimental/typescript-projection.d.ts.map +1 -0
  1040. package/dist/experimental/typescript-projection.js +429 -0
  1041. package/dist/experimental/typescript-projection.js.map +1 -0
  1042. package/dist/experimental/vertical-datum.d.ts +4 -0
  1043. package/dist/experimental/vertical-datum.d.ts.map +1 -0
  1044. package/dist/experimental/vertical-datum.js +43 -0
  1045. package/dist/experimental/vertical-datum.js.map +1 -0
  1046. package/dist/grids/velocity.cjs +92 -0
  1047. package/dist/grids/velocity.cjs.map +6 -0
  1048. package/dist/grids/velocity.d.ts +3 -0
  1049. package/dist/grids/velocity.d.ts.map +1 -0
  1050. package/dist/grids/velocity.js +5 -0
  1051. package/dist/grids/velocity.js.map +1 -0
  1052. package/dist/index.cjs +10158 -0
  1053. package/dist/index.cjs.map +6 -0
  1054. package/dist/index.d.ts +4 -0
  1055. package/dist/index.d.ts.map +1 -0
  1056. package/dist/index.js +6 -0
  1057. package/dist/index.js.map +1 -0
  1058. package/dist/lib/projection.d.ts +24 -0
  1059. package/dist/lib/projection.d.ts.map +1 -0
  1060. package/dist/lib/projection.js +107 -0
  1061. package/dist/lib/projection.js.map +1 -0
  1062. package/dist/operations.cjs +255 -0
  1063. package/dist/operations.cjs.map +6 -0
  1064. package/dist/operations.d.ts +67 -0
  1065. package/dist/operations.d.ts.map +1 -0
  1066. package/dist/operations.js +272 -0
  1067. package/dist/operations.js.map +1 -0
  1068. package/dist/pipeline.cjs +3347 -0
  1069. package/dist/pipeline.cjs.map +6 -0
  1070. package/dist/pipeline.d.ts +2 -0
  1071. package/dist/pipeline.d.ts.map +1 -0
  1072. package/dist/pipeline.js +5 -0
  1073. package/dist/pipeline.js.map +1 -0
  1074. package/package.json +970 -3
  1075. package/src/deformation.ts +5 -0
  1076. package/src/experimental/catalogue-kernel.ts +54 -0
  1077. package/src/experimental/common/adjust_lat.ts +11 -0
  1078. package/src/experimental/common/adjust_lon.ts +14 -0
  1079. package/src/experimental/common/asinhy.ts +14 -0
  1080. package/src/experimental/common/asinz.ts +11 -0
  1081. package/src/experimental/common/authlat.ts +9 -0
  1082. package/src/experimental/common/authset.ts +25 -0
  1083. package/src/experimental/common/clens.ts +20 -0
  1084. package/src/experimental/common/clens_cmplx.ts +43 -0
  1085. package/src/experimental/common/constants.ts +15 -0
  1086. package/src/experimental/common/cosh.ts +10 -0
  1087. package/src/experimental/common/e0fn.ts +8 -0
  1088. package/src/experimental/common/e1fn.ts +8 -0
  1089. package/src/experimental/common/e2fn.ts +8 -0
  1090. package/src/experimental/common/e3fn.ts +8 -0
  1091. package/src/experimental/common/fL.ts +10 -0
  1092. package/src/experimental/common/gN.ts +9 -0
  1093. package/src/experimental/common/gatg.ts +20 -0
  1094. package/src/experimental/common/hypot.ts +13 -0
  1095. package/src/experimental/common/imlfn.ts +23 -0
  1096. package/src/experimental/common/invlatiso.ts +20 -0
  1097. package/src/experimental/common/iqsfnz.ts +45 -0
  1098. package/src/experimental/common/latiso.ts +21 -0
  1099. package/src/experimental/common/log1py.ts +11 -0
  1100. package/src/experimental/common/mlfn.ts +8 -0
  1101. package/src/experimental/common/msfnz.ts +9 -0
  1102. package/src/experimental/common/phi2z.ts +22 -0
  1103. package/src/experimental/common/pj_enfn.ts +29 -0
  1104. package/src/experimental/common/pj_inv_mlfn.ts +28 -0
  1105. package/src/experimental/common/pj_mlfn.ts +10 -0
  1106. package/src/experimental/common/qsfnz.ts +17 -0
  1107. package/src/experimental/common/sign.ts +8 -0
  1108. package/src/experimental/common/sinh.ts +10 -0
  1109. package/src/experimental/common/srat.ts +8 -0
  1110. package/src/experimental/common/tsfnz.ts +13 -0
  1111. package/src/experimental/common/vincenty.ts +180 -0
  1112. package/src/experimental/core.ts +48 -0
  1113. package/src/experimental/crs/datum-table.ts +1370 -0
  1114. package/src/experimental/crs/ellipsoid-table.ts +230 -0
  1115. package/src/experimental/crs/normalize.ts +303 -0
  1116. package/src/experimental/crs/primemeridian-table.ts +22 -0
  1117. package/src/experimental/crs/projjson.ts +12 -0
  1118. package/src/experimental/crs/spatial-reference.ts +115 -0
  1119. package/src/experimental/crs/structured.ts +521 -0
  1120. package/src/experimental/crs/types.ts +80 -0
  1121. package/src/experimental/crs/units-table.ts +27 -0
  1122. package/src/experimental/crs/wkt.ts +192 -0
  1123. package/src/experimental/datum.ts +185 -0
  1124. package/src/experimental/deformation.ts +134 -0
  1125. package/src/experimental/entries/projections/aea.ts +5 -0
  1126. package/src/experimental/entries/projections/aeqd.ts +5 -0
  1127. package/src/experimental/entries/projections/bonne.ts +5 -0
  1128. package/src/experimental/entries/projections/cass.ts +5 -0
  1129. package/src/experimental/entries/projections/cea.ts +5 -0
  1130. package/src/experimental/entries/projections/eck6.ts +5 -0
  1131. package/src/experimental/entries/projections/eqc.ts +5 -0
  1132. package/src/experimental/entries/projections/eqdc.ts +5 -0
  1133. package/src/experimental/entries/projections/eqearth.ts +5 -0
  1134. package/src/experimental/entries/projections/equi.ts +5 -0
  1135. package/src/experimental/entries/projections/etmerc.ts +5 -0
  1136. package/src/experimental/entries/projections/geocent.ts +5 -0
  1137. package/src/experimental/entries/projections/geos.ts +5 -0
  1138. package/src/experimental/entries/projections/gnom.ts +5 -0
  1139. package/src/experimental/entries/projections/gstmerc.ts +5 -0
  1140. package/src/experimental/entries/projections/krovak.ts +5 -0
  1141. package/src/experimental/entries/projections/laea.ts +5 -0
  1142. package/src/experimental/entries/projections/lcc.ts +5 -0
  1143. package/src/experimental/entries/projections/merc.ts +5 -0
  1144. package/src/experimental/entries/projections/mill.ts +5 -0
  1145. package/src/experimental/entries/projections/moll.ts +5 -0
  1146. package/src/experimental/entries/projections/nzmg.ts +5 -0
  1147. package/src/experimental/entries/projections/ob_tran.ts +5 -0
  1148. package/src/experimental/entries/projections/omerc.ts +5 -0
  1149. package/src/experimental/entries/projections/ortho.ts +5 -0
  1150. package/src/experimental/entries/projections/poly.ts +5 -0
  1151. package/src/experimental/entries/projections/qsc.ts +5 -0
  1152. package/src/experimental/entries/projections/robin.ts +5 -0
  1153. package/src/experimental/entries/projections/sinu.ts +5 -0
  1154. package/src/experimental/entries/projections/somerc.ts +5 -0
  1155. package/src/experimental/entries/projections/stere.ts +5 -0
  1156. package/src/experimental/entries/projections/sterea.ts +5 -0
  1157. package/src/experimental/entries/projections/tmerc.ts +5 -0
  1158. package/src/experimental/entries/projections/tpers.ts +5 -0
  1159. package/src/experimental/entries/projections/utm.ts +5 -0
  1160. package/src/experimental/entries/projections/vandg.ts +5 -0
  1161. package/src/experimental/exact-helmert.ts +58 -0
  1162. package/src/experimental/flat-projection.ts +70 -0
  1163. package/src/experimental/grids/geotiff.ts +88 -0
  1164. package/src/experimental/grids/grid.ts +141 -0
  1165. package/src/experimental/grids/gtx.ts +31 -0
  1166. package/src/experimental/grids/ntv2.ts +71 -0
  1167. package/src/experimental/grids/scalar-geotiff.ts +231 -0
  1168. package/src/experimental/grids/types.ts +35 -0
  1169. package/src/experimental/grids/velocity-geotiff.ts +82 -0
  1170. package/src/experimental/grids/velocity.ts +58 -0
  1171. package/src/experimental/grids/vertical-geotiff.ts +28 -0
  1172. package/src/experimental/grids/vertical.ts +99 -0
  1173. package/src/experimental/helmert-flat.ts +76 -0
  1174. package/src/experimental/index.ts +59 -0
  1175. package/src/experimental/kernel.ts +139 -0
  1176. package/src/experimental/kernels/aea.ts +170 -0
  1177. package/src/experimental/kernels/aeqd.ts +182 -0
  1178. package/src/experimental/kernels/bonne.ts +141 -0
  1179. package/src/experimental/kernels/cass.ts +140 -0
  1180. package/src/experimental/kernels/cea.ts +71 -0
  1181. package/src/experimental/kernels/eck6.ts +36 -0
  1182. package/src/experimental/kernels/eqdc.ts +137 -0
  1183. package/src/experimental/kernels/eqearth.ts +136 -0
  1184. package/src/experimental/kernels/equi.ts +53 -0
  1185. package/src/experimental/kernels/etmerc.ts +190 -0
  1186. package/src/experimental/kernels/gauss.ts +79 -0
  1187. package/src/experimental/kernels/geos.ts +183 -0
  1188. package/src/experimental/kernels/gnom.ts +113 -0
  1189. package/src/experimental/kernels/gstmerc.ts +74 -0
  1190. package/src/experimental/kernels/krovak.ts +166 -0
  1191. package/src/experimental/kernels/laea.ts +297 -0
  1192. package/src/experimental/kernels/lcc.ts +147 -0
  1193. package/src/experimental/kernels/mill.ts +60 -0
  1194. package/src/experimental/kernels/moll.ts +105 -0
  1195. package/src/experimental/kernels/nzmg.ts +249 -0
  1196. package/src/experimental/kernels/omerc.ts +343 -0
  1197. package/src/experimental/kernels/ortho.ts +106 -0
  1198. package/src/experimental/kernels/poly.ts +156 -0
  1199. package/src/experimental/kernels/qsc.ts +369 -0
  1200. package/src/experimental/kernels/robin.ts +189 -0
  1201. package/src/experimental/kernels/sinu.ts +116 -0
  1202. package/src/experimental/kernels/somerc.ts +112 -0
  1203. package/src/experimental/kernels/stere.ts +221 -0
  1204. package/src/experimental/kernels/sterea.ts +80 -0
  1205. package/src/experimental/kernels/tmerc.ts +227 -0
  1206. package/src/experimental/kernels/tpers.ts +187 -0
  1207. package/src/experimental/kernels/vandg.ts +147 -0
  1208. package/src/experimental/kinematic-helmert-flat.ts +85 -0
  1209. package/src/experimental/kinematic-helmert.ts +132 -0
  1210. package/src/experimental/lazy-projection.ts +146 -0
  1211. package/src/experimental/lazy-projections/aea.ts +10 -0
  1212. package/src/experimental/lazy-projections/aeqd.ts +11 -0
  1213. package/src/experimental/lazy-projections/bonne.ts +10 -0
  1214. package/src/experimental/lazy-projections/cass.ts +10 -0
  1215. package/src/experimental/lazy-projections/cea.ts +11 -0
  1216. package/src/experimental/lazy-projections/eck6.ts +10 -0
  1217. package/src/experimental/lazy-projections/eqc.ts +14 -0
  1218. package/src/experimental/lazy-projections/eqdc.ts +11 -0
  1219. package/src/experimental/lazy-projections/eqearth.ts +10 -0
  1220. package/src/experimental/lazy-projections/equi.ts +10 -0
  1221. package/src/experimental/lazy-projections/etmerc.ts +11 -0
  1222. package/src/experimental/lazy-projections/geocent.ts +10 -0
  1223. package/src/experimental/lazy-projections/geos.ts +10 -0
  1224. package/src/experimental/lazy-projections/gnom.ts +10 -0
  1225. package/src/experimental/lazy-projections/gstmerc.ts +12 -0
  1226. package/src/experimental/lazy-projections/index.ts +42 -0
  1227. package/src/experimental/lazy-projections/krovak.ts +18 -0
  1228. package/src/experimental/lazy-projections/laea.ts +11 -0
  1229. package/src/experimental/lazy-projections/lcc.ts +21 -0
  1230. package/src/experimental/lazy-projections/merc.ts +19 -0
  1231. package/src/experimental/lazy-projections/mill.ts +11 -0
  1232. package/src/experimental/lazy-projections/moll.ts +10 -0
  1233. package/src/experimental/lazy-projections/nzmg.ts +11 -0
  1234. package/src/experimental/lazy-projections/ob_tran.ts +25 -0
  1235. package/src/experimental/lazy-projections/omerc.ts +22 -0
  1236. package/src/experimental/lazy-projections/ortho.ts +10 -0
  1237. package/src/experimental/lazy-projections/poly.ts +10 -0
  1238. package/src/experimental/lazy-projections/qsc.ts +14 -0
  1239. package/src/experimental/lazy-projections/robin.ts +10 -0
  1240. package/src/experimental/lazy-projections/sinu.ts +10 -0
  1241. package/src/experimental/lazy-projections/somerc.ts +11 -0
  1242. package/src/experimental/lazy-projections/stere.ts +18 -0
  1243. package/src/experimental/lazy-projections/sterea.ts +19 -0
  1244. package/src/experimental/lazy-projections/tmerc.ts +21 -0
  1245. package/src/experimental/lazy-projections/tpers.ts +11 -0
  1246. package/src/experimental/lazy-projections/utm.ts +11 -0
  1247. package/src/experimental/lazy-projections/vandg.ts +10 -0
  1248. package/src/experimental/mutable-projection.ts +63 -0
  1249. package/src/experimental/numeric-flat.ts +73 -0
  1250. package/src/experimental/parameters.ts +35 -0
  1251. package/src/experimental/projection-descriptor.ts +79 -0
  1252. package/src/experimental/projection-pipeline.ts +1053 -0
  1253. package/src/experimental/projection-scratch.ts +19 -0
  1254. package/src/experimental/projections/aea.ts +19 -0
  1255. package/src/experimental/projections/aeqd.ts +18 -0
  1256. package/src/experimental/projections/bonne.ts +23 -0
  1257. package/src/experimental/projections/cass.ts +19 -0
  1258. package/src/experimental/projections/cea.ts +20 -0
  1259. package/src/experimental/projections/eck6.ts +19 -0
  1260. package/src/experimental/projections/eqdc.ts +19 -0
  1261. package/src/experimental/projections/eqearth.ts +19 -0
  1262. package/src/experimental/projections/equi.ts +20 -0
  1263. package/src/experimental/projections/equidistant-cylindrical.ts +35 -0
  1264. package/src/experimental/projections/geocentric.ts +34 -0
  1265. package/src/experimental/projections/geos.ts +31 -0
  1266. package/src/experimental/projections/gnom.ts +19 -0
  1267. package/src/experimental/projections/gstmerc.ts +19 -0
  1268. package/src/experimental/projections/krovak.ts +41 -0
  1269. package/src/experimental/projections/laea.ts +18 -0
  1270. package/src/experimental/projections/lcc.ts +40 -0
  1271. package/src/experimental/projections/mercator.ts +79 -0
  1272. package/src/experimental/projections/mill.ts +19 -0
  1273. package/src/experimental/projections/moll.ts +19 -0
  1274. package/src/experimental/projections/nzmg.ts +27 -0
  1275. package/src/experimental/projections/ob-tran.ts +161 -0
  1276. package/src/experimental/projections/omerc.ts +66 -0
  1277. package/src/experimental/projections/ortho.ts +26 -0
  1278. package/src/experimental/projections/poly.ts +19 -0
  1279. package/src/experimental/projections/qsc.ts +19 -0
  1280. package/src/experimental/projections/robin.ts +19 -0
  1281. package/src/experimental/projections/sinu.ts +19 -0
  1282. package/src/experimental/projections/somerc.ts +19 -0
  1283. package/src/experimental/projections/stere.ts +29 -0
  1284. package/src/experimental/projections/sterea.ts +30 -0
  1285. package/src/experimental/projections/tpers.ts +31 -0
  1286. package/src/experimental/projections/transverse-mercator.ts +68 -0
  1287. package/src/experimental/projections/utm.ts +33 -0
  1288. package/src/experimental/projections/vandg.ts +19 -0
  1289. package/src/experimental/scalar-output.ts +74 -0
  1290. package/src/experimental/types.ts +61 -0
  1291. package/src/experimental/typescript-projection.ts +545 -0
  1292. package/src/experimental/vertical-datum.ts +39 -0
  1293. package/src/grids/velocity.ts +5 -0
  1294. package/src/index.ts +7 -0
  1295. package/src/lib/projection.ts +167 -0
  1296. package/src/operations.ts +358 -0
  1297. package/src/pipeline.ts +4 -0
@@ -0,0 +1,746 @@
1
+ import { CORE_PARAMETERS, normalizeCRS } from "./crs/normalize.js";
2
+ import { unsupportedStage } from "./crs/types.js";
3
+ import { applyDatumGrids, createHelmert, geocentricToGeodeticInPlace, geodeticToGeocentricInPlace } from "./datum.js";
4
+ import { projectionOperation } from "./mutable-projection.js";
5
+ import { ProjectionScratch } from "./projection-scratch.js";
6
+ import { createNumericFlat } from "./numeric-flat.js";
7
+ import { validateScalarOutput, writeScalarOutput } from "./scalar-output.js";
8
+ import { createHelmertFlat } from "./helmert-flat.js";
9
+ import { createExactHelmert } from "./exact-helmert.js";
10
+ import { createKinematicHelmert } from "./kinematic-helmert.js";
11
+ import { getLoadedProjection, preloadProjection } from "./projection-descriptor.js";
12
+ import { compileVerticalGrid } from "./vertical-datum.js";
13
+ const EMPTY_STACK = new Float64Array(0);
14
+ // Typed-array buffers are ordinary or shared. The intrinsic getter checks the
15
+ // backing-store brand across realms and cannot be fooled by Symbol.toStringTag.
16
+ const ordinaryByteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get;
17
+ function sharedBuffer(buffer) {
18
+ try {
19
+ ordinaryByteLength.call(buffer);
20
+ return false;
21
+ }
22
+ catch {
23
+ return true;
24
+ }
25
+ }
26
+ function compileFlat(pairs) {
27
+ if (pairs.length === 1 && pairs[0].forwardFlat)
28
+ return pairs[0].forwardFlat;
29
+ // Pure axis measurements were inconsistent; retain general dispatch for that subset.
30
+ return pairs.every(pair => pair.forwardNumeric) &&
31
+ pairs.some(pair => pair.forwardNumeric[0] !== 2)
32
+ ? createNumericFlat(pairs.map(pair => pair.forwardNumeric))
33
+ : undefined;
34
+ }
35
+ const factors = {
36
+ deg: Math.PI / 180,
37
+ rad: 1,
38
+ m: 1,
39
+ ft: 0.3048,
40
+ 'us-ft': 1200 / 3937
41
+ };
42
+ const geometryKeys = ['ellps', 'a', 'b', 'rf', 'f', 'R'];
43
+ const angular = (unit) => unit === 'deg' || unit === 'rad';
44
+ const own = (value, name) => Object.prototype.hasOwnProperty.call(value, name);
45
+ function keys(value, allowed) {
46
+ if (!value || typeof value !== 'object' || Array.isArray(value))
47
+ throw new Error('Expected operation object');
48
+ for (const name of Object.keys(value))
49
+ if (!allowed.includes(name))
50
+ unsupportedStage('Unsupported pipeline parameter: ' + name);
51
+ }
52
+ function definition(name, parameters = {}) {
53
+ if (!/^[a-z][a-z0-9_]*$/i.test(name))
54
+ throw new Error('Invalid projection name');
55
+ return ('+proj=' +
56
+ name +
57
+ Object.entries(parameters)
58
+ .map(([key, value]) => {
59
+ if (!/^[a-z][a-z0-9_]*$/i.test(key) ||
60
+ (value !== undefined &&
61
+ (typeof value !== 'string' ||
62
+ !value ||
63
+ /[\s=]/.test(value) ||
64
+ /\+/.test(value.slice(1).replace(/[eE]\+/g, '')))))
65
+ throw new Error('Invalid pipeline projection parameter: ' + key);
66
+ return ' +' + key + (value === undefined ? '' : '=' + value);
67
+ })
68
+ .join(''));
69
+ }
70
+ function finite(point) {
71
+ if (!Number.isFinite(point.x) || !Number.isFinite(point.y) || !Number.isFinite(point.z))
72
+ throw new Error('Pipeline coordinate must be finite');
73
+ }
74
+ function triple(values) {
75
+ if (!Array.isArray(values) || values.length !== 3 || !values.every(Number.isFinite))
76
+ throw new Error('Expected three finite Helmert parameters');
77
+ }
78
+ /** Explicit forward/reverse operations; no CRS/epoch inference or string pipeline parser.
79
+ * General execution reuses guarded scratch; specialized flat stages use numeric
80
+ * locals and never allocate coordinate arrays inside the flat loop. M and additional ordinates are preserved, never interpreted.
81
+ */
82
+ export class ProjectionPipeline {
83
+ constructor(options) {
84
+ this.forwardFactories = [];
85
+ this.inverseFactories = [];
86
+ this.stackSize = 0;
87
+ this.coordinateScratch = new ProjectionScratch();
88
+ this.required = [];
89
+ this.requiresZ = false;
90
+ this.requiresEpoch = false;
91
+ keys(options, ['input', 'steps', 'projections', 'datumGrids', 'verticalGrids']);
92
+ keys(options.input, ['space', 'units']);
93
+ const { space, units } = options.input;
94
+ if (!['geographic', 'projected', 'geocentric'].includes(space) ||
95
+ !Array.isArray(units) ||
96
+ units.length !== 3 ||
97
+ units.some(unit => !own(factors, unit)) ||
98
+ angular(units[2]) ||
99
+ (space === 'geographic'
100
+ ? !angular(units[0]) || !angular(units[1])
101
+ : angular(units[0]) || angular(units[1])))
102
+ throw new Error('Invalid pipeline input space/units');
103
+ if (!Array.isArray(options.steps) || options.steps.length === 0)
104
+ throw new Error('Pipeline requires at least one step');
105
+ this.requiresZ = space === 'geocentric';
106
+ this.input = Object.freeze({
107
+ space,
108
+ units: Object.freeze([...units])
109
+ });
110
+ const state = { space, units: [...units], stacks: [[], [], []] };
111
+ const projections = [...(options.projections || [])];
112
+ this.deferred = projections.some(projection => !('create' in projection));
113
+ // Each direction has its own validated metadata and stack layout. Share equation
114
+ // implementations by step so custom plugin factories still run once per step.
115
+ const caches = options.steps.map(() => ({}));
116
+ for (const [index, step] of options.steps.entries()) {
117
+ for (const name of ['inverse', 'omitForward', 'omitInverse'])
118
+ if (step?.[name] !== undefined && typeof step[name] !== 'boolean')
119
+ throw new Error('Invalid pipeline ' + name + ' flag');
120
+ if (step?.omitForward && step.omitInverse)
121
+ throw new Error('A pipeline step cannot omit both directions');
122
+ if (!step?.omitForward)
123
+ this.forwardFactories.push(this.prepare(step, state, { ...options, projections }, caches[index]));
124
+ }
125
+ this.balanced(state);
126
+ this.output = Object.freeze({
127
+ space: state.space,
128
+ units: Object.freeze([...state.units])
129
+ });
130
+ const reverse = { space: state.space, units: [...state.units], stacks: [[], [], []] };
131
+ for (let index = options.steps.length - 1; index >= 0; index--) {
132
+ const step = options.steps[index];
133
+ if (!step.omitInverse)
134
+ this.inverseFactories.push(this.prepare({ ...step, inverse: !step.inverse }, reverse, { ...options, projections }, caches[index]));
135
+ }
136
+ this.balanced(reverse);
137
+ if (reverse.space !== space || reverse.units.some((unit, index) => unit !== units[index]))
138
+ throw new Error('Inverse pipeline output does not match declared input space/units');
139
+ if (this.required.every(projection => getLoadedProjection(projection)))
140
+ this.compile();
141
+ this.project = this.project.bind(this);
142
+ this.unproject = this.unproject.bind(this);
143
+ this.projectSync = this.projectSync.bind(this);
144
+ this.unprojectSync = this.unprojectSync.bind(this);
145
+ this.projectTo = this.projectTo.bind(this);
146
+ this.unprojectTo = this.unprojectTo.bind(this);
147
+ this.projectToSync = this.projectToSync.bind(this);
148
+ this.unprojectToSync = this.unprojectToSync.bind(this);
149
+ this.projectFlat = this.projectFlat.bind(this);
150
+ this.unprojectFlat = this.unprojectFlat.bind(this);
151
+ this.projectFlatSync = this.projectFlatSync.bind(this);
152
+ this.unprojectFlatSync = this.unprojectFlatSync.bind(this);
153
+ }
154
+ /** Load only implementations named by pipeline steps; failures can be retried. */
155
+ preload() {
156
+ if (this.compiled)
157
+ return Promise.resolve(this);
158
+ this.pending || (this.pending = Promise.all(this.required.map(preloadProjection))
159
+ .then(() => {
160
+ this.compile();
161
+ return this;
162
+ })
163
+ .catch(error => {
164
+ this.pending = undefined;
165
+ throw error;
166
+ }));
167
+ return this.pending;
168
+ }
169
+ project(coordinate, epoch) {
170
+ return (this.deferred
171
+ ? this.preload().then(() => this.projectSync(coordinate, epoch))
172
+ : this.projectSync(coordinate, epoch));
173
+ }
174
+ unproject(coordinate, epoch) {
175
+ return (this.deferred
176
+ ? this.preload().then(() => this.unprojectSync(coordinate, epoch))
177
+ : this.unprojectSync(coordinate, epoch));
178
+ }
179
+ /** Reuse a scalar output; the epoch remains separate from all coordinate ordinates. */
180
+ projectTo(coordinate, output, epoch) {
181
+ return (this.deferred
182
+ ? this.scalarToLoaded(coordinate, output, false, epoch)
183
+ : this.projectToSync(coordinate, output, epoch));
184
+ }
185
+ unprojectTo(coordinate, output, epoch) {
186
+ return (this.deferred
187
+ ? this.scalarToLoaded(coordinate, output, true, epoch)
188
+ : this.unprojectToSync(coordinate, output, epoch));
189
+ }
190
+ projectToSync(coordinate, output, epoch) {
191
+ validateScalarOutput(coordinate, output, coordinate.length);
192
+ return this.scalar(coordinate, false, epoch, output);
193
+ }
194
+ unprojectToSync(coordinate, output, epoch) {
195
+ validateScalarOutput(coordinate, output, coordinate.length);
196
+ return this.scalar(coordinate, true, epoch, output);
197
+ }
198
+ scalarToLoaded(coordinate, output, inverse, epoch) {
199
+ validateScalarOutput(coordinate, output, coordinate.length);
200
+ const input = coordinate.slice();
201
+ return this.preload().then(() => inverse
202
+ ? this.unprojectToSync(input, output, epoch)
203
+ : this.projectToSync(input, output, epoch));
204
+ }
205
+ projectFlat(coordinates, dimension = 2, epochs) {
206
+ return (this.deferred
207
+ ? this.preload().then(() => this.projectFlatSync(coordinates, dimension, epochs))
208
+ : this.projectFlatSync(coordinates, dimension, epochs));
209
+ }
210
+ unprojectFlat(coordinates, dimension = 2, epochs) {
211
+ return (this.deferred
212
+ ? this.preload().then(() => this.unprojectFlatSync(coordinates, dimension, epochs))
213
+ : this.unprojectFlatSync(coordinates, dimension, epochs));
214
+ }
215
+ projectSync(coordinate, epoch) {
216
+ return this.scalar(coordinate, false, epoch);
217
+ }
218
+ unprojectSync(coordinate, epoch) {
219
+ return this.scalar(coordinate, true, epoch);
220
+ }
221
+ projectFlatSync(coordinates, dimension = 2, epochs) {
222
+ return this.flat(coordinates, dimension, false, epochs);
223
+ }
224
+ unprojectFlatSync(coordinates, dimension = 2, epochs) {
225
+ return this.flat(coordinates, dimension, true, epochs);
226
+ }
227
+ compile() {
228
+ if (this.compiled)
229
+ return;
230
+ for (const registration of this.required)
231
+ if (!getLoadedProjection(registration))
232
+ unsupportedStage('Pipeline projection requires preload(): ' + registration.name);
233
+ const forward = this.forwardFactories.map(factory => factory()), inverse = this.inverseFactories.map(factory => factory());
234
+ this.compiled = {
235
+ forward: forward.map(pair => pair.forward),
236
+ inverse: inverse.map(pair => pair.forward),
237
+ forwardFlat: compileFlat(forward),
238
+ inverseFlat: compileFlat(inverse)
239
+ };
240
+ }
241
+ operations(inverse) {
242
+ this.compile();
243
+ return inverse ? this.compiled.inverse : this.compiled.forward;
244
+ }
245
+ scalar(coordinate, inverse, epoch, output) {
246
+ this.coordinateEpoch(epoch);
247
+ if (coordinate.length < (this.requiresZ ? 3 : 2))
248
+ throw new Error('Pipeline requires ' + (this.requiresZ ? 'XYZ' : 'XY') + ' coordinates');
249
+ const operations = this.operations(inverse);
250
+ const point = this.coordinateScratch.acquire();
251
+ try {
252
+ point.x = coordinate[0];
253
+ point.y = coordinate[1];
254
+ point.z = coordinate.length >= 3 ? coordinate[2] : 0;
255
+ let stack = EMPTY_STACK;
256
+ if (this.stackSize) {
257
+ if (point === this.coordinateScratch.point) {
258
+ this.coordinateStack || (this.coordinateStack = new Float64Array(this.stackSize));
259
+ stack = this.coordinateStack;
260
+ }
261
+ else {
262
+ stack = new Float64Array(this.stackSize);
263
+ }
264
+ }
265
+ this.run(point, operations, stack, epoch);
266
+ if (output)
267
+ return writeScalarOutput(coordinate, output, point, coordinate.length);
268
+ const result = [...coordinate];
269
+ result[0] = point.x;
270
+ result[1] = point.y;
271
+ if (coordinate.length >= 3)
272
+ result[2] = point.z;
273
+ return result;
274
+ }
275
+ finally {
276
+ this.coordinateScratch.release(point);
277
+ }
278
+ }
279
+ flat(coordinates, dimension, inverse, epochs) {
280
+ if (!(coordinates instanceof Float32Array || coordinates instanceof Float64Array) ||
281
+ !Number.isSafeInteger(dimension) ||
282
+ dimension < (this.requiresZ ? 3 : 2) ||
283
+ coordinates.length % dimension)
284
+ throw new Error('Pipeline requires Float32Array/Float64Array and a valid XY/XYZ stride');
285
+ if (epochs === undefined)
286
+ this.coordinateEpoch(undefined);
287
+ else if (typeof epochs === 'number')
288
+ this.coordinateEpoch(epochs);
289
+ else {
290
+ if (!(epochs instanceof Float32Array || epochs instanceof Float64Array) ||
291
+ epochs.length !== coordinates.length / dimension)
292
+ throw new Error('Epoch buffer requires one Float32/Float64 value per coordinate record');
293
+ if (epochs.byteOffset < coordinates.byteOffset + coordinates.byteLength &&
294
+ coordinates.byteOffset < epochs.byteOffset + epochs.byteLength &&
295
+ (epochs.buffer === coordinates.buffer ||
296
+ (sharedBuffer(epochs.buffer) && sharedBuffer(coordinates.buffer))))
297
+ throw new Error('Epoch and coordinate buffers must not overlap or alias shared storage');
298
+ }
299
+ const operations = this.operations(inverse);
300
+ const specialized = inverse ? this.compiled.inverseFlat : this.compiled.forwardFlat;
301
+ if (specialized) {
302
+ specialized(coordinates, dimension, epochs);
303
+ return coordinates;
304
+ }
305
+ const point = this.coordinateScratch.acquire();
306
+ try {
307
+ const float32 = coordinates instanceof Float32Array;
308
+ let stack = EMPTY_STACK;
309
+ if (this.stackSize) {
310
+ if (point === this.coordinateScratch.point) {
311
+ this.coordinateStack || (this.coordinateStack = new Float64Array(this.stackSize));
312
+ stack = this.coordinateStack;
313
+ }
314
+ else
315
+ stack = new Float64Array(this.stackSize);
316
+ }
317
+ const epochBuffer = typeof epochs === 'number' ? undefined : epochs;
318
+ let epoch = typeof epochs === 'number' ? epochs : undefined;
319
+ for (let i = 0; i < coordinates.length; i += dimension) {
320
+ point.x = coordinates[i];
321
+ point.y = coordinates[i + 1];
322
+ point.z = dimension >= 3 ? coordinates[i + 2] : 0;
323
+ if (epochBuffer) {
324
+ epoch = epochBuffer[i / dimension];
325
+ this.coordinateEpoch(epoch);
326
+ }
327
+ this.run(point, operations, stack, epoch);
328
+ if (float32 &&
329
+ Math.max(Math.abs(point.x), Math.abs(point.y), Math.abs(point.z)) > 3.4028234663852886e38)
330
+ throw new Error('Pipeline output exceeds Float32 range');
331
+ coordinates[i] = point.x;
332
+ coordinates[i + 1] = point.y;
333
+ if (dimension >= 3)
334
+ coordinates[i + 2] = point.z;
335
+ }
336
+ return coordinates;
337
+ }
338
+ finally {
339
+ this.coordinateScratch.release(point);
340
+ }
341
+ }
342
+ coordinateEpoch(epoch) {
343
+ if (epoch === undefined) {
344
+ if (this.requiresEpoch)
345
+ throw new Error('Pipeline requires an explicit coordinate epoch');
346
+ }
347
+ else if (typeof epoch !== 'number' || !Number.isFinite(epoch))
348
+ throw new Error('Coordinate epoch must be a finite decimal year');
349
+ }
350
+ run(point, operations, stack, epoch) {
351
+ finite(point);
352
+ for (const operation of operations) {
353
+ operation(point, stack, epoch);
354
+ finite(point);
355
+ }
356
+ }
357
+ balanced(state) {
358
+ if (state.stacks.some(stack => stack.length))
359
+ throw new Error('Pipeline stack has unbalanced push/pop operations');
360
+ }
361
+ prepare(step, state, options, cache) {
362
+ const allowed = {
363
+ unitconvert: ['xy', 'z'],
364
+ axisswap: ['order'],
365
+ projection: ['name', 'parameters', 'output'],
366
+ cart: ['ellipsoid'],
367
+ helmert: [
368
+ 'translation',
369
+ 'rotation',
370
+ 'scalePPM',
371
+ 'convention',
372
+ 'exact',
373
+ 'referenceEpoch',
374
+ 'rates'
375
+ ],
376
+ deformation: ['model', 'sourceEpoch', 'targetEpoch'],
377
+ push: ['components'],
378
+ pop: ['components'],
379
+ hgridshift: ['grids'],
380
+ vgridshift: ['grids', 'multiplier']
381
+ };
382
+ if (!step || !own(allowed, step.type))
383
+ unsupportedStage('Unsupported pipeline operation: ' + step?.type);
384
+ keys(step, ['type', 'inverse', 'omitForward', 'omitInverse', ...allowed[step.type]]);
385
+ if (step.inverse !== undefined && typeof step.inverse !== 'boolean')
386
+ throw new Error('Invalid pipeline inverse flag');
387
+ const inverse = Boolean(step.inverse);
388
+ const orient = (pair) => inverse
389
+ ? {
390
+ forward: pair.inverse,
391
+ inverse: pair.forward,
392
+ forwardNumeric: pair.inverseNumeric,
393
+ inverseNumeric: pair.forwardNumeric,
394
+ forwardFlat: pair.inverseFlat,
395
+ inverseFlat: pair.forwardFlat
396
+ }
397
+ : pair;
398
+ const pair = (forward, backward, forwardNumeric, inverseNumeric, forwardFlat, inverseFlat) => () => {
399
+ cache.pair || (cache.pair = {
400
+ forward,
401
+ inverse: backward,
402
+ forwardNumeric,
403
+ inverseNumeric,
404
+ forwardFlat,
405
+ inverseFlat
406
+ });
407
+ return orient(cache.pair);
408
+ };
409
+ const requireState = (space, expected) => {
410
+ if (state.space !== space || expected.some((unit, index) => state.units[index] !== unit))
411
+ throw new Error('Pipeline step ' + step.type + ' requires ' + space + ' ' + expected.join('/'));
412
+ };
413
+ switch (step.type) {
414
+ case 'unitconvert': {
415
+ if (!step.xy && !step.z)
416
+ throw new Error('Empty unit conversion');
417
+ const scale = [1, 1, 1];
418
+ for (const [conversion, indices] of [
419
+ [step.xy, [0, 1]],
420
+ [step.z, [2]]
421
+ ]) {
422
+ if (!conversion)
423
+ continue;
424
+ keys(conversion, ['from', 'to']);
425
+ const { from, to } = conversion;
426
+ if (!own(factors, from) || !own(factors, to) || angular(from) !== angular(to))
427
+ throw new Error('Incompatible pipeline units');
428
+ for (const index of indices) {
429
+ if (state.units[index] !== (inverse ? to : from))
430
+ throw new Error('Pipeline unit mismatch');
431
+ state.units[index] = inverse ? from : to;
432
+ scale[index] = factors[from] / factors[to];
433
+ }
434
+ }
435
+ this.requiresZ || (this.requiresZ = Boolean(step.z));
436
+ const [xScale, yScale, zScale] = scale;
437
+ return pair(p => {
438
+ p.x *= xScale;
439
+ p.y *= yScale;
440
+ p.z *= zScale;
441
+ }, p => {
442
+ p.x /= xScale;
443
+ p.y /= yScale;
444
+ p.z /= zScale;
445
+ }, [0, xScale, yScale, zScale], [1, xScale, yScale, zScale]);
446
+ }
447
+ case 'axisswap': {
448
+ const order = [...step.order];
449
+ if (![2, 3].includes(order.length) ||
450
+ order.some(index => !Number.isInteger(index) || Math.abs(index) < 1 || Math.abs(index) > order.length) ||
451
+ new Set(order.map(Math.abs)).size !== order.length)
452
+ throw new Error('Axis order must be a signed permutation');
453
+ if (order.length === 2)
454
+ order.push(3);
455
+ this.requiresZ || (this.requiresZ = step.order.length === 3);
456
+ const reverse = [0, 0, 0];
457
+ order.forEach((index, target) => {
458
+ reverse[Math.abs(index) - 1] = Math.sign(index) * (target + 1);
459
+ });
460
+ const selected = inverse ? reverse : order;
461
+ state.units = selected.map(index => state.units[Math.abs(index) - 1]);
462
+ const operation = (indices) => {
463
+ const [a, b, c] = indices.map(Math.abs);
464
+ const [sx, sy, sz] = indices.map(Math.sign);
465
+ return p => {
466
+ const { x, y, z } = p;
467
+ p.x = sx * (a === 1 ? x : a === 2 ? y : z);
468
+ p.y = sy * (b === 1 ? x : b === 2 ? y : z);
469
+ p.z = sz * (c === 1 ? x : c === 2 ? y : z);
470
+ };
471
+ };
472
+ return pair(operation(order), operation(reverse), [2, order[0], order[1], order[2]], [2, reverse[0], reverse[1], reverse[2]]);
473
+ }
474
+ case 'projection': {
475
+ const output = step.output === undefined ? { space: 'projected', unit: 'm' } : { ...step.output };
476
+ keys(output, ['space', 'unit']);
477
+ if (output.space === 'geographic'
478
+ ? !['rad', 'deg'].includes(output.unit)
479
+ : output.space !== 'projected' || output.unit !== 'm')
480
+ throw new Error('Invalid projection output space/unit contract');
481
+ requireState(inverse ? output.space : 'geographic', inverse ? [output.unit, output.unit] : ['rad', 'rad']);
482
+ state.space = inverse ? 'geographic' : output.space;
483
+ state.units[0] = state.units[1] = inverse ? 'rad' : output.unit;
484
+ const key = (name) => name.toLowerCase().replace(/[\s_-]/g, '');
485
+ if (typeof step.name !== 'string')
486
+ throw new Error('Invalid projection name');
487
+ const registration = options.projections?.find(p => [p.name, ...(p.aliases || [])].some(name => key(name) === key(step.name)));
488
+ if (!registration)
489
+ unsupportedStage('Pipeline projection is not registered: ' + step.name);
490
+ if (!this.required.includes(registration))
491
+ this.required.push(registration);
492
+ const parameters = { ...step.parameters };
493
+ for (const name of Object.keys(parameters))
494
+ if (CORE_PARAMETERS.includes(name) && !geometryKeys.includes(name) && name !== 'over')
495
+ unsupportedStage('Unsupported pipeline parameter: ' + name);
496
+ const oblique = key(registration.name) === 'obtran';
497
+ const geographicChild = ['longlat', 'latlong', 'latlon', 'lonlat', 'identity'].includes(key(parameters['o_proj'] || ''));
498
+ if (oblique && (!step.output || !parameters['o_proj']))
499
+ unsupportedStage('Oblique helper pipelines require an explicit output-unit contract and o_proj');
500
+ if ((oblique && geographicChild) !== (output.space === 'geographic'))
501
+ throw new Error('Projection output contract does not match its algorithm');
502
+ const scale = geographicChild && output.unit === 'rad' ? Math.PI / 180 : 1;
503
+ const normalized = normalizeCRS(definition(registration.name, parameters));
504
+ if (normalized.kind !== 'projected')
505
+ unsupportedStage('Use a cart step for geocentric conversion');
506
+ return () => {
507
+ if (cache.pair)
508
+ return orient(cache.pair);
509
+ const plugin = getLoadedProjection(registration);
510
+ if (!plugin)
511
+ unsupportedStage('Pipeline projection requires preload(): ' + registration.name);
512
+ if ((key(plugin.name) === 'obtran') !== oblique)
513
+ unsupportedStage('Pipeline projection requires a matching projected-metre output contract: ' +
514
+ plugin.name);
515
+ if ([
516
+ 'geocent',
517
+ 'geocentric',
518
+ 'identity',
519
+ 'longlat',
520
+ 'latlong',
521
+ 'latlon',
522
+ 'lonlat'
523
+ ].includes(key(plugin.name)))
524
+ unsupportedStage('Pipeline projection requires a projected-metre output contract: ' + plugin.name);
525
+ keys(parameters, [...geometryKeys, 'over', ...plugin.parameters]);
526
+ for (const [name, value] of Object.entries(parameters)) {
527
+ const flag = name === 'over' || plugin.flags?.includes(name);
528
+ if (flag && value !== undefined)
529
+ throw new Error('Expected a flag without a value: ' + name);
530
+ if (!flag && value === undefined)
531
+ throw new Error('Pipeline parameter requires a value: ' + name);
532
+ }
533
+ const implementation = plugin.create({
534
+ parameters: { ...normalized.parameters, proj: plugin.name },
535
+ semiMajorAxis: normalized.ellipsoid.semiMajorAxis,
536
+ semiMinorAxis: normalized.ellipsoid.semiMinorAxis,
537
+ eccentricitySquared: normalized.ellipsoid.eccentricitySquared
538
+ });
539
+ const forward = projectionOperation(implementation, false), backward = projectionOperation(implementation, true);
540
+ cache.pair = oblique
541
+ ? {
542
+ forward: p => {
543
+ if (Math.abs(p.y) > Math.PI / 2)
544
+ throw new Error('Invalid geographic latitude');
545
+ forward(p);
546
+ p.x *= scale;
547
+ p.y *= scale;
548
+ },
549
+ inverse: p => {
550
+ if (geographicChild && Math.abs(p.y) > (output.unit === 'deg' ? 90 : Math.PI / 2))
551
+ throw new Error('Invalid rotated geographic latitude');
552
+ p.x /= scale;
553
+ p.y /= scale;
554
+ backward(p);
555
+ }
556
+ }
557
+ : { forward, inverse: backward };
558
+ return orient(cache.pair);
559
+ };
560
+ }
561
+ case 'cart': {
562
+ requireState(inverse ? 'geocentric' : 'geographic', inverse ? ['m', 'm', 'm'] : ['rad', 'rad', 'm']);
563
+ state.space = inverse ? 'geographic' : 'geocentric';
564
+ state.units = inverse ? ['rad', 'rad', 'm'] : ['m', 'm', 'm'];
565
+ this.requiresZ = true;
566
+ keys(step.ellipsoid || {}, geometryKeys);
567
+ const ellipsoid = normalizeCRS(definition('longlat', step.ellipsoid)).ellipsoid;
568
+ return pair(p => geodeticToGeocentricInPlace(p, ellipsoid), p => geocentricToGeodeticInPlace(p, ellipsoid));
569
+ }
570
+ case 'helmert': {
571
+ requireState('geocentric', ['m', 'm', 'm']);
572
+ this.requiresZ = true;
573
+ triple(step.translation);
574
+ if (step.rotation)
575
+ triple(step.rotation);
576
+ if ((step.rotation || step.rates?.rotation) && !step.convention)
577
+ throw new Error('Helmert rotation requires a convention');
578
+ if (step.convention !== undefined &&
579
+ !['position_vector', 'coordinate_frame'].includes(step.convention))
580
+ throw new Error('Invalid Helmert convention');
581
+ const scale = step.scalePPM ?? 0;
582
+ if (!Number.isFinite(scale) || scale <= -1e6)
583
+ throw new Error('Helmert requires positive finite scale');
584
+ if (step.exact !== undefined && typeof step.exact !== 'boolean')
585
+ throw new Error('Invalid exact Helmert flag');
586
+ if (step.rates !== undefined) {
587
+ keys(step.rates, ['translation', 'rotation', 'scalePPM']);
588
+ if (step.rates.translation === undefined &&
589
+ step.rates.rotation === undefined &&
590
+ step.rates.scalePPM === undefined)
591
+ throw new Error('Helmert rates require at least one parameter');
592
+ if (step.rates.translation !== undefined)
593
+ triple(step.rates.translation);
594
+ if (step.rates.rotation !== undefined)
595
+ triple(step.rates.rotation);
596
+ if (step.rates.scalePPM !== undefined && !Number.isFinite(step.rates.scalePPM))
597
+ throw new Error('Helmert scale rate must be finite');
598
+ if (typeof step.referenceEpoch !== 'number' || !Number.isFinite(step.referenceEpoch))
599
+ throw new Error('Helmert rates require a finite referenceEpoch');
600
+ this.requiresEpoch = true;
601
+ const operation = createKinematicHelmert(step.translation, step.rotation || [0, 0, 0], scale, step.rates, step.referenceEpoch, step.convention === 'coordinate_frame', Boolean(step.exact));
602
+ return pair((p, _stack, epoch) => operation.forward(p, epoch), (p, _stack, epoch) => operation.inverse(p, epoch), undefined, undefined, operation.forwardFlat, operation.inverseFlat);
603
+ }
604
+ if (step.referenceEpoch !== undefined)
605
+ throw new Error('Helmert referenceEpoch requires rates');
606
+ if (step.exact) {
607
+ const exact = createExactHelmert(step.translation, step.rotation || [0, 0, 0], scale, step.convention === 'coordinate_frame');
608
+ return pair(exact.forward, exact.inverse, undefined, undefined, createHelmertFlat(exact.coefficients, false, true), createHelmertFlat(exact.coefficients, true, true));
609
+ }
610
+ const sign = step.convention === 'coordinate_frame' ? -1 : 1;
611
+ const values = [
612
+ ...step.translation,
613
+ ...(step.rotation || [0, 0, 0]).map(value => sign * value),
614
+ scale
615
+ ];
616
+ const radians = Math.PI / (180 * 3600);
617
+ const coefficients = [
618
+ (values[3] || 0) * radians,
619
+ (values[4] || 0) * radians,
620
+ (values[5] || 0) * radians,
621
+ 0,
622
+ 0,
623
+ 0,
624
+ 0,
625
+ 0,
626
+ 0,
627
+ values[0],
628
+ values[1],
629
+ values[2],
630
+ 1 + (values[6] || 0) / 1e6
631
+ ];
632
+ return pair(createHelmert(values, false), createHelmert(values, true), undefined, undefined, createHelmertFlat(coefficients, false, false), createHelmertFlat(coefficients, true, false));
633
+ }
634
+ case 'deformation': {
635
+ requireState('geocentric', ['m', 'm', 'm']);
636
+ this.requiresZ = true;
637
+ const source = step.sourceEpoch, target = step.targetEpoch;
638
+ if ((source !== 'coordinate' && (typeof source !== 'number' || !Number.isFinite(source))) ||
639
+ typeof target !== 'number' ||
640
+ !Number.isFinite(target))
641
+ throw new Error('Explicit finite deformation source/target epochs required');
642
+ if (!step.model ||
643
+ typeof step.model.forward !== 'function' ||
644
+ typeof step.model.inverse !== 'function')
645
+ throw new Error('Prepared deformation model required');
646
+ this.requiresEpoch || (this.requiresEpoch = source === 'coordinate');
647
+ const forward = step.model.forward.bind(step.model), backward = step.model.inverse.bind(step.model);
648
+ return pair((p, _stack, epoch) => forward(p, source === 'coordinate' ? epoch : source, target), (p, _stack, epoch) => backward(p, source === 'coordinate' ? epoch : source, target));
649
+ }
650
+ case 'push':
651
+ case 'pop': {
652
+ if (!Array.isArray(step.components) ||
653
+ !step.components.length ||
654
+ step.components.some(component => !Number.isInteger(component) || component < 1 || component > 3) ||
655
+ new Set(step.components).size !== step.components.length)
656
+ throw new Error('Stack components must be distinct ordinates 1, 2 or 3');
657
+ const components = [...step.components];
658
+ this.requiresZ || (this.requiresZ = components.includes(3));
659
+ const pushing = (step.type === 'push') !== inverse;
660
+ const entries = components.map(component => {
661
+ const index = component - 1;
662
+ if (pushing) {
663
+ const entry = { unit: state.units[index], space: state.space, slot: this.stackSize++ };
664
+ state.stacks[index].push(entry);
665
+ return entry;
666
+ }
667
+ const entry = state.stacks[index].pop();
668
+ if (!entry)
669
+ throw new Error('Pipeline stack underflow for ordinate ' + component);
670
+ return entry;
671
+ });
672
+ if (!pushing) {
673
+ const horizontal = components
674
+ .map((component, index) => ({ component, entry: entries[index] }))
675
+ .filter(({ component }) => component < 3);
676
+ const space = horizontal[0]?.entry.space || state.space;
677
+ if (horizontal.some(({ entry }) => entry.space !== space) ||
678
+ (horizontal.length === 1 && space !== state.space))
679
+ throw new Error('Stack restore would mix horizontal coordinate spaces');
680
+ state.space = space;
681
+ components.forEach((component, index) => {
682
+ state.units[component - 1] = entries[index].unit;
683
+ });
684
+ }
685
+ const save = (p, stack) => {
686
+ for (let index = 0; index < components.length; index++)
687
+ stack[entries[index].slot] =
688
+ components[index] === 1 ? p.x : components[index] === 2 ? p.y : p.z;
689
+ };
690
+ const restore = (p, stack) => {
691
+ for (let index = 0; index < components.length; index++) {
692
+ const value = stack[entries[index].slot];
693
+ if (components[index] === 1)
694
+ p.x = value;
695
+ else if (components[index] === 2)
696
+ p.y = value;
697
+ else
698
+ p.z = value;
699
+ }
700
+ };
701
+ // Unlike equations, stack slots are direction-local and must not use the
702
+ // shared pair cache. Their matching push is known at construction.
703
+ return () => pushing ? { forward: save, inverse: restore } : { forward: restore, inverse: save };
704
+ }
705
+ case 'hgridshift': {
706
+ requireState('geographic', ['rad', 'rad']);
707
+ if (typeof step.grids !== 'string')
708
+ throw new Error('Horizontal grid names required');
709
+ const crs = normalizeCRS(definition('longlat', { nadgrids: step.grids }));
710
+ // Normalization collapses sole null/@null lists to no datum-grid metadata.
711
+ if (!crs.datum.grids)
712
+ return pair(() => { }, () => { });
713
+ const grids = crs.datum.grids.map(reference => {
714
+ const grid = own(options.datumGrids || {}, reference.name)
715
+ ? options.datumGrids[reference.name]
716
+ : undefined;
717
+ if (reference.name !== 'null' && !grid && !reference.optional)
718
+ unsupportedStage('Required datum grid is not registered: ' + reference.name);
719
+ if (grid && typeof grid.shift !== 'function')
720
+ throw new Error('Invalid datum grid: ' + reference.name);
721
+ return { ...reference, grid };
722
+ });
723
+ const datum = { ...crs.datum, grids };
724
+ return pair(p => applyDatumGrids(p, datum, false), p => applyDatumGrids(p, datum, true));
725
+ }
726
+ case 'vgridshift': {
727
+ requireState('geographic', ['rad', 'rad', 'm']);
728
+ this.requiresZ = true;
729
+ if (typeof step.grids !== 'string')
730
+ throw new Error('Vertical grid names required');
731
+ const offset = compileVerticalGrid(step.grids, options.verticalGrids);
732
+ const multiplier = step.multiplier ?? -1;
733
+ if (!Number.isFinite(multiplier))
734
+ throw new Error('Vertical grid multiplier must be finite');
735
+ return pair(p => {
736
+ p.z += multiplier * offset(p.x, p.y);
737
+ }, p => {
738
+ p.z -= multiplier * offset(p.x, p.y);
739
+ });
740
+ }
741
+ default:
742
+ throw new Error('Unsupported pipeline step');
743
+ }
744
+ }
745
+ }
746
+ //# sourceMappingURL=projection-pipeline.js.map