scrapemyferry 1.0.2 → 1.0.3

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 (89) hide show
  1. package/bcf.js +1 -0
  2. package/dist/lib/sources/index.d.ts +1 -0
  3. package/dist/lib/sources/index.d.ts.map +1 -1
  4. package/dist/lib/sources/index.js +15 -0
  5. package/dist/lib/sources/index.js.map +1 -1
  6. package/package.json +9 -3
  7. package/tsconfig.build.json +4 -0
  8. package/dist/lib/sources/bcf/tests/config.test.d.ts +0 -2
  9. package/dist/lib/sources/bcf/tests/config.test.d.ts.map +0 -1
  10. package/dist/lib/sources/bcf/tests/config.test.js +0 -24
  11. package/dist/lib/sources/bcf/tests/config.test.js.map +0 -1
  12. package/dist/lib/sources/bcf/tests/currentConditions.live.test.d.ts +0 -2
  13. package/dist/lib/sources/bcf/tests/currentConditions.live.test.d.ts.map +0 -1
  14. package/dist/lib/sources/bcf/tests/currentConditions.live.test.js +0 -26
  15. package/dist/lib/sources/bcf/tests/currentConditions.live.test.js.map +0 -1
  16. package/dist/lib/sources/bcf/tests/currentConditions.test.d.ts +0 -2
  17. package/dist/lib/sources/bcf/tests/currentConditions.test.d.ts.map +0 -1
  18. package/dist/lib/sources/bcf/tests/currentConditions.test.js +0 -169
  19. package/dist/lib/sources/bcf/tests/currentConditions.test.js.map +0 -1
  20. package/dist/lib/sources/bcf/tests/dailySchedule.live.test.d.ts +0 -2
  21. package/dist/lib/sources/bcf/tests/dailySchedule.live.test.d.ts.map +0 -1
  22. package/dist/lib/sources/bcf/tests/dailySchedule.live.test.js +0 -19
  23. package/dist/lib/sources/bcf/tests/dailySchedule.live.test.js.map +0 -1
  24. package/dist/lib/sources/bcf/tests/dailySchedule.test.d.ts +0 -2
  25. package/dist/lib/sources/bcf/tests/dailySchedule.test.d.ts.map +0 -1
  26. package/dist/lib/sources/bcf/tests/dailySchedule.test.js +0 -76
  27. package/dist/lib/sources/bcf/tests/dailySchedule.test.js.map +0 -1
  28. package/dist/lib/sources/bcf/tests/departures.live.test.d.ts +0 -2
  29. package/dist/lib/sources/bcf/tests/departures.live.test.d.ts.map +0 -1
  30. package/dist/lib/sources/bcf/tests/departures.live.test.js +0 -25
  31. package/dist/lib/sources/bcf/tests/departures.live.test.js.map +0 -1
  32. package/dist/lib/sources/bcf/tests/departures.test.d.ts +0 -2
  33. package/dist/lib/sources/bcf/tests/departures.test.d.ts.map +0 -1
  34. package/dist/lib/sources/bcf/tests/departures.test.js +0 -408
  35. package/dist/lib/sources/bcf/tests/departures.test.js.map +0 -1
  36. package/dist/lib/sources/bcf/tests/fixtures/availability.json +0 -1
  37. package/dist/lib/sources/bcf/tests/fixtures/current-conditions/departures.json +0 -1
  38. package/dist/lib/sources/bcf/tests/fixtures/current-conditions.json +0 -1
  39. package/dist/lib/sources/bcf/tests/fixtures/routes-fares/schedules/daily.json +0 -1
  40. package/dist/lib/sources/bcf/tests/fixtures/routes-fares/schedules/seasonal.json +0 -1
  41. package/dist/lib/sources/bcf/tests/fixtures/routes-fares/schedules.json +0 -1
  42. package/dist/lib/sources/bcf/tests/routes.live.test.d.ts +0 -2
  43. package/dist/lib/sources/bcf/tests/routes.live.test.d.ts.map +0 -1
  44. package/dist/lib/sources/bcf/tests/routes.live.test.js +0 -28
  45. package/dist/lib/sources/bcf/tests/routes.live.test.js.map +0 -1
  46. package/dist/lib/sources/bcf/tests/routes.test.d.ts +0 -2
  47. package/dist/lib/sources/bcf/tests/routes.test.d.ts.map +0 -1
  48. package/dist/lib/sources/bcf/tests/routes.test.js +0 -363
  49. package/dist/lib/sources/bcf/tests/routes.test.js.map +0 -1
  50. package/dist/lib/sources/bcf/tests/sailing.live.test.d.ts +0 -2
  51. package/dist/lib/sources/bcf/tests/sailing.live.test.d.ts.map +0 -1
  52. package/dist/lib/sources/bcf/tests/sailing.live.test.js +0 -25
  53. package/dist/lib/sources/bcf/tests/sailing.live.test.js.map +0 -1
  54. package/dist/lib/sources/bcf/tests/sailing.test.d.ts +0 -2
  55. package/dist/lib/sources/bcf/tests/sailing.test.d.ts.map +0 -1
  56. package/dist/lib/sources/bcf/tests/sailing.test.js +0 -53
  57. package/dist/lib/sources/bcf/tests/sailing.test.js.map +0 -1
  58. package/dist/lib/sources/bcf/tests/seasonalSchedule.live.test.d.ts +0 -2
  59. package/dist/lib/sources/bcf/tests/seasonalSchedule.live.test.d.ts.map +0 -1
  60. package/dist/lib/sources/bcf/tests/seasonalSchedule.live.test.js +0 -22
  61. package/dist/lib/sources/bcf/tests/seasonalSchedule.live.test.js.map +0 -1
  62. package/dist/lib/sources/bcf/tests/seasonalSchedule.test.d.ts +0 -2
  63. package/dist/lib/sources/bcf/tests/seasonalSchedule.test.d.ts.map +0 -1
  64. package/dist/lib/sources/bcf/tests/seasonalSchedule.test.js +0 -403
  65. package/dist/lib/sources/bcf/tests/seasonalSchedule.test.js.map +0 -1
  66. package/dist/lib/sources/bcf/tests/urls.test.d.ts +0 -2
  67. package/dist/lib/sources/bcf/tests/urls.test.d.ts.map +0 -1
  68. package/dist/lib/sources/bcf/tests/urls.test.js +0 -69
  69. package/dist/lib/sources/bcf/tests/urls.test.js.map +0 -1
  70. package/dist/lib/sources/bcf/tests/utils.test.d.ts +0 -2
  71. package/dist/lib/sources/bcf/tests/utils.test.d.ts.map +0 -1
  72. package/dist/lib/sources/bcf/tests/utils.test.js +0 -79
  73. package/dist/lib/sources/bcf/tests/utils.test.js.map +0 -1
  74. package/dist/lib/test/jest-conditional.d.ts +0 -11
  75. package/dist/lib/test/jest-conditional.d.ts.map +0 -1
  76. package/dist/lib/test/jest-conditional.js +0 -22
  77. package/dist/lib/test/jest-conditional.js.map +0 -1
  78. package/dist/lib/test/setup-jest-env.d.ts +0 -2
  79. package/dist/lib/test/setup-jest-env.d.ts.map +0 -1
  80. package/dist/lib/test/setup-jest-env.js +0 -30
  81. package/dist/lib/test/setup-jest-env.js.map +0 -1
  82. package/dist/lib/test/setup-jest-global.d.ts +0 -2
  83. package/dist/lib/test/setup-jest-global.d.ts.map +0 -1
  84. package/dist/lib/test/setup-jest-global.js +0 -7
  85. package/dist/lib/test/setup-jest-global.js.map +0 -1
  86. package/dist/lib/test/setup-jest.d.ts +0 -2
  87. package/dist/lib/test/setup-jest.d.ts.map +0 -1
  88. package/dist/lib/test/setup-jest.js +0 -5
  89. package/dist/lib/test/setup-jest.js.map +0 -1
package/bcf.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/lib/sources/bcf/index.js')
@@ -1,2 +1,3 @@
1
1
  export { sourceForType } from './source';
2
+ export * from './types';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,cAAc,SAAS,CAAA"}
@@ -1,6 +1,21 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
17
  exports.sourceForType = void 0;
4
18
  var source_1 = require("./source");
5
19
  Object.defineProperty(exports, "sourceForType", { enumerable: true, get: function () { return source_1.sourceForType; } });
20
+ __exportStar(require("./types"), exports);
6
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/sources/index.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAA/B,uGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/sources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAwC;AAA/B,uGAAA,aAAa,OAAA;AACtB,0CAAuB"}
package/package.json CHANGED
@@ -1,16 +1,22 @@
1
1
  {
2
2
  "name": "scrapemyferry",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Scapes your ferry data.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ "bcf": {
9
+ "default": "./dist/lib/sources/bcf/index.js",
10
+ "types": "./dist/lib/sources/bcf/index.d.ts"
11
+ }
12
+ },
7
13
  "bin": {
8
14
  "scrapemyferry": "bin/scrapemyferry.js"
9
15
  },
10
16
  "scripts": {
11
17
  "clean": "rimraf dist",
12
- "build": "tsc",
13
- "deploy": "pnpm clean && pnpm build && npm publish",
18
+ "build": "tsc --project tsconfig.build.json",
19
+ "npm:publish": "pnpm clean && pnpm build && npm publish",
14
20
  "dev": "tsx src/cli.ts",
15
21
  "start": "node dist/cli.js",
16
22
  "test": "jest",
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "exclude": ["node_modules", "dist", "src/**/test"]
4
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/config.test.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const config_1 = require("../config");
4
- describe('BCF Config', () => {
5
- describe('baseUrl', () => {
6
- it('should be the correct base URL', () => {
7
- expect(config_1.baseUrl).toBe('https://www.bcferries.com');
8
- });
9
- });
10
- describe('config', () => {
11
- it('should be the correct config', () => {
12
- expect(config_1.config).toStrictEqual({
13
- baseUrl: config_1.baseUrl,
14
- tz: config_1.tz,
15
- });
16
- });
17
- });
18
- describe('tz', () => {
19
- it('should be the correct timezone', () => {
20
- expect(config_1.tz).toBe('America/Vancouver');
21
- });
22
- });
23
- });
24
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/config.test.ts"],"names":[],"mappings":";;AAAA,sCAA+C;AAE/C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,gBAAO,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,eAAM,CAAC,CAAC,aAAa,CAAC;gBAC3B,OAAO,EAAP,gBAAO;gBACP,EAAE,EAAF,WAAE;aACH,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;QAClB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,WAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=currentConditions.live.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"currentConditions.live.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/currentConditions.live.test.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const currentConditions_1 = require("../currentConditions");
4
- describe('Current Conditions', () => {
5
- // this is necessary for jest to not complain about an empty test suite
6
- it('live tests disabled by default', () => { });
7
- it.if(process.env.LIVE_TESTS, 'LIVE test', async () => {
8
- const result = await (0, currentConditions_1.currentConditions)('HSB', 'LNG');
9
- expect(result).toBeDefined();
10
- expect(result.url).toBeDefined();
11
- expect(result.lastUpdated).toBeDefined();
12
- expect(result.nextSailing).toBeDefined();
13
- expect(result.nextSailing.scheduled).toBeDefined();
14
- expect(result.nextSailing.totalSpace).toBeDefined();
15
- expect(result.trackingMap).toBeDefined();
16
- expect(result.departures).toBeDefined();
17
- expect(result.departures.length).toBeGreaterThan(0);
18
- expect(result.departures[0].departure).toBeDefined();
19
- expect(result.departures[0].departure.scheduled).toBeDefined();
20
- expect(result.departures[0].departure.actual).toBeDefined();
21
- expect(result.departures[0].departure.vessel).toBeDefined();
22
- expect(result.departures[0].departure.vessel.name).toBeDefined();
23
- expect(result.departures[0].departure.vessel.url).toBeDefined();
24
- }, 30_000);
25
- });
26
- //# sourceMappingURL=currentConditions.live.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"currentConditions.live.test.js","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/currentConditions.live.test.ts"],"names":[],"mappings":";;AAAA,4DAAwD;AAExD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,uEAAuE;IACvE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAE9C,EAAE,CAAC,EAAE,CACH,OAAO,CAAC,GAAG,CAAC,UAAU,EACtB,WAAW,EACX,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,IAAA,qCAAiB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEpD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QAClD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAEnD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IACjE,CAAC,EACD,MAAM,CACP,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=currentConditions.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"currentConditions.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/currentConditions.test.ts"],"names":[],"mappings":""}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const currentConditions_1 = require("../currentConditions");
7
- const current_conditions_json_1 = __importDefault(require("./fixtures/current-conditions.json"));
8
- jest.mock('axios');
9
- const axiosMock = jest.requireMock('axios').default;
10
- describe('Current Conditions', () => {
11
- function scrape() {
12
- return (0, currentConditions_1.currentConditions)('HSB', 'LNG');
13
- }
14
- beforeEach(() => {
15
- axiosMock.mockResolvedValue({ data: current_conditions_json_1.default });
16
- });
17
- it('returns the current conditions for the provided route', async () => {
18
- const result = await scrape();
19
- const url = 'https://www.bcferries.com/current-conditions/HSB-LNG';
20
- expect(axiosMock).toHaveBeenCalledWith(url);
21
- expect(result).toStrictEqual({
22
- url,
23
- lastUpdated: '4:34 PM',
24
- nextSailing: {
25
- scheduled: '4:20 PM',
26
- totalSpace: 0.17,
27
- },
28
- trackingMap: 'https://ccimg.bcferries.com/cc/support/vessels/route4.jpg',
29
- departures: [
30
- {
31
- departure: {
32
- scheduled: '7:30 AM',
33
- actual: '7:30 AM',
34
- vessel: {
35
- name: 'Queen of Coquitlam',
36
- url: '/ship-info/COQ',
37
- },
38
- },
39
- status: 'Arrived: 8:09 am',
40
- },
41
- {
42
- departure: {
43
- scheduled: '9:45 AM',
44
- actual: '9:44 AM',
45
- vessel: {
46
- name: 'Queen of Coquitlam',
47
- url: '/ship-info/COQ',
48
- },
49
- },
50
- status: 'Arrived: 10:22 am',
51
- },
52
- {
53
- departure: {
54
- scheduled: '11:55 AM',
55
- actual: '12:01 PM',
56
- vessel: {
57
- name: 'Queen of Coquitlam',
58
- url: '/ship-info/COQ',
59
- },
60
- },
61
- status: 'Arrived: 12:39 pm',
62
- },
63
- {
64
- departure: {
65
- scheduled: '2:10 PM',
66
- actual: '2:23 PM',
67
- vessel: {
68
- name: 'Queen of Coquitlam',
69
- url: '/ship-info/COQ',
70
- },
71
- },
72
- status: 'Arrived: 3:01 pm We are loading and unloading multiple ships',
73
- },
74
- {
75
- departure: {
76
- scheduled: '4:20 PM',
77
- actual: '',
78
- vessel: {
79
- name: 'Queen of Coquitlam',
80
- url: '/ship-info/COQ',
81
- },
82
- },
83
- status: 'Estimated vehicle space available 17% Details We are loading and unloading multiple ships',
84
- },
85
- {
86
- departure: {
87
- scheduled: '5:30 PM',
88
- actual: '',
89
- vessel: {
90
- name: 'Queen of Cowichan',
91
- url: '/ship-info/COW',
92
- },
93
- },
94
- status: 'Estimated vehicle space available 92% Details',
95
- },
96
- {
97
- departure: {
98
- scheduled: '7:50 PM',
99
- actual: '',
100
- vessel: {
101
- name: 'Queen of Cowichan',
102
- url: '/ship-info/COW',
103
- },
104
- },
105
- status: 'Estimated vehicle space available 88% Details',
106
- },
107
- {
108
- departure: {
109
- scheduled: '10:55 PM',
110
- actual: '',
111
- vessel: {
112
- name: 'Queen of Coquitlam',
113
- url: '/ship-info/COQ',
114
- },
115
- },
116
- status: 'Estimated vehicle space available 93% Details',
117
- },
118
- {
119
- departure: {
120
- scheduled: '7:30 AM',
121
- actual: '',
122
- vessel: {
123
- name: 'Queen of Coquitlam',
124
- url: '/ship-info/COQ',
125
- },
126
- },
127
- status: 'Estimated vehicle space available 63% Details',
128
- },
129
- {
130
- departure: {
131
- scheduled: '9:45 AM',
132
- actual: '',
133
- vessel: {
134
- name: 'Queen of Coquitlam',
135
- url: '/ship-info/COQ',
136
- },
137
- },
138
- status: 'Estimated vehicle space available 77% Details',
139
- },
140
- {
141
- departure: {
142
- scheduled: '11:55 AM',
143
- actual: '',
144
- vessel: {
145
- name: 'Queen of Coquitlam',
146
- url: '/ship-info/COQ',
147
- },
148
- },
149
- status: 'Estimated vehicle space available 75% Details',
150
- },
151
- ],
152
- terminal: {
153
- name: 'Vancouver (Horseshoe Bay)',
154
- address: '# 6750 Keith Rd , West Vancouver, V7W 2V1',
155
- },
156
- webcams: [
157
- {
158
- label: 'Traffic at the terminal',
159
- url: 'https://ccimg.bcferries.com/cc/support/terminals/cam1_HSB.jpg',
160
- },
161
- {
162
- label: 'Traffic to Sunshine Coast (Langdale)',
163
- url: 'https://ccimg.bcferries.com/cc/support/terminals/cam3_HSB.jpg',
164
- },
165
- ],
166
- });
167
- });
168
- });
169
- //# sourceMappingURL=currentConditions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"currentConditions.test.js","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/currentConditions.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dailySchedule.live.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dailySchedule.live.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/dailySchedule.live.test.ts"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const dailySchedule_1 = require("../dailySchedule");
4
- describe('Daily Schedule', () => {
5
- // this is necessary for jest to not complain about an empty test suite
6
- it('live tests disabled by default', () => { });
7
- it.if(process.env.LIVE_TESTS, 'LIVE test', async () => {
8
- const result = await (0, dailySchedule_1.dailySchedule)('HSB', 'LNG');
9
- expect(result).toBeDefined();
10
- expect(result.url).toBeDefined();
11
- expect(result.sailings).toBeDefined();
12
- expect(result.sailings.length).toBeGreaterThan(0);
13
- expect(result.sailings[0].depart).toBeDefined();
14
- expect(result.sailings[0].arrive).toBeDefined();
15
- expect(result.sailings[0].duration).toBeDefined();
16
- expect(result.sailings[0].type).toBeDefined();
17
- }, 30_000);
18
- });
19
- //# sourceMappingURL=dailySchedule.live.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dailySchedule.live.test.js","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/dailySchedule.live.test.ts"],"names":[],"mappings":";;AAAA,oDAAgD;AAEhD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,uEAAuE;IACvE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAE9C,EAAE,CAAC,EAAE,CACH,OAAO,CAAC,GAAG,CAAC,UAAU,EACtB,WAAW,EACX,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAa,EAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAEjD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IAC/C,CAAC,EACD,MAAM,CACP,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dailySchedule.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dailySchedule.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/dailySchedule.test.ts"],"names":[],"mappings":""}
@@ -1,76 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const dailySchedule_1 = require("../dailySchedule");
7
- const daily_json_1 = __importDefault(require("./fixtures/routes-fares/schedules/daily.json"));
8
- jest.mock('axios');
9
- const axiosMock = jest.requireMock('axios').default;
10
- describe('Daily Schedule', () => {
11
- function scrape() {
12
- return (0, dailySchedule_1.dailySchedule)('HSB', 'LNG', '2025-01-01');
13
- }
14
- beforeEach(() => {
15
- axiosMock.mockResolvedValue({ data: daily_json_1.default });
16
- });
17
- it('returns the daily schedule for the provided route and date', async () => {
18
- const result = await scrape();
19
- const url = 'https://www.bcferries.com/routes-fares/schedules/daily/HSB-LNG?scheduleDate=01/01/2025';
20
- expect(axiosMock).toHaveBeenCalledWith(url);
21
- expect(result).toStrictEqual({
22
- url,
23
- sailings: [
24
- {
25
- depart: '7:30 AM',
26
- arrive: '8:10 AM',
27
- duration: '00:40',
28
- type: 'Non-stop',
29
- },
30
- {
31
- depart: '9:45 AM',
32
- arrive: '10:25 AM',
33
- duration: '00:40',
34
- type: 'Non-stop',
35
- },
36
- {
37
- depart: '11:55 AM',
38
- arrive: '12:35 PM',
39
- duration: '00:40',
40
- type: 'Non-stop',
41
- },
42
- {
43
- depart: '2:10 PM',
44
- arrive: '2:50 PM',
45
- duration: '00:40',
46
- type: 'Non-stop',
47
- },
48
- {
49
- depart: '4:20 PM',
50
- arrive: '5:00 PM',
51
- duration: '00:40',
52
- type: 'Non-stop',
53
- },
54
- {
55
- depart: '5:30 PM',
56
- arrive: '6:10 PM',
57
- duration: '00:40',
58
- type: 'Non-stop',
59
- },
60
- {
61
- depart: '7:50 PM',
62
- arrive: '8:30 PM',
63
- duration: '00:40',
64
- type: 'Non-stop',
65
- },
66
- {
67
- depart: '10:55 PM',
68
- arrive: '11:35 PM',
69
- duration: '00:40',
70
- type: 'Non-stop',
71
- },
72
- ],
73
- });
74
- });
75
- });
76
- //# sourceMappingURL=dailySchedule.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dailySchedule.test.js","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/dailySchedule.test.ts"],"names":[],"mappings":";;;;;AACA,oDAAgD;AAChD,8FAAkE;AAElE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAElB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAoB,CAAA;AAEhE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,SAAS,MAAM;QACb,OAAO,IAAA,6BAAa,EAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IAClD,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,oBAAO,EAAE,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;QAE7B,MAAM,GAAG,GACP,wFAAwF,CAAA;QAE1F,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,GAAG;YACH,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,UAAU;iBACjB;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=departures.live.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"departures.live.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/departures.live.test.ts"],"names":[],"mappings":""}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const departures_1 = require("../departures");
4
- describe('Departures', () => {
5
- // this is necessary for jest to not complain about an empty test suite
6
- it('live tests disabled by default', () => { });
7
- it.if(process.env.LIVE_TESTS, 'LIVE test', async () => {
8
- const result = await (0, departures_1.departures)('HSB');
9
- expect(result).toBeDefined();
10
- expect(result.url).toBeDefined();
11
- expect(result.name).toContain('Vancouver (Horseshoe Bay)');
12
- expect(result.terminals).toBeDefined();
13
- expect(result.terminals.length).toBeGreaterThan(0);
14
- expect(result.terminals[0].name).toBeDefined();
15
- expect(result.terminals[0].duration).toBeDefined();
16
- expect(result.terminals[0].departures).toBeDefined();
17
- expect(result.terminals[0].departures.length).toBeGreaterThan(0);
18
- expect(result.terminals[0].departures[0].times).toBeDefined();
19
- expect(result.terminals[0].departures[0].times.scheduled).toBeDefined();
20
- expect(result.terminals[0].departures[0].vessel).toBeDefined();
21
- expect(result.terminals[0].departures[0].vessel.name).toBeDefined();
22
- expect(result.terminals[0].departures[0].vessel.url).toBeDefined();
23
- }, 30_000);
24
- });
25
- //# sourceMappingURL=departures.live.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"departures.live.test.js","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/departures.live.test.ts"],"names":[],"mappings":";;AAAA,8CAA0C;AAE1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,uEAAuE;IACvE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAE9C,EAAE,CAAC,EAAE,CACH,OAAO,CAAC,GAAG,CAAC,UAAU,EACtB,WAAW,EACX,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAAC,KAAK,CAAC,CAAA;QAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAElD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QAClD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAEhE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QACvE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QACnE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IACpE,CAAC,EACD,MAAM,CACP,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=departures.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"departures.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sources/bcf/tests/departures.test.ts"],"names":[],"mappings":""}