liftie 3.56.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/Makefile +2 -2
  2. package/app.js +33 -25
  3. package/lib/checker.js +1 -1
  4. package/lib/cli/curl.js +8 -8
  5. package/lib/cli/dirs.js +8 -6
  6. package/lib/cli/fetch.js +9 -9
  7. package/lib/cli/for-each-resort.js +3 -4
  8. package/lib/cli/generate.js +10 -10
  9. package/lib/cli/noaa.js +7 -12
  10. package/lib/client/about/index.js +2 -6
  11. package/lib/client/boot/height.js +2 -6
  12. package/lib/client/boot/index.js +8 -11
  13. package/lib/client/boot/service-worker.js +1 -5
  14. package/lib/client/minimax/index.js +1 -3
  15. package/lib/client/resort/dom.js +2 -7
  16. package/lib/client/resort/index.js +7 -10
  17. package/lib/client/resort/lifts.js +4 -5
  18. package/lib/client/resort/snow.js +3 -4
  19. package/lib/client/resort/weather.js +3 -4
  20. package/lib/client/resort/webcams.js +5 -8
  21. package/lib/client/state/index.js +4 -7
  22. package/lib/client/stats/index.js +1 -5
  23. package/lib/client/tag/index.js +1 -3
  24. package/lib/embed/index.js +0 -2
  25. package/lib/lifts/index.js +12 -12
  26. package/lib/lifts/parse.js +5 -5
  27. package/lib/lifts/parser.js +6 -10
  28. package/lib/lifts/pipe.js +3 -3
  29. package/lib/lifts/request.js +1 -3
  30. package/lib/lifts/rest.js +2 -4
  31. package/lib/lifts/stats.js +2 -5
  32. package/lib/loader.js +9 -12
  33. package/lib/loaders.js +7 -8
  34. package/lib/opening.js +6 -5
  35. package/lib/plugins.js +3 -8
  36. package/lib/resorts/3cime/index.js +1 -1
  37. package/lib/resorts/3cime/resort.json +1 -1
  38. package/lib/resorts/49-degrees-north/index.js +1 -1
  39. package/lib/resorts/abasin/index.js +2 -2
  40. package/lib/resorts/alpe-lusia-san-pellegrino/index.js +1 -1
  41. package/lib/resorts/alpe-lusia-san-pellegrino/resort.json +1 -1
  42. package/lib/resorts/alpine/index.js +1 -1
  43. package/lib/resorts/alta/index.js +6 -7
  44. package/lib/resorts/alta-badia/index.js +1 -1
  45. package/lib/resorts/alta-badia/resort.json +1 -1
  46. package/lib/resorts/alyeska/index.js +1 -1
  47. package/lib/resorts/angel-fire/index.js +1 -1
  48. package/lib/resorts/arabba/index.js +1 -1
  49. package/lib/resorts/arabba/resort.json +1 -1
  50. package/lib/resorts/aspen-highlands/index.js +1 -1
  51. package/lib/resorts/aspen-mountain/index.js +1 -1
  52. package/lib/resorts/attitash/index.js +1 -1
  53. package/lib/resorts/beavercreek/index.js +1 -1
  54. package/lib/resorts/berkshire-east/index.js +1 -1
  55. package/lib/resorts/big-sky/index.js +1 -1
  56. package/lib/resorts/big-white/index.js +1 -1
  57. package/lib/resorts/big-white/resort.json +1 -1
  58. package/lib/resorts/blue-mountain-pa/index.js +1 -1
  59. package/lib/resorts/bluemountain/index.js +1 -1
  60. package/lib/resorts/bogusbasin/index.js +5 -4
  61. package/lib/resorts/bolton-valley/index.js +2 -3
  62. package/lib/resorts/boreal/index.js +1 -1
  63. package/lib/resorts/breck/index.js +1 -1
  64. package/lib/resorts/brettonwoods/index.js +7 -5
  65. package/lib/resorts/brianhead/index.js +1 -1
  66. package/lib/resorts/bridger-bowl/index.js +4 -3
  67. package/lib/resorts/brighton/index.js +1 -1
  68. package/lib/resorts/bromley-mountain/index.js +1 -1
  69. package/lib/resorts/burke-mountain/index.js +1 -1
  70. package/lib/resorts/buttermilk/index.js +1 -1
  71. package/lib/resorts/caberfae-peaks/index.js +1 -1
  72. package/lib/resorts/camelback/index.js +1 -1
  73. package/lib/resorts/campo-felice/index.js +1 -1
  74. package/lib/resorts/campo-felice/resort.json +1 -1
  75. package/lib/resorts/canada-olympic-park/index.js +1 -1
  76. package/lib/resorts/cannon/index.js +1 -1
  77. package/lib/resorts/cataloochee/index.js +1 -1
  78. package/lib/resorts/catedral/index.js +1 -1
  79. package/lib/resorts/cervino/index.js +2 -2
  80. package/lib/resorts/chamonix/index.js +2 -2
  81. package/lib/resorts/chamonix/resort.json +1 -1
  82. package/lib/resorts/chinapeak/index.js +1 -1
  83. package/lib/resorts/civetta/index.js +1 -1
  84. package/lib/resorts/civetta/resort.json +1 -1
  85. package/lib/resorts/claviere/index.js +1 -1
  86. package/lib/resorts/copper/index.js +1 -1
  87. package/lib/resorts/coronetpeak/index.js +1 -1
  88. package/lib/resorts/coronetpeak/resort.json +1 -1
  89. package/lib/resorts/cortina-d-ampezzo/index.js +1 -1
  90. package/lib/resorts/cortina-d-ampezzo/resort.json +1 -1
  91. package/lib/resorts/courchevel/index.js +1 -1
  92. package/lib/resorts/courchevel/resort.json +2 -1
  93. package/lib/resorts/cranmore-mountain/index.js +1 -1
  94. package/lib/resorts/cransmontana/index.js +2 -2
  95. package/lib/resorts/crested-butte/index.js +1 -1
  96. package/lib/resorts/crystal-mountain/index.js +1 -1
  97. package/lib/resorts/cypress-mountain/index.js +1 -1
  98. package/lib/resorts/deer-valley/index.js +1 -1
  99. package/lib/resorts/devils-head/index.js +1 -1
  100. package/lib/resorts/diamondpeak/index.js +1 -1
  101. package/lib/resorts/falls-creek/index.js +5 -3
  102. package/lib/resorts/falls-creek/resort.json +1 -1
  103. package/lib/resorts/flims-laax-falera/index.js +1 -1
  104. package/lib/resorts/flims-laax-falera/resort.json +1 -1
  105. package/lib/resorts/folgaria/index.js +1 -1
  106. package/lib/resorts/folgaria/resort.json +1 -1
  107. package/lib/resorts/folgarida-marilleva/index.js +2 -1
  108. package/lib/resorts/forni/index.js +1 -1
  109. package/lib/resorts/forni/resort.json +1 -1
  110. package/lib/resorts/gore-mountain/index.js +1 -1
  111. package/lib/resorts/grand-targhee/index.js +1 -1
  112. package/lib/resorts/grouse/index.js +1 -1
  113. package/lib/resorts/gunstock/index.js +1 -1
  114. package/lib/resorts/heavenly/index.js +1 -1
  115. package/lib/resorts/hochfuegen/index.js +2 -2
  116. package/lib/resorts/homewood/index.js +1 -1
  117. package/lib/resorts/hoodoo/index.js +1 -1
  118. package/lib/resorts/hunter/index.js +1 -1
  119. package/lib/resorts/ischgl-silvretta-arena/index.js +1 -1
  120. package/lib/resorts/jackson-hole/index.js +5 -3
  121. package/lib/resorts/jay-peak/index.js +1 -1
  122. package/lib/resorts/jiminypeak/index.js +1 -1
  123. package/lib/resorts/june-mountain/index.js +1 -1
  124. package/lib/resorts/keystone/index.js +1 -1
  125. package/lib/resorts/killington/index.js +1 -1
  126. package/lib/resorts/king-pine/index.js +5 -3
  127. package/lib/resorts/kirkwood/index.js +1 -1
  128. package/lib/resorts/kitzbuehel/index.js +1 -1
  129. package/lib/resorts/lamolina/index.js +1 -1
  130. package/lib/resorts/lamolina/resort.json +1 -1
  131. package/lib/resorts/laplagne/index.js +1 -1
  132. package/lib/resorts/laplagne/resort.json +2 -1
  133. package/lib/resorts/larosiere/index.js +1 -1
  134. package/lib/resorts/lavarone/index.js +1 -1
  135. package/lib/resorts/lavarone/resort.json +1 -1
  136. package/lib/resorts/lesarcs/index.js +1 -1
  137. package/lib/resorts/lesmenuires/index.js +1 -1
  138. package/lib/resorts/lesmenuires/resort.json +2 -1
  139. package/lib/resorts/loon/index.js +1 -1
  140. package/lib/resorts/loveland/index.js +2 -2
  141. package/lib/resorts/mad-river-glen/index.js +2 -2
  142. package/lib/resorts/madonna-di-campiglio/index.js +2 -1
  143. package/lib/resorts/mammoth-lakes/index.js +1 -1
  144. package/lib/resorts/manning-park/index.js +1 -1
  145. package/lib/resorts/manning-park/resort.json +1 -1
  146. package/lib/resorts/megeve/index.js +1 -1
  147. package/lib/resorts/megeve/resort.json +2 -1
  148. package/lib/resorts/meribel/index.js +1 -1
  149. package/lib/resorts/meribel/resort.json +2 -1
  150. package/lib/resorts/monarch/index.js +2 -2
  151. package/lib/resorts/monte-amiata/index.js +1 -1
  152. package/lib/resorts/monte-amiata/resort.json +1 -1
  153. package/lib/resorts/monte-bondone/index.js +1 -1
  154. package/lib/resorts/montegenevre/index.js +1 -1
  155. package/lib/resorts/monterosa/index.js +1 -1
  156. package/lib/resorts/morzine/index.js +1 -1
  157. package/lib/resorts/morzine/resort.json +6 -2
  158. package/lib/resorts/mount-sunapee/index.js +1 -1
  159. package/lib/resorts/mountsnow/index.js +1 -1
  160. package/lib/resorts/mt-buller/index.js +1 -1
  161. package/lib/resorts/mt-hotham/index.js +5 -3
  162. package/lib/resorts/mt-seymour/index.js +1 -1
  163. package/lib/resorts/mt-spokane/index.js +1 -1
  164. package/lib/resorts/mtbachelor/index.js +1 -1
  165. package/lib/resorts/mtbrighton/index.js +1 -1
  166. package/lib/resorts/mthigh/index.js +1 -1
  167. package/lib/resorts/mthood/index.js +1 -1
  168. package/lib/resorts/mtpeter/index.js +1 -1
  169. package/lib/resorts/mtpeter/resort.json +1 -1
  170. package/lib/resorts/mtrose/index.js +1 -1
  171. package/lib/resorts/niseko/index.js +1 -1
  172. package/lib/resorts/niseko/resort.json +1 -1
  173. package/lib/resorts/northstar/index.js +1 -1
  174. package/lib/resorts/okemo/index.js +1 -1
  175. package/lib/resorts/ovindoli/index.js +1 -1
  176. package/lib/resorts/ovindoli/resort.json +1 -1
  177. package/lib/resorts/owlshead/index.js +1 -1
  178. package/lib/resorts/paganella/index.js +1 -1
  179. package/lib/resorts/paganella/resort.json +1 -1
  180. package/lib/resorts/palisades/index.js +1 -1
  181. package/lib/resorts/parkcity/index.js +1 -1
  182. package/lib/resorts/pats-peak/index.js +4 -2
  183. package/lib/resorts/peio/index.js +2 -2
  184. package/lib/resorts/perisher/index.js +1 -1
  185. package/lib/resorts/perisher/resort.json +1 -1
  186. package/lib/resorts/piancavallo/index.js +1 -1
  187. package/lib/resorts/piancavallo/resort.json +1 -1
  188. package/lib/resorts/pico/index.js +1 -1
  189. package/lib/resorts/pinzolo/index.js +2 -1
  190. package/lib/resorts/plan-de-corones/index.js +1 -1
  191. package/lib/resorts/plan-de-corones/resort.json +1 -1
  192. package/lib/resorts/pleasant-mountain/index.js +1 -1
  193. package/lib/resorts/pontedilegno-tonale/index.js +1 -1
  194. package/lib/resorts/ragged-mountain/index.js +1 -1
  195. package/lib/resorts/ravascletto-zoncolan/index.js +1 -1
  196. package/lib/resorts/ravascletto-zoncolan/resort.json +1 -1
  197. package/lib/resorts/red-lodge-mountain/index.js +1 -1
  198. package/lib/resorts/red-mountain/index.js +2 -3
  199. package/lib/resorts/rio-pusteria-bressanone/index.js +1 -1
  200. package/lib/resorts/rio-pusteria-bressanone/resort.json +1 -1
  201. package/lib/resorts/roccaraso/index.js +1 -1
  202. package/lib/resorts/roccaraso/resort.json +1 -1
  203. package/lib/resorts/saddleback/index.js +1 -1
  204. package/lib/resorts/san-martino-di-castrozza-passo-rolle/index.js +1 -1
  205. package/lib/resorts/san-martino-di-castrozza-passo-rolle/resort.json +1 -1
  206. package/lib/resorts/sansicario/index.js +1 -1
  207. package/lib/resorts/sappada/index.js +1 -1
  208. package/lib/resorts/sappada/resort.json +1 -1
  209. package/lib/resorts/sasquatch-mountain/index.js +1 -1
  210. package/lib/resorts/sauris/index.js +1 -1
  211. package/lib/resorts/sauris/resort.json +1 -1
  212. package/lib/resorts/sauze/index.js +1 -1
  213. package/lib/resorts/schweitzer/index.js +1 -1
  214. package/lib/resorts/sella/index.js +1 -1
  215. package/lib/resorts/sella/resort.json +1 -1
  216. package/lib/resorts/serfaus-fiss-ladis/index.js +1 -1
  217. package/lib/resorts/sestriere/index.js +1 -1
  218. package/lib/resorts/sestriere/resort.json +1 -1
  219. package/lib/resorts/shawnee-mountain/index.js +4 -2
  220. package/lib/resorts/sierra/index.js +1 -1
  221. package/lib/resorts/silver-star/index.js +2 -2
  222. package/lib/resorts/skiwelt/index.js +1 -1
  223. package/lib/resorts/smuggs/index.js +1 -1
  224. package/lib/resorts/snow-valley/index.js +2 -2
  225. package/lib/resorts/snowbasin/index.js +1 -1
  226. package/lib/resorts/snowbird/index.js +2 -3
  227. package/lib/resorts/snowmass/index.js +1 -1
  228. package/lib/resorts/snowshoe/index.js +1 -1
  229. package/lib/resorts/soelden/index.js +1 -1
  230. package/lib/resorts/solitude/index.js +1 -1
  231. package/lib/resorts/st-anton-am-arlberg/index.js +1 -1
  232. package/lib/resorts/steamboat/index.js +1 -1
  233. package/lib/resorts/stevens/index.js +1 -1
  234. package/lib/resorts/stowe/index.js +1 -1
  235. package/lib/resorts/stratton/index.js +1 -1
  236. package/lib/resorts/sugarbowl/index.js +1 -1
  237. package/lib/resorts/sugarbush/index.js +1 -1
  238. package/lib/resorts/sugarloaf/index.js +1 -1
  239. package/lib/resorts/sun-peaks/index.js +1 -1
  240. package/lib/resorts/sun-peaks/resort.json +1 -1
  241. package/lib/resorts/sunday-river/index.js +1 -1
  242. package/lib/resorts/sunshine-village/index.js +6 -3
  243. package/lib/resorts/sunvalley/index.js +1 -1
  244. package/lib/resorts/tahoe-donner/index.js +1 -1
  245. package/lib/resorts/taos/index.js +1 -1
  246. package/lib/resorts/tarvisio/index.js +1 -1
  247. package/lib/resorts/tarvisio/resort.json +1 -1
  248. package/lib/resorts/telluride/index.js +1 -1
  249. package/lib/resorts/thredbo/index.js +1 -1
  250. package/lib/resorts/tignes/index.js +1 -1
  251. package/lib/resorts/tignes/resort.json +1 -1
  252. package/lib/resorts/timberline-lodge/index.js +1 -1
  253. package/lib/resorts/tremblant/index.js +1 -1
  254. package/lib/resorts/vail/index.js +1 -1
  255. package/lib/resorts/val-di-fassa/index.js +1 -1
  256. package/lib/resorts/val-di-fassa/resort.json +1 -1
  257. package/lib/resorts/val-di-fiemme/index.js +1 -1
  258. package/lib/resorts/val-di-fiemme/resort.json +1 -1
  259. package/lib/resorts/val-gardena/index.js +1 -1
  260. package/lib/resorts/val-gardena/resort.json +1 -1
  261. package/lib/resorts/valdisere/index.js +1 -1
  262. package/lib/resorts/valdisere/resort.json +1 -1
  263. package/lib/resorts/verbier/index.js +1 -1
  264. package/lib/resorts/waterville/index.js +1 -1
  265. package/lib/resorts/whistler-blackcomb/index.js +2 -2
  266. package/lib/resorts/whistler-blackcomb/resort.json +1 -1
  267. package/lib/resorts/whiteface/index.js +1 -1
  268. package/lib/resorts/whitefish/index.js +1 -1
  269. package/lib/resorts/wildcat/index.js +1 -1
  270. package/lib/resorts/windham/index.js +1 -1
  271. package/lib/resorts/winter-park/index.js +1 -1
  272. package/lib/resorts/winterplace/index.js +1 -1
  273. package/lib/routes/cache.js +4 -4
  274. package/lib/routes/canonical.js +1 -3
  275. package/lib/routes/data.js +10 -12
  276. package/lib/routes/database.js +6 -7
  277. package/lib/routes/headers.js +2 -2
  278. package/lib/routes/index.js +9 -11
  279. package/lib/routes/plan.js +2 -4
  280. package/lib/routes/service-worker.js +6 -7
  281. package/lib/routes/sorter.js +2 -4
  282. package/lib/routes/tags.js +2 -4
  283. package/lib/select.js +3 -5
  284. package/lib/tools/aspen.js +4 -4
  285. package/lib/tools/boyne.js +4 -4
  286. package/lib/tools/campiglio-dolomiti.js +1 -1
  287. package/lib/tools/coerce.js +4 -4
  288. package/lib/tools/dolomitisuperski.js +1 -1
  289. package/lib/tools/domutil.js +11 -18
  290. package/lib/tools/infosnow.js +6 -6
  291. package/lib/tools/intrawest.js +3 -3
  292. package/lib/tools/limiter.js +2 -4
  293. package/lib/tools/lumiplan.js +2 -2
  294. package/lib/tools/millis.js +4 -11
  295. package/lib/tools/powdr.js +4 -4
  296. package/lib/tools/prism.js +5 -5
  297. package/lib/tools/skiplan.js +1 -1
  298. package/lib/tools/turismofvg.js +2 -2
  299. package/lib/tools/vail.js +8 -10
  300. package/lib/tools/vialattea.js +1 -1
  301. package/lib/weather/icons.js +3 -8
  302. package/lib/weather/index.js +5 -6
  303. package/lib/weather/noaa.js +5 -3
  304. package/lib/weather/openweather.js +6 -7
  305. package/lib/webcams.js +6 -6
  306. package/package.json +3 -2
  307. package/public/scripts/liftie-embed.js +41 -0
  308. package/public/scripts/liftie-embed.js.map +7 -0
  309. package/public/scripts/liftie.js +1561 -0
  310. package/public/scripts/liftie.js.map +7 -0
  311. package/public/stylesheets/style.css +864 -0
@@ -1,8 +1,6 @@
1
1
  const userAgent = 'Mozilla/5.0 (compatible; Liftie/1.0; +https://liftie.info)';
2
2
 
3
- module.exports = request;
4
-
5
- function request({ host, pathname, query }) {
3
+ export default function request({ host, pathname, query }) {
6
4
  const fullUrl = new URL(pathname, host);
7
5
  if (query) {
8
6
  fullUrl.search = new URLSearchParams(query).toString();
package/lib/lifts/rest.js CHANGED
@@ -1,10 +1,8 @@
1
- const { html: parseHtml } = require('./parser');
1
+ import { parseHtml } from './parser.js';
2
2
 
3
3
  const userAgent = 'liftie/1.0.0 (https://liftie.info)';
4
4
 
5
- module.exports = rest;
6
-
7
- function rest(url, parse, fn) {
5
+ export default function rest(url, parse, fn) {
8
6
  const fullUrl = new URL(url.pathname, url.host);
9
7
  if (url.query) {
10
8
  fullUrl.search = new URLSearchParams(url.query).toString();
@@ -1,6 +1,3 @@
1
- module.exports = stats;
2
- module.exports.summary = summary;
3
-
4
1
  const states = ['open', 'hold', 'scheduled', 'closed'];
5
2
 
6
3
  function empty(val) {
@@ -22,7 +19,7 @@ function percentage(status) {
22
19
  }, empty());
23
20
  }
24
21
 
25
- function stats(status) {
22
+ export default function stats(status) {
26
23
  const r = Object.keys(status).reduce((memo, lift) => {
27
24
  memo[status[lift]] += 1;
28
25
  return memo;
@@ -31,7 +28,7 @@ function stats(status) {
31
28
  return r;
32
29
  }
33
30
 
34
- function summary(arr) {
31
+ export function summary(arr) {
35
32
  function add(sum, s) {
36
33
  if (!s) {
37
34
  return sum;
package/lib/loader.js CHANGED
@@ -1,15 +1,12 @@
1
- const fs = require('node:fs/promises');
1
+ import fs from 'node:fs/promises';
2
2
 
3
- module.exports = load;
3
+ export default async function load() {
4
+ const names = await fs.readdir(`${import.meta.dirname}/resorts`);
5
+ const entries = names.map(entry);
6
+ return Object.fromEntries(await Promise.all(entries));
7
+ }
4
8
 
5
- async function load() {
6
- const names = await fs.readdir(`${__dirname}/resorts`);
7
- const entries = names.map(id => [
8
- id,
9
- {
10
- id,
11
- ...require(`./resorts/${id}/resort.json`)
12
- }
13
- ]);
14
- return Object.fromEntries(entries);
9
+ async function entry(id) {
10
+ const { default: resort } = await import(`./resorts/${id}/resort.json`, { with: { type: 'json' } });
11
+ return [id, { id, ...resort }];
15
12
  }
package/lib/loaders.js CHANGED
@@ -1,14 +1,11 @@
1
- const { promisify, callbackify } = require('node:util');
2
- const debug = require('debug')('liftie:loaders');
1
+ import { callbackify, promisify } from 'node:util';
2
+ import Debug from 'debug';
3
3
 
4
- module.exports = {
5
- register,
6
- load: callbackify(load)
7
- };
4
+ const debug = Debug('liftie:loaders');
8
5
 
9
6
  const loaders = [];
10
7
 
11
- function register(loader) {
8
+ export function register(loader) {
12
9
  // promisify functions that take callback arg
13
10
  loaders.push(loader.length > 0 ? promisify(loader) : loader);
14
11
  }
@@ -18,7 +15,9 @@ function appendResorts(data, resorts) {
18
15
  return data;
19
16
  }
20
17
 
21
- async function load() {
18
+ export const load = callbackify(asyncLoad);
19
+
20
+ async function asyncLoad() {
22
21
  debug('Loading resorts...');
23
22
  const results = await Promise.all(loaders.map(fn => fn()));
24
23
  const data = results.reduce(appendResorts, Object.create(null));
package/lib/opening.js CHANGED
@@ -1,8 +1,9 @@
1
- const debug = require('debug')('liftie:opening');
2
- const hour = require('./tools/millis').hour;
1
+ import Debug from 'debug';
2
+ import { hour } from './tools/millis.js';
3
3
 
4
- module.exports = fetch;
5
- module.exports.interval = {
4
+ const debug = Debug('liftie:opening');
5
+
6
+ fetch.interval = {
6
7
  active: hour,
7
8
  inactive: 12 * hour
8
9
  };
@@ -22,7 +23,7 @@ function ifNotOpenYet(opening) {
22
23
  }
23
24
  }
24
25
 
25
- function fetch(resort, fn) {
26
+ export default function fetch(resort, fn) {
26
27
  debug('Calculate opening for %s', resort.id);
27
28
  process.nextTick(fn.bind(null, null, ifNotOpenYet(resort.opening)));
28
29
  }
package/lib/plugins.js CHANGED
@@ -1,14 +1,9 @@
1
1
  const plugins = Object.create(null);
2
2
 
3
- function register(name, module) {
3
+ export function register(name, module) {
4
4
  plugins[name] = module;
5
5
  }
6
6
 
7
- function forEach(fn) {
8
- Object.keys(plugins).forEach(name => {
9
- fn(name, plugins[name]);
10
- });
7
+ export function forEach(fn) {
8
+ Object.entries(plugins).forEach(([name, plugin]) => fn(name, plugin));
11
9
  }
12
-
13
- exports.forEach = forEach;
14
- exports.register = register;
@@ -1 +1 @@
1
- module.exports = require('../../tools/dolomitisuperski');
1
+ export { default } from '../../tools/dolomitisuperski.js';
@@ -13,4 +13,4 @@
13
13
  12.328360788127972,
14
14
  46.73159373522183
15
15
  ]
16
- }
16
+ }
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'h4',
3
3
  parse: {
4
4
  name: {
@@ -1,6 +1,6 @@
1
- const { allText } = require('../../tools/domutil');
1
+ import { allText } from '../../tools/domutil.js';
2
2
 
3
- module.exports = {
3
+ export default {
4
4
  selector: 'li.primary-option.lift-opt div.border-primary span',
5
5
  parse: {
6
6
  name: node => {
@@ -1 +1 @@
1
- module.exports = require('../../tools/dolomitisuperski');
1
+ export { default } from '../../tools/dolomitisuperski.js';
@@ -13,4 +13,4 @@
13
13
  11.783461150198145,
14
14
  46.38449189952611
15
15
  ]
16
- }
16
+ }
@@ -1 +1 @@
1
- module.exports = require('../../tools/intrawest');
1
+ export { default } from '../../tools/intrawest.js';
@@ -1,17 +1,16 @@
1
- const vm = require('node:vm');
2
- const debug = require('debug')('liftie:resort:alta');
1
+ import vm from 'node:vm';
2
+ import Debug from 'debug';
3
+ import select from '../../select.js';
4
+ import { allText } from '../../tools/domutil.js';
3
5
 
4
- const select = require('../../select');
5
- const { allText } = require('../../tools/domutil');
6
-
7
- module.exports = parse;
6
+ const debug = Debug('liftie:resort:alta');
8
7
 
9
8
  function extractLiftData(script) {
10
9
  const data = vm.runInNewContext(script, { window: Object.create(null) });
11
10
  return data?.liftStatus?.lifts ?? {};
12
11
  }
13
12
 
14
- function parse(dom) {
13
+ export default function parse(dom) {
15
14
  const dataScript = select(dom, 'script')
16
15
  .map(script => allText(script).trim())
17
16
  .find(script => script.includes('window.Alta = '));
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '[data-tag="lifts"] tr:not(:first-child)',
3
3
  parse: {
4
4
  name: '3/0',
@@ -14,4 +14,4 @@
14
14
  11.866667,
15
15
  46.55
16
16
  ]
17
- }
17
+ }
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.elementor-icon-box-content',
3
3
  parse: {
4
4
  name: '0/0',
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.lift-report tr',
3
3
  parse: {
4
4
  name: 0,
@@ -1 +1 @@
1
- module.exports = require('../../tools/dolomitisuperski');
1
+ export { default } from '../../tools/dolomitisuperski.js';
@@ -13,4 +13,4 @@
13
13
  11.872010240054017,
14
14
  46.497223882531316
15
15
  ]
16
- }
16
+ }
@@ -1 +1 @@
1
- module.exports = require('../../tools/aspen');
1
+ export { default } from '../../tools/aspen.js';
@@ -1 +1 @@
1
- module.exports = require('../../tools/aspen');
1
+ export { default } from '../../tools/aspen.js';
@@ -1 +1 @@
1
- module.exports = require('../../tools/vail');
1
+ export { default } from '../../tools/vail.js';
@@ -1 +1 @@
1
- module.exports = require('../../tools/vail');
1
+ export { default } from '../../tools/vail.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '#collapse1 .col-03',
3
3
  parse: {
4
4
  name: '1',
@@ -1 +1 @@
1
- module.exports = require('../../tools/boyne');
1
+ export { default } from '../../tools/boyne.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.row.panel > .small-12',
3
3
  parse: {
4
4
  name: 0,
@@ -13,4 +13,4 @@
13
13
  49.888
14
14
  ],
15
15
  "twitter": "BigWhite"
16
- }
16
+ }
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.wp-block-p3-wpo-container:nth-child(3) .wp-block-column',
3
3
  parse: {
4
4
  name: 0,
@@ -1 +1 @@
1
- module.exports = require('../../tools/intrawest');
1
+ export { default } from '../../tools/intrawest.js';
@@ -1,9 +1,10 @@
1
- const debug = require('debug')('liftie:resort:bogusbasin');
1
+ import Debug from 'debug';
2
2
 
3
- const select = require('../../select');
4
- const coerce = require('../../tools/coerce');
3
+ const debug = Debug('liftie:resort:bogusbasin');
5
4
 
6
- module.exports = parse;
5
+ import select from '../../select.js';
6
+ import coerce from '../../tools/coerce.js';
7
+ export default parse;
7
8
 
8
9
  function parse(dom) {
9
10
  const dataScript = select(dom, 'x-filterable-lift-trail-status').map(script => script.attribs['data-data'].trim());
@@ -1,6 +1,5 @@
1
- const coerce = require('../../tools/coerce');
2
-
3
- module.exports = parse;
1
+ import coerce from '../../tools/coerce.js';
2
+ export default parse;
4
3
 
5
4
  function parse(data) {
6
5
  const { lifts = [] } = data?.report?.facilities ?? {};
@@ -1 +1 @@
1
- module.exports = require('../../tools/powdr');
1
+ export { default } from '../../tools/powdr.js';
@@ -1 +1 @@
1
- module.exports = require('../../tools/vail');
1
+ export { default } from '../../tools/vail.js';
@@ -1,7 +1,9 @@
1
- const select = require('../../select');
2
- const coerce = require('../../tools/coerce');
3
- const domutil = require('../../tools/domutil');
4
- const debug = require('debug')('liftie:resort:brettonwoods');
1
+ import Debug from 'debug';
2
+ import select from '../../select.js';
3
+ import coerce from '../../tools/coerce.js';
4
+ import * as domutil from '../../tools/domutil.js';
5
+
6
+ const debug = Debug('liftie:resort:brettonwoods');
5
7
 
6
8
  function parse(dom) {
7
9
  const liftStatus = {};
@@ -30,4 +32,4 @@ function parse(dom) {
30
32
  return liftStatus;
31
33
  }
32
34
 
33
- module.exports = parse;
35
+ export default parse;
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'li[class|=m-lift-status]',
3
3
  parse: {
4
4
  name: '1/0',
@@ -1,8 +1,9 @@
1
- const debug = require('debug')('liftie:resort:bridger-bowl');
1
+ import Debug from 'debug';
2
2
 
3
- const coerce = require('../../tools/coerce');
3
+ const debug = Debug('liftie:resort:bridger-bowl');
4
4
 
5
- module.exports = parse;
5
+ import coerce from '../../tools/coerce.js';
6
+ export default parse;
6
7
 
7
8
  function parse({ data } = {}) {
8
9
  const ls = data?.lift_status ?? [];
@@ -1 +1 @@
1
- module.exports = require('../../tools/boyne');
1
+ export { default } from '../../tools/boyne.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.lift-status-section .lift-status-info',
3
3
  parse: {
4
4
  name: 2,
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '#lifts tbody tr',
3
3
  parse: {
4
4
  name: 0,
@@ -1 +1 @@
1
- module.exports = require('../../tools/aspen');
1
+ export { default } from '../../tools/aspen.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '#tablepress-4 td:nth-child(even)',
3
3
  parse: {
4
4
  name: 0,
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '[data-lift]',
3
3
  parse: {
4
4
  name: {
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'table:contains("IMPIANTO") tbody tr',
3
3
  parse: {
4
4
  name: 1,
@@ -13,4 +13,4 @@
13
13
  13.460177207717742,
14
14
  42.21372813629604
15
15
  ]
16
- }
16
+ }
@@ -1,3 +1,3 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.ancillary-flyout__status table:first-child tr:not(:first-child)'
3
3
  };
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'table.mb-16 tr',
3
3
  parse: {
4
4
  name: '1/0',
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.lifts-table tbody tr',
3
3
  parse: {
4
4
  name: 0,
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'div.accordion-body p:contains(MEDIOS) + table tr', // selector for lift information
3
3
  parse: {
4
4
  name: {
@@ -1,6 +1,6 @@
1
- const toTitleCase = require('to-title-case');
1
+ import toTitleCase from 'to-title-case';
2
2
 
3
- module.exports = {
3
+ export default {
4
4
  selector: '[class*="impianto-status"]',
5
5
  parse: {
6
6
  name: {
@@ -1,6 +1,6 @@
1
- const toTitleCase = require('to-title-case');
1
+ import toTitleCase from 'to-title-case';
2
2
 
3
- module.exports = {
3
+ export default {
4
4
  selector: '.table-striped > .rand', // selector for lift information
5
5
  parse: {
6
6
  name: {
@@ -12,4 +12,4 @@
12
12
  6.86787,
13
13
  45.92652
14
14
  ]
15
- }
15
+ }
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.row.chair-bar',
3
3
  parse: {
4
4
  name: {
@@ -1 +1 @@
1
- module.exports = require('../../tools/dolomitisuperski');
1
+ export { default } from '../../tools/dolomitisuperski.js';
@@ -13,4 +13,4 @@
13
13
  12.023842219994087,
14
14
  46.40658836629695
15
15
  ]
16
- }
16
+ }
@@ -1 +1 @@
1
- module.exports = require('../../tools/vialattea');
1
+ export { default } from '../../tools/vialattea.js';
@@ -1 +1 @@
1
- module.exports = require('../../tools/powdr');
1
+ export { default } from '../../tools/powdr.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'h2:contains(Lift Status) ~ .weather-facility__item',
3
3
  parse: {
4
4
  name: 1,
@@ -12,4 +12,4 @@
12
12
  -44.926898
13
13
  ],
14
14
  "twitter": "CoronetPeak"
15
- }
15
+ }
@@ -1 +1 @@
1
- module.exports = require('../../tools/dolomitisuperski');
1
+ export { default } from '../../tools/dolomitisuperski.js';
@@ -13,4 +13,4 @@
13
13
  12.13562,
14
14
  46.54056
15
15
  ]
16
- }
16
+ }
@@ -1 +1 @@
1
- module.exports = require('../../tools/lumiplan');
1
+ export { default } from '../../tools/lumiplan.js';
@@ -19,7 +19,8 @@
19
19
  "Alps"
20
20
  ],
21
21
  "ll": [
22
- 6.6339, 45.4150
22
+ 6.6339,
23
+ 45.415
23
24
  ],
24
25
  "twitter": "courchevel"
25
26
  }
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'h2:contains(Lifts) + div.datatable div.row[id]',
3
3
  parse: {
4
4
  name: '0',
@@ -1,6 +1,6 @@
1
- const toTitleCase = require('to-title-case');
1
+ import toTitleCase from 'to-title-case';
2
2
 
3
- module.exports = {
3
+ export default {
4
4
  selector: 'item',
5
5
  parse: {
6
6
  name: {
@@ -1 +1 @@
1
- module.exports = require('../../tools/vail');
1
+ export { default } from '../../tools/vail.js';
@@ -1 +1 @@
1
- module.exports = require('../../tools/intrawest');
1
+ export { default } from '../../tools/intrawest.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '[id^=conditions_lifts_] div.breakInsideAvoid',
3
3
  parse: {
4
4
  name: {
@@ -1 +1 @@
1
- module.exports = require('../../tools/intrawest');
1
+ export { default } from '../../tools/intrawest.js';
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: 'h2:contains(Lift Status) < div + div .table-1 td:nth-child(odd)',
3
3
  parse: {
4
4
  name: 1,
@@ -1,3 +1,3 @@
1
- module.exports = {
1
+ export default {
2
2
  selector: '.lift-trail-wrapper .row:nth-last-child(n+3) .lift-header'
3
3
  };